Sériová komunikace představuje jeden z nejjednodušších a nejrozšířenějších způsobů, jak Arduino komunikuje s okolním světem. Pomocí rozhraní UART (Universal Asynchronous Receiver-Transmitter) dokáže Arduino vyměňovat data s počítačem, jinými mikrokontroléry, GPS moduly, Bluetooth moduly, senzory a dalšími periferiemi.
Funkce Serial.available() slouží ke zjištění, kolik znaků (bajtů) již dorazilo do přijímacího bufferu sériové linky Arduina a čeká na přečtení.
Díky tomu můžeme ověřit, zda jsou data k dispozici, a zabránit pokusu o čtení v okamžiku, kdy ještě nic nepřišlo.
Serial.available() == 0 → žádná data nejsou k dispoziciSerial.available() > 0 → v bufferu jsou nová dataTato funkce se obvykle používá v podmínce if nebo v cyklu while. Samotné čtení dat (např. pomocí Serial.read(), Serial.readString() nebo Serial.parseInt()) by mělo následovat až ve chvíli, kdy Serial.available() vrátí nenulovou hodnotu.
Funkce Serial.readString() načte všechna dostupná data ze sériové linky a uloží je jako textový řetězec (String).
Hodí se zejména v případech, kdy očekáváme od uživatele textový vstup.
Čtení končí ve chvíli, kdy:
String text_vstup;
void setup() {
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0) {
text_vstup = Serial.readString();
Serial.print("Vase zprava: ");
Serial.println(text_vstup);
}
}
Funkce Serial.parseInt() slouží ke čtení celých čísel ze sériové linky. Postupně čte bajty z bufferu, dokud nenarazí na konec čísla nebo na jiný nečíselný znak (např. mezeru nebo koncový znak řetězce).
Příklad:
int cislo_vstup;
void setup() {
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0) {
cislo_vstup = Serial.parseInt();
Serial.print("Vlozene cislo: ");
Serial.println(cislo_vstup);
}
}
Serial.parseInt().Sériová komunikace znamená, že se data posílají postupně po jednom bitu, obvykle po jednom vodiči popř. páru vodičů u diferenciálního signálu.
Na deskách Arduino je hardwarová sériová linka označena jako:
Pokud chceme propojit UARTem dvě Arduina, musíme jejich Tx a Rx zapojit “do kříže”. Navíc musíme propojit země obou zařízení, obě desky musí mít stejnou referenci napětí.