PlasmaTubeI²C
04.05.2013, 13:32
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/images/e/ee/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.
#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);
}
Der Code an sich funktioniert leider nicht, bekomme nur 0-Werte für x.
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! :)
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/images/e/ee/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.
#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);
}
Der Code an sich funktioniert leider nicht, bekomme nur 0-Werte für x.
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! :)