...
Der Anscluss des Beschleunigungssensors (MMA 7455L) ist relativ einfach. Die i2c Schnittstelle verlangt lediglich zwei Leitungen (Analog4/SCL und Analog5/SDA) wovon eine die Clock bedient und eine die Daten. Um die Kommunikation zu gewährleisten müssen zusätzlich an die SCL und SDA Leitung jeweils ein Pullup Widerstand zu VCC (3.3V) eingefügt werden. Der Sensor läuft mit 2.4–3.7V weshalb wir ihn an dem 3.3V Ausgang des Arduino betreiben. GND wird wie gewohnt mit dem GND des Arduino verbunden.
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
#include <Wire.h>
void setup()
{
Wire.begin();
Serial.begin(9600);
Serial.println("I2C Sniffer");
}
void loop()
{
byte error, address;
int nDevices;
Serial.println("Scanning...");
nDevices = 0;
for(address = 1; address < 127; address++ )
{
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0)
{
Serial.print("I2C device found at address 0x");
if (address<16)
Serial.print("0");
Serial.print(address,HEX);
Serial.println(" !");
nDevices++;
}
else if (error==4)
{
Serial.print("Unknown error at address 0x");
if (address<16)
Serial.print("0");
Serial.println(address,HEX);
}
}
if (nDevices == 0)
Serial.println("No I2C devices found\n");
else
Serial.println("done\n");
delay(4000);
} |
Funktionen
MMA_7455
Diese Funktion instanziert die MMA_7455 Library und aktiviert die Wire Library, welche für die Kommunikation über I2C gebraucht wird.
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
#include <Wire.h> //Include the Wire library #include <MMA_7455.h> //Include the MMA_7455 library MMA_7455 mySensor = MMA_7455(); //Make an instance of MMA_7455 char xVal, yVal, zVal; //Variables for the values from the sensor void setup() { Serial.begin(9600); // Set the sensitivity you want to use // 2 = 2g, 4 = 4g, 8 = 8g mySensor.initSensitivity(2); // Calibrate the Offset, that values corespond in // flat position to: xVal = -30, yVal = -20, zVal = +20 // !!!Activate this after having the first values read out!!! //mySensor.calibrateOffset(5, 20, -68); } void loop() { xVal = mySensor.readAxis(‘x’); //Read out the ‘x’ Axis yVal = mySensor.readAxis(‘y’); //Read out the ‘y’ Axis zVal = mySensor.readAxis(‘z’); //Read out the ‘z’ Axis Serial.print(xVal, DEC); Serial.print("\t"); Serial.print(yVal, DEC); Serial.print("\t"); Serial.println(zVal, DEC); } |
...