2013/08/07

App Inventor erabiliz bluetooth bidez LCD bat kontrolatzea

Jarduera honetan berriz ere Android gailu bat PIC mikrokontroladore batekin komunikatuko da bluetooth bidez, baina kasu honetan PIC-a PIC school-eko LCD-a kontrolatzeko programatuko da.








Helburuak

Jarduerak jarraian aipatzen diren helburu hauek beteko ditu:

- Interfaze grafikoko elementu gehiago ezagutzea.
- Bloke editoreko aukera gehiago ezagutzea.
- Bluetooth komunikazioa lantzea.
- PIC bat LCD bat kontrolatzeko programatzea.
- Android gailu batean testua idaztea eta LCD batean ikustea.


Materiala

-PC bat.
-Android gailu mugikor bat.
-PIC School, PIC bat (16f887 bat erabili da kasu honetan) eta beharrezkoa den erreminta( hariak, goraizeak,...)
-PIC-arentzat Bluetooth modulua: LINVOR JY-MCU


Jardueraren sekuentzia

1.  Aurreko sarrera batean aipatutako eta ikusitako bideotutorialei jarraituz Android aplikazioa sortu behar da. Jarraian, I. eta II. ilustrazioan erakusten dira garatu beharreko aplikazioaren diseinu lehioa eta bloke editorea:

I. ilustrazioa: App-aren diseinu lehioa

II. ilustrazioa: App-aren bloke editorea

2. Aplikazioak bluetooth bidez bidaltzen dituen datuen formatua kontuan hartuz PIC-a programatzea izango da hurrengo pausua. PIC-a programatzen ikasteko aurreko sarrera batean aipatutako bideotutoriala erabil dezakezue.

 Kontuan hartzeko puntuak hauexek dira App hau garatzeko garaian:

  • LCD-aren liburutegiak erabiliko direla adierazi behar zaiola PIC-ari.
  • LCD-an ikusi nahi dugun testua App-tik bidaltzerakoan, Androidek '\0' karakterea itsasten dio karaktere kateari edota testuari. Karaktere hori bera erabiliko da PIC-ak jasotzen duen testua irakurtzeko eta karaketere kate horren amaiera zein den jakiteko.


 Jarraian PIC mikrokontrolagailuari grabatu beharreko programa azaltzen da. Ulergarriago egiteagatik komentarioak konbinatu dira.

#include <16f887.h>                //PIC-aren definizioen fitxategia
#fuses HS,NOWDT
#use delay(clock=4000000)
#use RS232(baud=9600, xmit=PIN_B6, rcv=PIN_B7)


#include "LCD.C"                
  //LCD-aren funtzioen liburutegia
void main(void)
{
   char estado[30];
   int8 i;  
   lcd_init();                  
  //LCD hasieratu.
   set_tris_a(0);                
//A portua irteera bezala definitu.
   output_a(0);                  
//A portutik 0 bat atera
   output_bit(PIN_A0, 1);       
//A portuaren A0 pinean 1 jarri.
   delay_ms(1000);           
//1000 ms itxaron
   output_bit(PIN_A0, 0);       
//A portuaren A0 pinean 0 jarri.
   delay_ms(1000);           
//1000 ms itxaron. Aurreko zatia programa martxan dagoela jakiteko egiten da
   printf(lcd_putc, "\fPrueba");         
//LCD-an Prueba idatzi. Horrela ondo dabilela ikusten da.
   while (1)
   {
    gets(estado);               
//funtzio honekin textua jasotzen da. Enter karakterea jaso arte ez da     funtziotik ateratzen
    output_bit(PIN_A1, 1);       
//aurreko funtziotik atera den jakiteko A portuko A1 pina piztu eta itzali.
    delay_ms(1000);
    output_bit(PIN_A1, 0);
    lcd_gotoxy(1,2);           
//LCD-aren kurtsorea bigarren lerrora eraman
    for (i=0;i<16;i++)
     {               
//for funtzio honekin jasotako karaktere guztiak LCD-an jarriko dira
      if (estado[i]== '\0')           
//esaldi edo hitz bat sortzeko. Enter karakterea jasotzerakoan for buklea
          break;                  
//bukatutzat ematen da. Karaktere honek esaldiaren bukaera markatzen du.
      printf(lcd_putc, "%c",estado[i]);     
//Proba egiteko programa denez, gehienez LCD-an sartzen diren karaktereak ikus daitezke.
     }                
    delay_ms(3000);
    printf(lcd_putc, "\fRecibido datos");    
//Prozesua bukatutzat emateko idazten den esaldia. LCD-aren lehenengo lerroan idatziko da.    
 }                   
}


3. Azkenik PIC school-a erabiliz gailu eta osagai guztiak kableatuko dira III. ilustrazioko eskemari jarraituz, proiektuak ongi funtzionatzen duela baieztatzeko.

III. ilustrazioa: proiektuaren eskema