Bienvenido, Invitado
Nombre de Usuario: Contraseña: Recordarme
  • Página:
  • 1
  • 2

TEMA:

mpu6050 giroscopio nextion 2 años 2 meses antes #2585

hola! soy nueva en el foro, no se si subí toda la información bien, ya me dirán ustedes.
bueno tengo el problema que los datos del giroscopio no se reflejan en la pantalla nextion.
escribo aca el codigo por si no se subio el archivo rar.
luego en la nextion hice algo muy sencillo ya que solo estoy aprendiendo como pasar los valores del arduino a la nextion
solo tiene 4 toolbox, son 2 numero y dos txt (el txt no se modificaria)
lo que quiero modificar únicamente son los n0 y n1
ojala me ayuden gracias :)

#include "I2Cdev.h"
#include "MPU6050.h"
#include "Wire.h"


MPU6050 sensor;

// Valores RAW (sin procesar) del acelerometro y giroscopio en los ejes x,y,z
int ax, ay, az;
int gx, gy, gz;

long tiempo_prev;
float dt;
float ang_x, ang_y;
float ang_x_prev, ang_y_prev;

void setup() {
Serial.begin(57600); //Iniciando puerto serial
Wire.begin(); //Iniciando I2C
sensor.initialize(); //Iniciando el sensor

if (sensor.testConnection()) Serial.println("Sensor iniciado correctamente");
else Serial.println("Error al iniciar el sensor");
}

void loop() {
// Leer las aceleraciones y velocidades angulares
sensor.getAcceleration(&ax, &ay, &az);
sensor.getRotation(&gx, &gy, &gz);

dt = (millis()-tiempo_prev)/1000.0;
tiempo_prev=millis();

//Calcular los ángulos con acelerometro
float accel_ang_x=atan(ay/sqrt(pow(ax,2) + pow(az,2)))*(180.0/3.14);
float accel_ang_y=atan(-ax/sqrt(pow(ay,2) + pow(az,2)))*(180.0/3.14);

//Calcular angulo de rotación con giroscopio y filtro complemento
ang_x = 0.98*(ang_x_prev+(gx/131)*dt) + 0.02*accel_ang_x;
ang_y = 0.98*(ang_y_prev+(gy/131)*dt) + 0.02*accel_ang_y;


ang_x_prev=ang_x;
ang_y_prev=ang_y;

//Mostrar los angulos separadas por un [tab]


Serial.print("n1.val=");
Serial.println(ang_x);
Serial.write(0xff); //Always add 3 full bytes after...
Serial.write(0xff);
Serial.write(0xff);
Serial.print("n0.val=");
Serial.println(ang_y);
Serial.write(0xff); //Always add 3 full bytes after...
Serial.write(0xff);
Serial.write(0xff);

}
Adjuntos:

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

mpu6050 giroscopio nextion 2 años 2 meses antes #2586

La pantalla Nextion, si no la has cambiado modificandola de antemano, funciona a 9600bps. No veo la indicacion en el Preinitialize de la pantalla la indicacion de que ha de funcionar a esa velocidad.
Yo para probar, cambiaria el codigo del arduino a 9600.

Por otro lado veo que estas usando numeros float, tampoco son validos, ya que la nextion solo acepta numeros enteros en number. Tienes que enviarle un numero tipo byte.

Lo que puedes hacer para verificar todo, es enviar ax en vez de ang_x,.

Un saludo.

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Última Edición: por Jose Luis.

mpu6050 giroscopio nextion 2 años 2 meses antes #2587

muchas gracias por su respuesta.
aun soy muy novata en este tema no sabia que no funcionaba con mas de 9600 ni que no acepta números float.

hice los cambios que me sugirió pero aun sigue sin funcionar

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

mpu6050 giroscopio nextion 2 años 2 meses antes #2588

Podias poner el nuevo codigo?
Y una foto con las conexiones del arduino a la nextion.

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Última Edición: por Jose Luis.

mpu6050 giroscopio nextion 2 años 2 meses antes #2589

si, le envio foto de la conexión
arduino rx conectado con tx de nextion
arduino tx conectado con rx de nextion

y el codigo:
#include "I2Cdev.h"
#include "MPU6050.h"
#include "Wire.h"

// La dirección del MPU6050 puede ser 0x68 o 0x69, dependiendo
// del estado de AD0. Si no se especifica, 0x68 estará implicito
MPU6050 sensor;

// Valores RAW (sin procesar) del acelerometro y giroscopio en los ejes x,y,z
int ax, ay, az;
int gx, gy, gz;

long tiempo_prev;
float dt;
float ang_x, ang_y;
float ang_x_prev, ang_y_prev;

void setup() {
Serial.begin(9600); //Iniciando puerto serial
Wire.begin(); //Iniciando I2C
sensor.initialize(); //Iniciando el sensor

if (sensor.testConnection()) Serial.println("Sensor iniciado correctamente");
else Serial.println("Error al iniciar el sensor");
}

void loop() {
// Leer las aceleraciones y velocidades angulares
sensor.getAcceleration(&ax, &ay, &az);
sensor.getRotation(&gx, &gy, &gz);

dt = (millis()-tiempo_prev)/1000.0;
tiempo_prev=millis();

//Calcular los ángulos con acelerometro
float accel_ang_x=atan(ay/sqrt(pow(ax,2) + pow(az,2)))*(180.0/3.14);
float accel_ang_y=atan(-ax/sqrt(pow(ay,2) + pow(az,2)))*(180.0/3.14);

//Calcular angulo de rotación con giroscopio y filtro complemento
ang_x = 0.98*(ang_x_prev+(gx/131)*dt) + 0.02*accel_ang_x;
ang_y = 0.98*(ang_y_prev+(gy/131)*dt) + 0.02*accel_ang_y;


ang_x_prev=ang_x;
ang_y_prev=ang_y;

//Mostrar los angulos separadas por un [tab]


Serial.print("n1.val=");
Serial.println(ax);
Serial.write(0xff); //Always add 3 full bytes after...
Serial.write(0xff);
Serial.write(0xff);
Serial.print("n0.val=");
Serial.println(ay);
Serial.write(0xff); //Always add 3 full bytes after...
Serial.write(0xff);
Serial.write(0xff);

}
Adjuntos:

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

mpu6050 giroscopio nextion 2 años 2 meses antes #2590

Pon un Serial.prinl(ax); para verificar que lo eque envias es un dato entero.
Cambia los cables el rx por el tx en arduino uno.
Prueba de nuevo.

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Última Edición: por Jose Luis.
  • Página:
  • 1
  • 2
Tiempo de carga de la página: 0.102 segundos
Gracias a Foro Kunena