Hi,
ich bräuchte ein bisschen Unterstützung beim Einstieg in die I2C-Welt
Bisher habe ich um Sensoren die per I2C kommunizieren auszulesen eine entsprechende Library für Arduino verwendet,
aber ich will jetzt auch mal die internen Register selbst ansprechen. Als Beispiel soll hier der Beschleunigungssensor
MMA7660 dienen. (Datenblatt gibt es hier: http://http://garden.seeedstudio.com.../MMA7660FC.pdf )
Ich hab zwar schon Google nach Infos durchforstet, aber mir fehlen halt die Grundlagen dazu. Wobei die Arduino-Befehle für I2C noch recht übersichtlich an der Zahl sind.
Der Code an sich funktioniert leider nicht, bekomme nur 0-Werte für x.Code:#include <Wire.h> #define I2C_ADDRESS 0x4C void setup(){ Serial.begin(9600); Wire.begin(I2C_ADDRESS); } void loop(){ //start talking Wire.beginTransmission(I2C_ADDRESS); //ask for register Wire.write(0x00); //complete transmission Wire.endTransmission(); //request 1 byte Wire.requestFrom(I2C_ADDRESS, 1); //wait for response while(Wire.available() == 0); //get the value int x = Wire.read(); //printout Serial.print(x); Serial.println(", "); delay(100); }
Klar erstmal die Wire library hinzufügen und die Adresse des Sensors angeben. Mit Wire.begin die I2C Verbindung initialisieren und mit Wire.beginTransmission den Datenverkehr
zwischen Arduino und dem MMA7660 beginnen. Das Wire.write(0x00) soll das erste Register ansprechen, was sagt dem Sensor dieser Befehl? Praktisch eine Anfrage
dass dieses Register ausgelesen werden möchte? Wie mache ich dann am besten weiter? Mein Ziel ist es, nur das erste Register auszulesen, so schwer
wird das doch wohl ned sein...
Hoffe auf Antworten!![]()







Zitieren


Lesezeichen