Avand nevoie sa transmit mai multe variabile (numere intregi si cu virgula) pe comunicatia seriala dintre 2 placi de dezvoltare Arduino, m-am lovit de decodarea corecta a mesajelor transmise, de exemplu vreau sa trimit o temperatura de genul +23,40C sau -23,40C, o stare (0 sau 1) si un numar (procent de la 0 la 100)... lungimea unui sir ar fi fost variabila, daca nu luam masuri de corectie (sa transmit, de exemplu 023 in loc de 23)... dupa mai teste impreuna cu 2 prieteni, utilizatori de Arduino (Alex si Mihai, pentru proiecte total diferite) am utilizat informatiile din articolul Chapter 4. Serial Communications (partea de trimitere din subcapitolul 4.4, iar partea de decodare din subcapitolul 4.5).
Am folosit comunicarea seriala prin utilizarea librariei SoftwareSerial (am folosit pinii 2 si 3). Partea de trimitere a fost incarcata pe o placa Arduino Uno si partea de receptor si decodificare pe Arduino Nano, in special pentru a nu scrie programele gresit...
Schema de conectare, pentru aceste teste, este foarte simpla:
Pentru trimitere am folosit intial programul tx_1.ino pentru a transmite un mesaj cu 3 numere: 10, 100, 1000, apoi am trimis valori alese aleator folosind programul tx_1a.ino. Pentru receptor am adaptat programul rx_1.ino.
De mentionat ca se trimit doar numere intregi, pentru a trimite numere cu virgula sau cu semn, se inmultesc numerele cu 10 sau 100, respectiv se mai foloseste un numar pentru semnul minus sau plus, etc, dar astea le voi prezenta intr-un alt articol.
Niciun comentariu:
Trimiteți un comentariu