Hombre DEA, cuanto te echaba de menos, gracias por tu tiempo
He estado ocupado con el dichoso código, y parece que se va arreglando, le he tenido que pedir ayuda a un buen amigo, Atilano Belinchon, que me ha aclarado bastantes fallos que tenía el programa, ahora no es que sea exquisito, pero por lo menos funciona, por lo que me ha dicho tengo que depurarlo bastante para que funcione bien, y con las explicaciones que me ha dado, he entendido perfectamente las modificaciones que hemos hecho del programa, así como las modificaciones que me quedan por hacer.
Le mande los códigos el Viernes, y hemos estado trabajando sobre ellos el Sábado y el Domingo, tanto por email, por teléfono, y por video conferencia, todo un despliegue de medios de aquella manera, un trabajo muy bien guiado por alguien que entiende de comunicaciones bastante más que yo.
Y ahora voy a contestar las publicaciones que habéis hecho en estos días.
Como bien dice DEA en la publicación # 1572, dada la cantidad de datos con los que ya estoy trabajando, necesito separar los datos que quiero ver en el Monitor Serie, del Arduino llamado “Esclavo” de los datos que quiero mandar al otro Arduino, por eso he habilitado el puerto “Serial1”, en los pines 18 y 19 de los dos Arduino Mega 2560, para que por este puerto se comuniquen los Arduinos entre sí, y dejar que los datos que quiero ver en el Monitor Serie del ordenador, vallan por el puerto “Serial”, USB, para comprobar que funciona el programa y ver los datos de los sensores del Arduino que tengo pinchado.
La repetición de lectura de las funciones, es una de las cosas que ya he arreglado, efectivamente, había unas ordenes que me repetían la lectura de los datos, que ya he corregido.
La velocidad del puerto, como sabéis se puede modificar, sin problemas, solo cambiando el valor que se pone en la línea de configuración, “ Serial.begin(57600) “, que ahora parece ser la indicada, pero como bien apunta DEA, puede ser excesiva para el buen funcionamiento del Arduino, al interactuar con la Nextion. Lo suyo es que ponga el valor de “Serial.begin(9600)”, para que todo funcione mejor.
En la publicación # 1573, me preguntas como tengo conectados los puertos serie, y ya publique anteriormente que los tengo cruzados, el TX de un Arduino con el RX del otro Arduino, y el RX de uno con el TX del otro.
En la publicación # 1574, me comentas que hay varios fallos, efectivamente, tenía muchos más, pero hay alguno que ya he arreglado.
Lo de las sentencias if todavía no está resuelto, pero será lo próximo que haga.
Activo los dos puertos y solo uso uno, eso ya lo he arreglado, era un problema de programación, me faltaban unas líneas que ya las he puesto.
ETin.begin(details(rxdata), & Serial1); // Comienza la recepción de datos a través de Serial, en los pines 18 y 19
ETout.begin(details(txdata), & Serial1); // Comienza el envío de datos a través de Serial, en los pines 18 y 19
Es una de las cosas que he arreglado con mi amigo Atilano Belinchon.
Todos los “Serial.print” que hay tanto en el “Maestro”, como en el “Esclavo”, de momento, son para comprobar que el programa funciona, en un futuro no muy lejano los comentare, para que no se ejecuten en el programa, y efectivamente, habrá algunos que los aprovechare para utilizarlos con la Nextion, pero de momento están para comprobar que el programa funciona.
Y a demás de todo eso, me faltaba crear la función de qué datos enviar de un Arduino a otro, con los “txdata.” y “rxdata.”, me faltaban más de la mitad, por eso no se enviaban los datos, y no los podía ver. Hasta ahora, generaba los datos con el trabajo de los sensores, los podía ver en el Monitor Serie, pero no tenia escrita la orden de mandar los datos al otro Arduino.
No tenían la culpa ni el giroscopio, ni el sensor de temperatura DS18B20, la tenía yo, porque me faltaban un montón de órdenes por escribir en el código.
Y por supuesto el dichoso giroscopio, resulta que depende de en qué tipo de Arduino lo quieras conectar, va de una manera u otra, en mi caso, para el Arduino Mega 2560, tiene que ir conectado de la siguiente manera para que funcione, con la dirección I2C 0x68, cero equis seis ocho.
VCC a + 5V
GND a GND -
SCL a SDA que hay encima del pin 13
SDA a SCL que hay encima del pin 13
AD0 a GND -
Y a demás configurar la dirección I2C, dentro del programa como 0x6B, si lo he puesto bien, cero equis seis Be, si no se pone así, no funciona
A demás con el código que le puesto al giroscopio también me da la temperatura, por lo tanto a partir de ahora, cuando este seguro de que todo funciona como es debido, posiblemente quitare algún sensor, porque si no, con la idea que tenía cuando empecé el proyecto, me voy a juntar con 3 sensores que me medirán la temperatura del interior del casco, temperatura del giroscopio, temperatura de DS18B20, y temperatura del DHT22, y con uno que me de la información me vale
Adjunto los códigos nuevos, ahora si envío y recibo datos, de un Arduino al otro.
Un saludo
PD. DEA, no te molestes (enfades), porque hayamos hecho el mismo trabajo los dos por distintos caminos, de hecho, me comentas cosas que no habíamos visto nosotros, muchas gracias