Arduino med accelerometer servomotor (1 / 2 steg)
Steg 1: Arduino kod
ADXL345 accelerometer 2 servo motorstyrning
#include < Wire.h >
#include < Servo.h >
Servo myservox;
Servo myservoy;
#define enhet (0x53)
#define TO_READ (6)
#define TRIGGER 16 byte buff [TO_READ];
int i;
void setup()
{pinMode(TRIGGER,OUTPUT);
digitalWrite(TRIGGER,HIGH);
Wire.BEGIN();
myservox.attach(9);
myservoy.attach(10);
myservox.write(90);
Delay(25);
myservoy.write(90);
Delay(25);
writeTo (enhet, 0x2D, 0);
writeTo (enhet, 0x2D, 16).
writeTo (enhet, 0x2D, 8);}
void loop()
{int regAddress = 0x32;
int x, y, z; digitalWrite(TRIGGER,LOW);
Delay(10); digitalWrite(TRIGGER,HIGH);
readFrom (enhet, regAddress, TO_READ, buff);
x = 0; y = 0; z = 0;
för (jag = 1; jag < = 5; i ++)
{x += (((int)buff[1]) << 8) | buff [0];
y + = (((int)buff[3]) << 8) | buff [2].
z + = (((int)buff[5]) << 8) | buff [4].
Delay(10);
}
x = 5.
y / = 5;
z / = 5;
om (x <-255) x =-255;
annars om (x > 255) x = 255;
om (y <-255) y =-255;
annars om (y > 255) y = 255;
x = karta (x,-255, 255, 0, 180);
y = karta (y,-255, 255, 0, 180);
myservox.write(x);
Delay(25);
myservoy.write(180-y);
Delay(25);
Delay(200);}
void writeTo (int enhet, byte adress, byte val)
{Wire.beginTransmission(device);
Wire.write(Address); Wire.write(val);
Wire.endTransmission(); }
void readFrom (int enheten byte adress, int num, byte buff[])
{Wire.beginTransmission(device);
Wire.write(Address);
Wire.endTransmission();
Wire.beginTransmission(device);
Wire.requestFrom (enhet, num);
int jag = 0;
While(Wire.available())
{
buff [i] = Wire.read(); i ++;
}
Wire.endTransmission();
}