Mnogo je načina na koje možemo čitati s i pisati na Serial Port koristeći Arduinu, a ovdje ćemo pokazati najjednostavniji. Koristite ga kako biste izbjegli frustrirajuće načine :)
Dok smo se u prijašnjim tutorialima samo kratko osvrnuli na Serial Monitor, u ovome ćemo detaljno objasniti kako raditi s njim, bilo s Arduino IDE ili Atmel AVR Studiom. Generalno, Serial Monitor možete koristiti s bilokojim serijskim uređajem priključenim na računalo.
Serial Monitor
Serial Monitor je dodatak Arduino IDE softwareu. Vrlo vjerovatno ste se susreli s njim ako ste radili neki Arduino projekt, npr. očitavali temperaturu s DHT senzora. Osim čitanja trenutnog stanja koda, omogućava slanje i primanje tekstualnih poruka te je kao takav vrlo praktičan u traženju greške u kodu(debuggiranju, kontroliranju Croduina pomoću tipkovnice ili za pregled ispisa podataka. No krenimo redom...
Napomena: prije nego nastavite priključite Croduino pločicu i odaberite Board i Port pod Tools tabom ArduinoIDE softwarea
Serial monitor pokrečemo klikom na ikonicu povećala ili kombinacijom tipki Ctrl+Shift+M.
Osnovne postavke:
COM Port - virtualni port preko kojeg želimo ostvarti serijsku komunikaciju između računala i Croduino pločice
BAUD - jedinica broja pulseva po sekundi za UART komunikaciju
LINE ENDING: (detaljnije)
No line editing - šalje ono što je napisano
Newline - na napisano dodaje ASCII simbol za novu liniju (ekvivalentno s "\n")
Carriage return - na napisano dodaje ASCII simbol za return (ekvivalentno s "\r")
Both NL & CR - na napisano dodaje i Newline i Carriage return
Croduino na Serial Monitor
Serijsku komunikaciju započinjemo sa Serial.begin(); kojeg zadajemo u setup dijelu koda. Parametar koji dajemo funkciji je BAUD rate. On se mora podudarati s onim iz Serial Monitora kako u njemu ne bismo čitali "hijeroglife" koji se mogu dogoditi zbog neusklađenosti u brzini komunikacije.
void setup() { // zapocinjem serijsku komunikaciju Serial.begin(9600); // isti BAUD Rate postavljamo u Serial Monitoru } void loop() { }
Naredbe za pisanje:
Serial.print() - ispisuje čovjeku čitljive podatke koje podržava ASCII, npr.
Serial.print("Pozz"); - ispisuje Pozz
Serial.print(22); - ispiuje 22
Serial.print(1.4142); - ispisuje samo dvije znamenke nakon decimalne točke, 1.41
Serial.println() - nakon unesenog ispisuje novi red, tj. dodaje "\n" na kraj poslanog stringa
Serial.write() - ispisuje samo jedan byte
Dodatni parametar:
npr.:
Serial.print(22,BIN); - pretvara 22 u binarni broj, ispisuje 10110
Serial.print(22,HEX); - ispisuje 16
Serial.print(1.4142,5); - broj 5 označava broj decimanlih mjesta koja se ispisuju, ispisuje 1.41420
Serial Monitor na Croduino
Naredbe za čitanje:
Serial.read() - čita prvi byte zadane varijable
int sm_int = 0; void setup() { // zapocinjem serijsku komunikaciju Serial.begin(9600); // isti BAUD Rate postavljamo u Serial Monitoru } void loop() { if( Serial.available() ) { sm_int = Serial.read(); Serial.println(sm_int, DEC); } }
Serial.readString() - čita zadanu varijablu te ju sprema u String
String sm_string = ""; void setup() { // zapocinjem serijsku komunikaciju Serial.begin(9600); // isti BAUD Rate postavljamo u Serial Monitoru } void loop() { if( Serial.available() ) { sm_string = Serial.readString(); Serial.println(sm_string); } }