Código de Arduino con sensor MPU6050 y led RGB

Hola :slight_smile: Es la primera vez que publico en este foro. Hace unos meses que conozco sobre Arduino y su programación porque en la escuela me han enseñado, pero honestamente hay veces en que me bloqueo mucho, como ahora :frowning: Y desearía que alguien pudiese iluminarme.
En la tarea pasada, nos pidieron investigar el código de Arduino que permite manipular un sensor de giroscopio y acelerómetro MPU6050, y el código que yo anoté, y que me dijo el profesor que estaba bien, es este:

#include <Wire.h>


#define MPU 0x68


#define A_R 16384.0
#define G_R 131.0


#define RAD_A_DEG = 57.295779


int16_t AcX; 
int16_t AcY; 
int16_t AcZ;
int16_t GyX; 
int16_t GyY;
int16_t GyZ;


float Acc[2];
float Gy[2];
float Angle[2];

void setup()
{

Wire.begin();
Wire.beginTransmission(MPU);
Wire.write(0x6B);
Wire.write(0);
Wire.endTransmission(true);
Serial.begin(9600);
}

void loop()
{
 
  Wire.beginTransmission(MPU);
  Wire.write(0x3B); 
  Wire.endTransmission(false);
  Wire.requestFrom(MPU,6,true);
  AcX=Wire.read()<<8|Wire.read(); 
  AcY=Wire.read()<<8|Wire.read();
  AcZ=Wire.read()<<8|Wire.read();


  Wire.beginTransmission(MPU);
  Wire.write(0x43);
  Wire.endTransmission(false);
  Wire.requestFrom(MPU,4,true); 
  GyX=Wire.read()<<8|Wire.read();
  GyY=Wire.read()<<8|Wire.read();
   
  Serial.print("Acelerometro bruto X: "); Serial.println(AcX);
  Serial.print("Acelerometro bruto Y: "); Serial.println(AcY); 
  Serial.print("Acelerometro bruto Z: "); Serial.println(AcZ);
  Serial.print("Giroscopo bruto Y: "); Serial.println(GyX);
  Serial.print("Giroscopo bruto X: "); Serial.println(GyY);
  Serial.print("Giroscopo bruto Y: "); Serial.println(GyZ);

 
  delay(1000); 
}

Pero ahora, en la nueva tarea, nos piden escribir un código de Arduino que encienda un LED RGB cuando el sensor MPU6050 sea detectado en movimiento del eje Z. Deberá apagarlo una vez que se
vuelva a detectar movimiento en el eje Z. (Debe funcionar como interruptor).
Y estoy muy atorada con eso :/, sé que debe ser basándonos en la tarea anterior, pero no entiendo muy bien :frowning:

Hola @Cassiopeia27 bienvenida al foro Arduino.
Primero sigue las instrucciones que te pasé por privado (arriba derecha, verás un 1, click y lee y haz lo que te pido).

Luego respecto de tu programa te guiaremos pero sabiendo (y agradezco tu honestidad) que es tarea, tu debes aprender.

Si el profesor te pide encender un LED cuando se detecte un movimiento en el eje Z.

Tu eso como lo ves?

los movimientos de cada eje entre que y que varian? Yo se la respuesta, te lo pregunto a ti.

#1
@surbyte ¡Hola! (: Ya leí tu mensaje e hice las modificaciones ;), muchas gracias por la observación.

Uno de los problemas que tengo principalmente con esta tarea, es que no entiendo del todo el código que investigué, ya que en ocasiones anteriores, por ejemplo con el sensor ultrasónico, el servomotor, etc. El profesor era quien nos enseñaba el código para manipular dichos sensores y motores y nos explicaba cada parte, además que cabe decir que no programamos en computadora, sólo escribimos los códigos a mano, entonces jamás probamos si funcionan o no realmente, él determina eso al leer nuestro código.
Y respecto a cómo veo si me pide encender el LED al detectarse un movimiento en el eje Z, sé que debo hacer lo básico de crear una condición (if) para saber si está encendido o apagado el RGB y luego dentro, una condición de detectar el movimiento, se tendría que hacer dos condiciones, una donde el foco está apagado y otro donde esta encendido, ¿no es así?

La pregunta de entre qué y qué varían los movimientos de cada eje no la entiendo muy bien :0

Bueno, al fin alguien que explica debidamente el contexto del problema. Te agradezco por eso.

Esperaba que tuvieras el sensor y que hayas podido ver entre que y que se mueven los valores.

Cuando no se sabe, tienes dos caminos:

  1. leer la hoja de datos y si no sabes inglés vas realmente a pegarte contra la pared
  2. buscar en Google algun tutorial al respecto tal como dicen las normas pones

Google : Arduino MPU6050.

Mi consejo es que busques algo de Youtube que te permita ver lo que no puedes hacer en la práctica asi tendras la sensación de haberlo probado.

Acabo de poner la busqueda en google y una respuesta interesante fue esta

Prometec Arduino MPU6050 Tutorial
Este otro tmb es muy bueno Tutorial MPU6050, Acelerómetro y Giroscopio
Tienen una buena explicación, tienen capturas de pantalla que te dirán que esperas leer como resultados.

En el 2do tutorial dice

Al inicializar el sensor, los rangos por defecto serán:

  • acelerómetro -2g a +2g

  • giroscopio: -250°/sec a +250°/sec

Debes determinar como detectas movimiento, girando o acelarando?

Buenas, me gustaría saber si conseguiste encender la tira de led RGB cuando el MPU6050 detecte una orientacion u otra. Te agradecería la ayuda ya que estoy con el mismo problema ahora mismo. Gracias