...Hallo!
Ich habe nun das ganze auch noch auf dem Handyboard getestet! Mit dem unten stehenden Code funktionert:
Messen auslösen
Werte einholen & ausgeben
Verstärkung und Reichweite ändern ->
wenn ich eine max. Reichweite bis ca. 40cm einstelle funktionert die Messung gut. Kein Hinderniss bis max. = 0, Hinderniss bis max. = richtige Werte
Wenn ich die max. Reichweite jedoch über 40cm einstelle tritt wieder in Post1 genannstes wieder auf...
Kommt schon jemand muss doch Helfen können!
Grüße iFabi
// Einbinden der I2C-Bibliothek
#use i2c_hb_expbrd.ic
// Hauptprogramm
void main()
{
int entfernung;
printf("\n SRF08-Test");
sleep(2.0);
i2c_init(); // initialisiere I2C-Bus
while(!start_button());
printf(2,"\n config:");
i2c_write_2byte(226, 2, 10);
i2c_write_2byte(226, 1, ;
while(start_button());
sleep(2.0);
//Starte Schleife. Bricht ab, wenn der Stopknopf gedrueckt wird
while(!stop_button())
{
//Messung auslsoeen
// in Register 0 wird das Komando 81 geschrieben. Damit wird eine
//Messung ausgeloest und das
// Ergebnis wird in cm angegeben
i2c_write_2byte(226, 0, 81); // Adresse des SRF08 ist werkseitig
//224.
sleep(0.065); // 65 ms warten, um abzusichern, dass die Messung
//fertig ist
// Messung fertig
//Aulesen des Ergebnisses
// Zum SRF08 schreiben, welches Register ausgelesen werden soll.
i2c_write_byte(226, 2); // Register 2 --> High-Byte des
//Messergebnisses
entfernung = i2c_receive_byte(226) * 256; // Auslesen des
//High-Bytes des Messergebnisses
i2c_write_byte(226, 3); // Register 3 --> Low-Byte des
//Messergebnisses
entfernung = entfernung + i2c_receive_byte(226); // Low-Byte
//auslesen und zum Ergebnis addieren
printf("\nEntf: %d ", entfernung); // Anzeigen des
//Ergebnisses
}
}
Lesezeichen