Hallo Zusammen,
den Näherungssensor TMD 26353 konnte ich erfolgreich an den I²C Bus anschließen.
Mithilfe des I2C-Scanner konnte ich die Adresse verifizieren, so dass die Hardware funktioniert.
Leider stehe ich hier etwas auf dem Schlauch, was die Initialisierung von den notwendigen Registern für eine einfache Entfernungsmessung aus dem Datenblatt betrifft. Folgender Code wirft als Ausgabe immer den Wert 22272.
Ich habe den Verdacht, dass ich hier noch ein paar Register in der void setup() anschreiben muss. Nur woher bekomme ich heraus welche mit welchem Wert? Das Enable Register habe ich ja bereits angeschrieben.
#include <Wire.h>
// I2C address of the TMD26353 0x39
#define Addr 0x39
void setup()
{
// Initialise I2C communication
Wire.begin();
// Initialise Serial Communication, set baud rate = 9600
Serial.begin(9600);
// Start I2C Transmission
Wire.beginTransmission(Addr);
// Select enable register
Wire.write(0x00 | 0x00);
// Stop I2C Transmission
Wire.endTransmission();
delay(500);
}
void loop()
{
unsigned int data[0];
// Start I2C Transmission
Wire.beginTransmission(Addr);
// Select data register PDATAL
Wire.write(0x9C | 0x9D);
// Stop I2C Transmission
Wire.endTransmission();
// Request 2 bytes of data
Wire.requestFrom(Addr, 2);
// Read 2 bytes of data
// proximity lsb, proximity msb
if(Wire.available() == 2)
{
data[0] = Wire.read();
data[1] = Wire.read();
}
// Convert the data
int proximity = data[1] * 256 + data[0];
// Output data to serial monitor
Serial.print("Proximity of TMD26353 : ");
Serial.println(proximity);
delay(1000);
}
Über eine Antwort wüde ich mich sehr freuen.
Viele Grüße,
Toto