Cum comunică Arduino?
Interfața Serială
Interfața serială TTL (Transistor-Transistor Logic) este o metodă de comunicare serială asincronă între două dispozitive, cum ar fi un calculator și un microcontroler. Acest tip de interfață este utilizat în mod obișnuit în aplicații precum controlere de roboți, senzori și alte dispozitive electronice.
Interfața serială TTL constă din două fire, TX (Transmit) și RX (Receive), care sunt conectate între dispozitive. Aceste două fire sunt utilizate pentru a trimite și primi date între dispozitive prin intermediul unei serii de impulsuri electrice numite semnale seriiale.
În mod obișnuit, semnalul serial TTL utilizează tensiunea logică 0 pentru a reprezenta nivelul logic “LOW” (scăzut) și tensiunea logică 1 pentru a reprezenta nivelul logic “HIGH” (ridicat). Aceasta înseamnă că semnalul TTL utilizează tensiuni de 0V și 5V (sau 3,3V în cazul unor dispozitive mai noi) pentru a reprezenta aceste niveluri logice.
Pentru a trimite date prin intermediul semnalului serial TTL, un dispozitiv emite un semnal în mod repetat prin firul TX, iar alt dispozitiv îl recepționează prin firul RX. Semnalul este format dintr-o serie de biți care reprezintă datele care trebuie transmise. Fiecare bit este transmis secvențial prin semnalul TTL, iar viteza de transmisie a semnalului (numită și baud rate) determină numărul de biți transmiși în fiecare secundă.
Pentru a permite comunicarea între dispozitive, acestea trebuie să aibă aceeași configurație a semnalului TTL, inclusiv aceeași viteză de transmisie, format de date și configurații de control. De asemenea, trebuie să se asigure că semnalul TTL se conectează corect între dispozitive și că semnalul este transmis în siguranță și fără interferențe.
Obiectul Serial
Obiectul Serial este un obiect în cadrul limbajului de programare pentru plăcile Arduino, care permite comunicarea serială între placa Arduino și un alt dispozitiv, precum un calculator sau un alt microcontroler.
Obiectul Serial este utilizat în special pentru a permite plăcii Arduino să comunice cu un calculator, astfel încât programatorii să poată transfera codul lor pe placa Arduino și să primească informații despre starea plăcii Arduino în timp real, utilizând portul serial al calculatorului.
Pentru a utiliza obiectul Serial, trebuie să declari o instanță a acestuia în program și să configurezi parametrii de comunicare serială, cum ar fi viteza baud și modul de paritate. Apoi, poți utiliza metodele obiectului Serial pentru a trimite și a primi date prin portul serial.
De exemplu, pentru a configura obiectul Serial în Arduino cu o viteză de 9600 baud pe secundă și un mod de paritate implicit, puteți utiliza următorul cod în funcția setup():
void setup() { Serial.begin(9600); // Initializează portul serial cu viteza de baud 9600 }
Apoi, puteți utiliza metoda Serial.print() pentru a trimite date prin portul serial, cum ar fi o valoare a unei variabile:
int sensorValue = analogRead(A0); // Citeste valoarea unui senzor analog conectat la pinul A0 Serial.print("Valoarea citita: "); // Afiseaza un mesaj Serial.println(sensorValue); // Afiseaza valoarea senzorului și treci la o linie nouă
Acest cod va trimite valoarea senzorului analog conectat la pinul A0 prin portul serial, utilizând metoda Serial.println(). Aceasta va afișa valoarea trecând apoi pe următoarea linie.
Serial.print()
Funcția Serial.print() din Arduino este folosită pentru a trimite date prin portul serial către un dispozitiv extern sau către calculatorul gazdă. Această funcție poate fi utilizată pentru a afișa informații de depanare, date de la senzori sau orice altă informație relevantă procesului.
Funcția Serial.print() este o funcție supraincarcata și poate primi diferite tipuri de date, cum ar fi întregi, numere în virgulă mobilă, caractere și șiruri de caractere. De asemenea, funcția poate fi utilizată pentru a specifica baza numerică (cum ar fi zecimală, hexazecimală sau octală) a numărului care trebuie afișat.
De exemplu, pentru a trimite valoarea unui senzor de temperatură către un dispozitiv extern, codul arduino ar putea arăta astfel:
int temperature = 25; Serial.print("Temperatura este: "); Serial.print(temperature); Serial.print(" grade Celsius");
Această secvență de cod va trimite mesajul Temperatura este: 25 grade Celsius prin portul serial.
Funcția Serial.print() poate fi utilizată împreună cu alte funcții, cum ar fi Serial.println() pentru a adăuga un caracter noulinie la sfârșitul fiecărui mesaj trimis. Acest lucru face ca mesajul să fie mai ușor de citit atunci când este afișat în terminalul serial.
Serial.read()
Funcția Serial.read() din Arduino este utilizată pentru a citi datele primite prin portul serial. Această funcție așteaptă să primească date de la un dispozitiv extern sau de la calculatorul gazdă, după care le stochează într-o variabilă.
Pentru a folosi funcția Serial.read(), trebuie mai întâi să se verifice dacă datele au fost primite prin portul serial utilizând funcția Serial.available(). Această funcție verifică dacă există date disponibile pentru a fi citite prin portul serial și returnează numărul de caractere disponibile.
După ce s-a verificat disponibilitatea datelor, funcția Serial.read() poate fi apelată pentru a citi datele primite prin portul serial. Această funcție primește un singur byte de date de la portul serial și îl stochează într-o variabilă de tip întreg.
De exemplu, pentru a citi un mesaj primit prin portul serial și a-l afișa în monitorul serial, codul arduino ar putea arăta astfel:
if(Serial.available() > 0) { int incomingByte = Serial.read(); Serial.print("Am primit: "); Serial.println(incomingByte, DEC); }
Acesta va verifica disponibilitatea datelor în portul serial și va citi primul byte de date primit. Apoi, va afișa mesajul Am primit: urmat de valoarea citită prin portul serial.
Este important de remarcat că funcția Serial.read() va citi doar un singur byte de date. Dacă este necesar să se citească mai multe date primite prin portul serial, această funcție trebuie apelată într-un buclă până când toate datele au fost citite.