Voglio leggere con la libreria NewSoftwareSerial dei valori da un dispositivo attraverso i pin 2 e 3 dell'arduino UNO.
Le specifiche del dispositivo da cui voglio leggere mi dicono questo:
Velocità: 115200 baud
1 bit di start, 1 bit di stop, nessuna parità
Ho provato con questo codice:
#include <NewSoftSerial.h>
NewSoftSerial pmt(2,3);//rx:2 tx:3
void setup(){
Serial.begin(115200);//usato per lettura valori da monitor
pmt.begin(115200);//speed
}
void loop(){
pmt.print('A');//richiesta al dispositivo
delay(2000);
unsigned long readed=0;
if(pmt.available()>=5){//il dispositivo ritorna 5 byte
for(int i=0; i<4; i++){//4 byte formano il valore
readed = readed|(pmt.read()<<(8*i));//legge un byte alla volta dal meno significativo
}
pmt.read();//il checksum viene scartato (per ora)
delay(2000);
}
Serial.println(readed, BIN);//stampa in binario quanto letto
Serial.println(readed);//stampa il numero letto in decimale
}
Dal monitor seriale leggo valori scorretti come questi:
11111111111111111000000110001111
4294934927