SRF02 (TWI) - Kein 255 bei Messung - 15cm zu viel

OP (Firma: Hobby) #2318228
Lesenswert?

Hi,

wenn ich eine Messung starte und sofort die Firmware auslese, sollte ich 
ja den Statuscode 255 zurückbekommen, solange die Messung läuft. Doch 
ich bekomme immer eine 5 zurück, was wohl meine Firmware-Version ist.(?)

Tausche ich die Abfrage der Version (sofort nach starten der Messung) 
gegen das auslesen der beiden Bytes aus, bekomme ich einen anderen Wert 
als den finalen Wert nach einem Delay:

-> Messung
-> Bytes auslesen - z.B. 100 cm
-> Delay 65ms
-> Bytes auslesen - z.B. 120 cm

Da scheint die Messung noch zu laufen. Wieso bekomme ich kein 255 Status 
zurück?

Den Sensor habe ich vor 2 Monaten gekauft. Natürlich kann man schwer 
davon ableiten welche Version ich habe, aber kann 5 stimmen? Gibt es 
schon höhere Versionen?

Das zweite Problem ist, dass ich warum auch immer bei ca. 15cm mit einem 
Lineal gemessen cm, einen Wert von ca. 30cm (stabil) vom Sensor bekomme. 
Woran kann das den liegen? Bis auf 0 hatte ich noch keinen Wert unter 
30. Kann das auch am TWI liegen? Ist das erste mal das ich damit 
arbeite. Die beiden Leitungen sind mit 4,7K Widerständen an +5V 
angeschlossen.

Snippet:
1
i2c_transmit(SRF02, 0, 81);
2
firmware = i2cRead(SRF02, 0);
3
lcd_string_Int(firmware);
4
_delay_ms(65);  //Warten auf Messung
5
range = getRange();
6
lcd_setcursor(0,2);
7
lcd_string("Range: ");
8
lcd_string_Int(range);
9
lcd_string(" cm");
10

11
uint16_t getRange(void){
12
  uint16_t x;
13
  x = i2cRead(SRF02,2);
14
  if(x){x += 256;}
15
  x += i2cRead(SRF02,3);
16
  return(x);
17
}
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren