Hola buenas tardes a todos los compañeros del foro.
Quiero compartir un pequeño proyecto que realice, pero al mismo tiempo pedir ayuda para el siguiente paso que busco del mismo.
Se trata de un circuito en arduino que utiliza el acelerometro ADXL345 y dos servomotores, uno para eje "x" y otro para eje "y".
He logrado que los servos sigan las posiciones en los ejes respectivamente. A continuación les presento el codigo que estoy utilizando:
/*
Conexion entre acelerometro y arduino:
Arduino Accelerometer ADXL345
A5 SCL
A4 SDA
3.3V CS
3.3V VCC
GND GND
Conexión de servomotores:
Arduino Servo No. 1
5V 5V
GND GND
D9 CTRL
Arduino Servo No. 2
5V 5V
GND GND
D6 CTRL
*/
#include <Wire.h>
#include <ADXL345.h>
#include <Servo.h>
Servo servo1;
Servo servo2;
ADXL345 adxl;
int x, y, z;
int rawX, rawY;
int mappedRawX, mappedRawY;
void setup() {
Serial.begin(115200);
adxl.powerOn();
servo1.attach(9);
servo2.attach(6);
servo1.write(90);
servo2.write(90);
}
void loop() {
adxl.readAccel(&x, &y, &z); //aqui se leen los valores del acelerometro y se guardan en variables x y z
if (rawX < -255) rawX = -255; else if (rawX > 255) rawX = 255; // aqui se definen los rangos a utilizar
if (rawY < -255) rawY = -255; else if (rawY > 255) rawY = 255;
mappedRawX = map(rawX, -255, 255, 0, 180); // en este apartado se hace la conversion a grados para que el servo lo entienda
mappedRawY = map(rawY, -255, 255, 0, 180);
servo1.write(mappedRawX);
delay(15);
servo2.write(mappedRawY);
delay(15);
}
Estoy utilizando dos servomotores DS8711.
Lo que ahora busco y solicito su ayuda, es como hacer que esta plataforma se encuentre siempre nivelada, es decir, que los servomotores actuen para que los ejes "x" y "y" siempre esten en 90 grados. Si pudieran ayudarme con el codigo se los agradeceria mucho. De hecho ya les agradezco por su tiempo.
Aqui pueden ver las fotos ya que no pude subirlas al post... https://drive.google.com/drive/folders/1QojDytIAbq18d94e4qbS4j-t0CGu2Cf2?usp=sharing
Saludos a todos.