====== Serial írása, ovasása, konverziók ======
Az UNO, NANO és MINI board-okon egy-egy, a MEGA-n négy serial kommunikációs lehetőség található. A board-ok közötti legeygszerűbb kommunikációs megoldást a serial kínálja, hiszen egyszerűen keresztbe kell kötni ezeket a portokat (Tx - Rx, Rx - Tx), és már mrhet is a kommunikáció:
{{:hu:arduino:arduino_arduino_serial.png?400|Arduino - Arduino UART kommunikáció}}
Az olyan board-okon, ahol csak egy serial csatorna van (UNO, NANO, MINI), ezt a kommunikációt letöltés előtt le kell kötni, mivel a PC-board kommunikáció is ezt a csatornát használja. \\ A serial UART kommunikáció, gyakorlatilag az összes tartalmat byte (illetve char) formában továbbítja. Ezt a tartalmat először össze kell rendezni és át kell konvertálni, hogy ismét - mondjuk - szöveges tartalomhoz jussunk. Ezekhez a konvertálásokhoz gyüjtöttem ide pár példaprogramot.
===== Mérés küldése =====
A mérés küldéséhez a numerikus változót először érdemes átkonvertálni char_array-be, majd azt küldeni, itt a példaprogramban egy int-et:
char str[4];
void setup() {
Serial.begin(9600);
}
void loop() {
int value=1234; // a mérés eredménye
itoa(value, str, 10); // char_array-ba átkonvertálva
Serial.write(str, 4); // küldés
}
A konverziókhoz segítséget adhat a [[hu:arduino:var_conv|konverziós fejezet]].
===== Telegramm fogadása =====
A lenti program MEGA-ra íródott, egyidejűleg több serial-t is használ.
void setup() {
Serial.begin(9600); // serial.monitor
Serial1.begin(9600); // arduino-arduino serial
}
void loop() {
// főprogram
delay(100);
}
void serialEvent1() { // a funkció meghívásra kerül, ha valami érkezik a serial1-en (a másik Arduino-tól)
int i;
char data[20];
delay(10); // kis idő, míg az egész telegramm bekerül a pufferbe
i = Serial1.available(); // a pufferelt telegramm hossza
Serial.print("hossza: ");
Serial.println(i); // a telegramm hossza
Serial1.readBytes(data, i); // a char_array-be teljes terjedelmében beolvasásra kerül
Serial.print("char_array: ");
Serial.println(data); // mehet a monitorra
String eredmeny(data); // mehet a String-be
Serial.print("String: "); // monitor
Serial.println(eredmeny);
}