Mi hanno dato un distanziometro laser che comunica con il PC tramite un adattatore, questo:
Ho fatto un programmino in VB net e comunica perfettamente.
Ho poi tolto la schedina e l'ho collegata all'arduino Mega, invio il comando di lettura e poi mi metto in "ascolto" della misura, il sistema funziona ma ogni tanto alcuni byte ritornano errati.
Il comando di lettura lo mando così:
- Codice: Seleziona tutto
byte CmdFastMeasure[] = {0xAA,0x00,0x00,0x20,0x00,0x01,0x00,0x02,0x23};//Cmd lettura
char Cmd;
const int BUFFER_SIZE = 13;
byte Buff[BUFFER_SIZE];
Serial1.write(CmdFastMeasure,9);
La ricezione e stampa a monitor così:
- Codice: Seleziona tutto
if(Serial1.available() > 0) {
Serial1.readBytes(Buff,BUFFER_SIZE);
if (Buff[0]==0xAA){
for( int i=0; i<BUFFER_SIZE; i++ ){
Serial.print(Buff[i],HEX);
Serial.print(" - ");
}
Serial.println("");
for( int i=0; i<BUFFER_SIZE; i++ ){
Serial.print(Buff[i],DEC);
Serial.print(" - ");
}
Serial.println("");
int A = Buff[9];
int B = Buff[8];
int C = Buff[7];
int D = Buff[6];
int Tot = A +(B*256) + (B*256*256) + (A*256*256*256);
Serial.print(Tot);
}
}
I byte 6,7,8,9 contengono la misura che interessa a me ma alcune volte soprattutto il byte 8 ha valore 0 inaspettatamente, alleo alcune misure (la misura che mi aspetto è 5120):
- Codice: Seleziona tutto
AA - 0 - 0 - 22 - 0 - 3 - 0 - 0 - 14 - 0 - 0 - 2 - 8E -
170 - 0 - 0 - 34 - 0 - 3 - 0 - 0 - 20 - 0 - 0 - 2 - 142 -
5120
AA - 0 - 0 - 20 - 0 - 3 - 0 - 0 - 14 - 0 - 0 - 42 - 85 -
170 - 0 - 0 - 32 - 0 - 3 - 0 - 0 - 20 - 0 - 0 - 66 - 133 -
5120
AA - 0 - 0 - 22 - 0 - 3 - 0 - 0 - 15 - 0 - 0 - 32 - 7E -
170 - 0 - 0 - 34 - 0 - 3 - 0 - 0 - 21 - 0 - 0 - 50 - 126 -
5376
AA - 0 - 0 - 0 - 0 - 2 - 0 - 0 - 0 - 8 - 0 - 3F - 81 -
170 - 0 - 0 - 0 - 0 - 2 - 0 - 0 - 0 - 8 - 0 - 63 - 129 -
8
AA - 0 - 0 - 22 - 0 - 3 - 0 - 0 - 14 - 0 - 0 - 30 - 7A -
170 - 0 - 0 - 34 - 0 - 3 - 0 - 0 - 20 - 0 - 0 - 48 - 122 -
5120
AA - 0 - 0 - 0 - 0 - 2 - 0 - 0 - 0 - 8 - 0 - 3B - 78 -
170 - 0 - 0 - 0 - 0 - 2 - 0 - 0 - 0 - 8 - 0 - 59 - 120 -
8
AA - 0 - 0 - 22 - 0 - 3 - 0 - 0 - 14 - 0 - 0 - 30 - 7B -
170 - 0 - 0 - 34 - 0 - 3 - 0 - 0 - 20 - 0 - 0 - 48 - 123 -
5120
AA - 0 - 0 - 22 - 0 - 3 - 0 - 0 - 14 - 0 - 0 - 2 - 85 -
170 - 0 - 0 - 34 - 0 - 3 - 0 - 0 - 20 - 0 - 0 - 2 - 133 -
5120
AA - 0 - 0 - 20 - 0 - 2 - 0 - 0 - 0 - 9 - 0 - 3C - 7E -
170 - 0 - 0 - 32 - 0 - 2 - 0 - 0 - 0 - 9 - 0 - 60 - 126 -
9
AA - 0 - 0 - 20 - 0 - 3 - 0 - 0 - 14 - 0 - 0 - 38 - 7E -
170 - 0 - 0 - 32 - 0 - 3 - 0 - 0 - 20 - 0 - 0 - 56 - 126 -
5120
AA - 0 - 0 - 22 - 0 - 3 - 0 - 0 - 14 - 0 - 0 - 38 - 80 -
170 - 0 - 0 - 34 - 0 - 3 - 0 - 0 - 20 - 0 - 0 - 56 - 128 -
5120
Con l'adattatore USB la misura era molto più stabile, sbaglio qualcosa io nel programma o serve qualcosa di hardware? magari delle resistenze di pull/up o pull/down sui fili della seriale?

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)







