Soros monitor


 Az Arduino programozásban egy fontos dolog a soros monitor kezelése, ezen keresztül küldhetünk illetve fogadhatunk adatokat a PC és az Arduino  között. Nagy segítség hibakeresésnél, értékek
visszaellenőrzésénél.

Először készítsünk el egy 3 ledből álló kapcsolást, ezt használjuk majd mind két példánál.


A soros monitort a program feltöltése után az IDE jobb felső sarkában található gombra kattintva
nyithatjuk meg.

Nézzünk egy egyszerű kis programot a bemutatására:

void setup(){
Serial.begin(9600);
pinMode(3,OUTPUT);
}

Első lépésként meg kell adni a soros monitor bit rátáját( másodpercenként áthaladó
bit-ek száma), mi a 9600-as értéket használjuk, Serial.begin(9600).

void loop(){
digitalWrite(3,HIGH);
Serial.println("LED bekapcsolva");


Miután bekapcsoltuk a ledet a soros monitoron megjelenik a "LED bekapcsolva" üzenet.
A Serial.println() kiírja a soros monitorra a benne lévő üzenetet és egy sorral lejjebb folytatja a
kiírást.
A Serial.print() ugyan ezt teszi csak nem vált sort, tehát a következő Serial.print() utasítás ennek
az első sort folytatja tovább.

A teljes progi:


void setup(){
Serial.begin(9600);
pinMode(3,OUTPUT);
}
void loop(){
digitalWrite(3,HIGH);
Serial.println("LED bekapcsolva");
delay(1000);
digitalWrite(3,LOW);
Serial.println("LED kikapcsolva");
delay(1000);
}

egy kis módosítás, tegyünk a kiírandó szöveghez egy változót ami számlálja nekünk, hogy hányszor
kapcsoljuk be a ledet.

 
int bekapcs;
void setup(){
Serial.begin(9600);
pinMode(3,OUTPUT);
bekapcs=0;
}
void loop(){
digitalWrite(3,HIGH);
Serial.print("LED bekapcsolva ");
Serial.println(bekapcs);
bekapcs++;
delay(1000);
digitalWrite(3,LOW);
Serial.println("LED kikapcsolva");
delay(1000);
}


Egy pár szó a változókról, ezek memória részek amiket mi vagy a programunk tölt fel adott értékekkel, esetünkbe az int egész számok tárolására alkalmas változó típus. Először létrehozzuk a változót.
A setupban kezdőértéket adunk neki, majd a fő ciklusban kiíratjuk az értékét és növeljük azt eggyel.


Most nézzük az egészet visszafelé, a soros monitorba beírt értéket továbbítjuk az Arduinora.
Itt a bevitt karakterek miatt egy egészen más típusú változót kell használnunk, ez pedig a char.
A char-t karakterek tárolására használjuk.
pl.: char betu = „d”; // itt a d betűt tárolja el a betu nevű változónk
vagy char kod = 49; //itt viszont az ASCII kód 49-es számú karakterét kapjuk, ez az 1-es.


int led;
void setup(){
Serial.begin(9600);
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
}
void loop(){
if ( Serial.available())
{
char kod = Serial.read();
if (kod>'1' && kod<'5'){
led = (kod - 48);
digitalWrite(led,HIGH);
delay(3000);
digitalWrite(led,LOW);
}
}
}


Először nézzük a if ( Serial.available()) utasítást, ez figyeli a soros monitor beviteli mezőjének
és a küldésgombjának változásait, ha a mező nem üres és le lett nyomva a küldésgomb akkor
tovább enged az utasításblokk belsejébe.


Másodszor a char kod = Serial.read(); sort nézzük át. Itt létrehozzunk egy kod nevű char típusú
változót amit rögtön feltöltünk a Serial.read() utasítás segítségével, ami beolvassa a soros monitor
beviteli mezejéből a karaktereket.


Harmadszor az if (kod>'1' && kod<'5') sor meghatározza azt az értéktartományt amit a következő utasításokban felhasználhatunk. Ez az '1'-nél nagyobb és az '5' -nél kisebb értékű karakterek.


Negyedszer a led = (kod – 48); sor konvertálja a char változóba lévő karakter értékét int értékre.
A kod – 48 -ról bővebben, minden egyes karakternek van egy úgynevezett ASCII kódja ami
0-255 közötti szám. A '0' kódja a 48, az '1' kódja a 49, a '2' kódja az 50. A számítás így lép
érvénybe: a kod változó int értékéből kivonjuk a '0' int értékét(48) így megkapjuk a bevitt számot.
pl.: 1 ASCII kódja a 49, 49 – 48 = 1

A soros monitor az Arduino Uno 0-s RX, és 1-es TX digitális pinjét használja, ezeket a monitor
használata közben másra nem lehet használni.


Folyt. Köv.