2 ADXL345 an einem Arduino, I2CDev Library, HowTo...
2 ADXL345 an einem Arduino, I2CDev Library, HowTo...
Hallo Markus,
hier der Code, auf die relevanten Zeilen eingekürzt:
Code:
#include "Wire.h" // Für I2C Bus
#include <LiquidCrystal.h> // für das LCD
#include <SainsmartKeypad.h> // fuer die Keys auf dem Keypad Shield
#include <ADXL345.h> // fuer das Breackkout Board
#include <I2Cdev.h> // fuer das Breackkout Board
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
SainsmartKeypad keypad(0);
ADXL345 adxl1(0x53);
ADXL345 adxl2(0x1D);
...
void setup() {
Wire.begin();
lcd.begin (16, 2); // for 16 x 2 LCD module
lcd.setBacklightPin(backLight, lightLevel);
...
adxl1.initialize();
adxl2.initialize();
...
}
void loop() {
...
adxl1.getAcceleration(&x1, &y1, &z1); // read the accelerometer values and store them in variables
x1g = 0.00385 * (x1 - offsetX1) / gainX1; // 0.00385 to convert the raw data to Gs
y1g = 0.00385 * (y1 - offsetY1) / gainY1; // offset and gain for calibration
z1g = 0.00385 * (z1 - offsetZ1) / gainZ1;
adxl2.getAcceleration(&x2, &y2, &z2); // read the accelerometer values and store them in variables
x2g = 0.00385 * (x2 - offsetX2) / gainX2; // 0.00385 to convert the raw data to Gs
y2g = 0.00385 * (y2 - offsetY2) / gainY2; // offset and gain for calibration
z2g = 0.00385 * (z2 - offsetZ2) / gainZ2;
...
}
Bitte beachte
1. ...das die Methoden bei der Verwendung von I2Cdev Library anders heissen als im Orginal Code und den Libraries von Kalle:
Also:
"initialize" statt "powerOn"
"getAcceleration" statt "readAccel"
2.... außerdem, dass ein Sensor auf die I2C Adress 0x1D konfiguriert werden muss (Pin SDO an VCC legen, siehe Link von Kalle)
Ich denke an dem Code Beispiel kannst Du ablesen wie es funktionieren kann....
Ich finde, die I2CDev und auch die zugehörige ADXL345 sind ne feine Sache, der spezifische Code der mit den ADXL345 Sensoren spricht ist wirklich recht übersichtlich....
Den vollständigen Sketch stelle ich irgendwann mal rein, wenn er wirklich "fertig" ist. Da gehört ja auch die Liste der Hardware dazu, die ja doch von Kalle 's Appetizer abweicht...
Vielleicht kann man ja sogar den "Kalibrierungslauf" mit integrieren....
Die Anzeige Routine ist noch nicht "schick" genug, und die Anzeige "flackert" etwas....
Umschaltung von Throw nach Sekante ist noch nicht wählbar (Toggle Button....)
Das muss ich versuchen zu ändern...
IMHO reichen 16 Zeichen in 2 Zeilen für diese spezielle Anwendung völlig.....
Grüße und viel Spaß beim Basteln....und vielen Dank an Kalle für die Zeilen zum Thema Kalibrierung!
Eckehard