Bekijk hier de video: https://www.youtube.com/watch?v=omZ538TElCU
/ * Versnellingsmeter verbinding pinnen (I2C) te Arduino staan hieronder:
Arduino versnellingsmeter ADXL345 A5 SCL A4 SDA 3,3 v CS 3.3V VCC GND GND * /
#include #include
ADXL345 adxl; variabele adxl is een exemplaar van de ADXL345-bibliotheek
int x, y, z; int rawX, rawY, rawZ; float X, Y, Z; float rollrad, pitchrad; float rolldeg, pitchdeg;
void setup {Serial.begin(9600); adxl.powerOn();}
void loop {adxl.readAccel (x, y, & z); //read de versnellingsmeter waarden en ze opslaan in variabelen x, y, z / / Output (x, y, z) op horizontaal vlak moet ongeveer (0,0,255) / / de volgende 3 regels is voor een offset rawX = x + 360; rawY = y + 170; rawZ = z + 10; X = rawX/521.00; voor de berekening van de hoek Y = rawY/521.00; voor de berekening van de hoek Z = rawZ/521.00; gebruikt voor hoek berekeningen rollrad = atan(Y/sqrt(X*X+Z*Z)); berekende hoek in radialen pitchrad = atan(X/sqrt(Y*Y+Z*Z)); berekende hoek in radialen rolldeg 180*(atan(Y/sqrt(X*X+Z*Z)) =) /PI; berekende hoek in graden pitchdeg 180*(atan(X/sqrt(Y*Y+Z*Z)) =) /PI; berekende hoek in graden / / print waarden: Serial.print ("x:"); Serial.Print(x); ruwe gegevens zonder compensatie van Serial.print ("y:"); Serial.Print(y); ruwe gegevens zonder compensatie van Serial.print ("z:"); Serial.Print(z); ruwe gegevens zonder compensatie van Serial.print ("rawX ="); Serial.Print(rawX); ruwe gegevens met compenseren Serial.print ("rawY ="); Serial.Print(rawY); ruwe gegevens met compenseren Serial.print ("rawZ ="); Serial.Print(rawZ); ruwe gegevens met compenseren Serial.print ("X ="); Serial.Print(X); ruwe gegevens met offset en verdeeld door 256 Serial.print ("Y ="); Serial.Print(Y); ruwe gegevens met offset en verdeeld door 256 Serial.print ("Z ="); Serial.Print(Z); ruwe gegevens met offset en verdeeld door 256
Serial.Print ("\t hoek volgens x-as (Roll(deg)) ="); Serial.Print(rolldeg); berekende hoek in graden Serial.print ("\t hoek volgens de y-as (Pitch(deg)) ="); Serial.println(pitchdeg); berekende hoek in graden / / Serial.print ("Roll(rad) ="); Serial.Print(rollrad); berekende hoek in radialen / / Serial.print ("Pitch(rad) ="); Serial.Print(pitchrad); berekende hoek in radialen}