Bienvenido, Invitado
Nombre de Usuario: Contraseña: Recordarme

TEMA:

Un ROV de agua dulce, con mando de PS2 4 años 2 meses antes #1308

Después de unos días de mucho trabajo, puedo volver a dedicarle un poco de tiempo al proyecto del ROV.

Llevo toda la tarde intentando incluir el Giroscopio MPU6050, en mi programa, según me facilito Dea, y no sé que demonios pasa que no soy capaz de que compile.

El programa de Dea, si compila sin problemas, las pegas empiezan cuando incluyo esas lineas en el código tanto del Maestro como del Esclavo, me dice de todo menos guapo, debe ser una tontería, pero no la veo, he incluido las lineas en orden, cada una en su bloque, las he marcado con ***, para saber que cambio, y me estoy volviendo loco leyendo el código y no veo el error.

adjunto el archivo de Dea, y los dos mios

un saludo
Adjuntos:

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

Un ROV de agua dulce, con mando de PS2 4 años 2 meses antes #1309

En el Master faltaba una i, en la palabra pitch, y ya compila, ya os dije que tenía que ser alguna tontería

a ver que le pasa al Esclavo

supongo que también será algo tremenda mente importante
`init_MPU` was not declarate in this scope

algo así como que el MPU no ha sido declarado, y eso no es verdad, tiene que ser otra cosa

si le añado la linea para asignar el pin para leer los datos del MPU, como he hecho con los demás sensores
const int MPU 0x68 = 28

me marca la linea
#define MPU 0x68
me da el error
expected uncualified-id before numeric constant

y da error a demás varias lineas mas del control del Giroscopio

la verdad es que es muy raro
un saludo
Adjuntos:

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

Última Edición: por asesorplaza1.

Un ROV de agua dulce, con mando de PS2 4 años 2 meses antes #1311

Buenas , no te compila por que tienes dos fallos:
- El primeo la ultima llave al final del Stech sobra.
- El Seginco fallo es esta linea :
const int MPU 0x68 = 28; // pin utilizado para la lectura de datos del Giroscopio ***

MPU 0x68 no lo puede declara como pin, puesto que 0x68 es una dirección de memoria para que arduino separa que ese sensor conectado a I2c trabaja en esa dirección, no es un pin fisico.
El siguiente usuario dijo gracias: asesorplaza1

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

Un ROV de agua dulce, con mando de PS2 4 años 2 meses antes #1312

Muchas gracias
ya sabia yo que tenia que ser un error gravísimo de programación, y por eso no lo veía

pero si quito la ultima llave el void loop se me queda abierto, y me da el error

02_Esclavo_01_02_2020_con_MPU6050:266:3: error expected `}` at end of imput

he quitado la ultima llave y comentado la linea de

//const int MPU 0x68 = 28; // pin utilizado para la lectura del Giroscopio ***

y me sigue dando error de compilación en la linea

init_MPU (); // Inicializamos el MPU6050 ***

error
`init_MPU`was not declarate in this scope

y si miro en los errores, me da fallo en varias de las funciones del Giroscopio, como si la librería no las tuviera, o la librería no fuese correcta, cosa que no es verdad, porque el programa solo si compila,

si pongo la llave al final del loop se quita el error

02_Esclavo_01_02_2020_con_MPU6050:266:3: error expected `}` at end of imput
Adjuntos:

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

Última Edición: por asesorplaza1.

Un ROV de agua dulce, con mando de PS2 4 años 2 meses antes #1313

Espera por que te sobran alguna mas, Mira es este trozo de tu Stech: Lo que te escribo en Azul tre sobra tambien por eso su quitad la ultima no te compila, te sobran las dos

for (int i = 0; i < 5; i++) {
ETin.receiveData();
// Haremos algo correctamente con los datos devueltos en un
ESCVL.write(rxdata.upLraw); // Establezca la señal ESCVL en la posición del acelerador definida.
ESCVR.write(rxdata.upRraw); // Establezca la señal ESCVR en la posición del acelerador definida.
ESCHL.write(rxdata.HLraw); // Establezca la señal ESCHL en la posición del acelerador definida.
ESCHR.write(rxdata.HRraw); // Establezca la señal ESCHR en la posición del acelerador definida.

digitalWrite(HeadLts, rxdata.LEDHdlts); // Enciende los faros en función del retraso de los datos del mensaje
delay(18);
}

delay(18);
// Este retraso se agrega para darle al ROV la oportunidad de devolver datos

volts = analogRead(Voltpin) / ResistFactor * RefVolts * 10; // Lee el voltaje
// de la batería a través del divisor de voltaje. Factor de 10 utilizado
// para ayudar a lograr un número entero con una precisión de 0.1V.
txdata.BattVolt = volts; // Enviar de vuelta el voltaje de la batería a bordo.

txdata.ROVTemp = analogRead(Temppin);
txdata.ROVTemp1 = analogRead(Temppin1);
txdata.ROVTemp2 = analogRead(Temppin2);
// Esto lee que el pin lo mantiene como un valor 0-1024.

{ ESta llave no pinta nada aqui
FunctionsMPU(); // Adquirimos los ejex AcX, AcY, AcZ ***

Roll = FunctionsPitchRoll(AcX, AcZ, AcY); //Calculo del angulo del Roll ***
Pitch = FunctionsPitchRoll(AcY, AcX, AcZ); //Calculo del angulo del Pitch ***

Serial.print("Pitch: "); // ***
Serial.print(Pitch); // ***
Serial.print("\t"); // ***
Serial.print("Roll: "); // ***
Serial.print(Roll); // ***
Serial.print("\n"); // ***

}
El siguiente usuario dijo gracias: asesorplaza1

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

Un ROV de agua dulce, con mando de PS2 4 años 2 meses antes #1314

Y otra cosa, he estado mirando todo tu proyecto y esta bien pero, se podría hacer machismo mejor.
Me explico, la comunicación que hace entre los arduinos es por puerto serie, que es algo relativamente lento, de echo tienes muchos delay para que le de timepo a uno u otro arduino en enviar los comando.

Hay otra forma que se llama comunicación entre Arduinos por CAN BUS, es algo complejo y facil a la vez, Asi que si quieres cuando lo tengas todo terminado y ayas aprendido esta forma de hacerlo, vemos si quieres como pasarlo todo por CANBUS,

Saludos
El siguiente usuario dijo gracias: asesorplaza1

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

Tiempo de carga de la página: 0.122 segundos
Gracias a Foro Kunena