ACCELOROMETER med adxl 345
Titta på videon här: https://www.youtube.com/watch?v=omZ538TElCU
/ * Accelerometer anslutning stift (I2C) till Arduino visas nedan:
Arduino Accelerometer ADXL345 A5 SCL A4 SDA 3.3V CS 3.3V VCC GND GND * /
#include #include
ADXL345 adxl; variabla adxl är en instans av ADXL345 biblioteket
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, och z); //read accelerometern värden och lagra dem i variablerna x, y, z / / utgång (x, y, z) på horisontalplanet bör vara ungefär (0,0,255) / / följande 3 rader är för en offset rawX = x + 360; rawY = y + 170; rawZ = z + 10. X = rawX/521.00; för beräkningar av vinkel Y = rawY/521.00; för beräkningar av vinkel Z = rawZ/521.00; används för vinkel beräkningar rollrad = atan(Y/sqrt(X*X+Z*Z)); beräknade vinkel i radianer pitchrad = atan(X/sqrt(Y*Y+Z*Z)); beräknade vinkel i radianer rolldeg = 180*(atan(Y/sqrt(X*X+Z*Z))) /PI; beräknade vinkeln i grader pitchdeg = 180*(atan(X/sqrt(Y*Y+Z*Z))) /PI; beräknade vinklar i grader / / skriva ut värden: Serial.print ("x:"); Serial.Print(x); RAW-data utan offset Serial.print ("y"); Serial.Print(y); RAW-data utan offset Serial.print ("z:"); Serial.Print(z); RAW-data utan offset Serial.print ("rawX ="); Serial.Print(rawX); rådata med offset Serial.print ("rawY ="); Serial.Print(rawY); rådata med offset Serial.print ("rawZ ="); Serial.Print(rawZ); rådata med offset Serial.print ("X ="); Serial.Print(X); rådata med offset och delad med 256 Serial.print ("Y ="); Serial.Print(Y); rådata med offset och delad med 256 Serial.print ("Z ="); Serial.Print(Z); rådata med offset och delat med 256
Serial.Print ("\t vinkel enligt x-axeln (Roll(deg)) ="); Serial.Print(rolldeg); beräknade vinkeln i grader Serial.print ("\t vinkel enligt y-axeln (Pitch(deg)) ="); Serial.println(pitchdeg); beräknade vinklar i grader / / Serial.print ("Roll(rad) ="); Serial.Print(rollrad); beräknade vinkeln i radianer / / Serial.print ("Pitch(rad) ="); Serial.Print(pitchrad); beräknade vinkeln i radianer}