Paso 1: Código de Arduino
Control de motor de servo ADXL345 acelerómetro 2
#include < Wire.h >
#include < Servo.h >
Servo myservox;
Servo myservoy;
#define dispositivo (0x53)
#define TO_READ (6)
#define TRIGGER 16 buff de byte [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 (dispositivo, 0x2D, 0);
writeTo (dispositivo, 0x2D, 16);
writeTo (dispositivo, 0x2D, 8);}
void loop()
{int regAddress = 0x32;
int x, y, z; digitalWrite(TRIGGER,LOW);
Delay(10); digitalWrite(TRIGGER,HIGH);
readFrom (dispositivo, regAddress, TO_READ, buff);
x = 0; y = 0; z = 0;
para (i = 1; i < = 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;
Si (x <-255) x =-255;
else if (x > 255) x = 255;
Si (y <-255) y =-255;
else if (y > 255) y = 255;
x = mapa (x,-255, 255, 0, 180);
y = mapa (y,-255, 255, 0, 180);
myservox.Write(x);
Delay(25);
myservoy.Write(180-y);
Delay(25);
Delay(200);}
writeTo vacío (int dispositivo, dirección de byte, byte val)
{Wire.beginTransmission(device);
Wire.Write(Address); Wire.Write(Val);
Wire.endTransmission(); }
void readFrom (int dispositivo dirección de byte, int num, buff[]) bytes
{Wire.beginTransmission(device);
Wire.Write(Address);
Wire.endTransmission();
Wire.beginTransmission(device);
Wire.requestFrom (dispositivo, num);
int i = 0;
while(Wire.Available())
{
Buff [i] = Wire.read(); i ++;
}
Wire.endTransmission();
}