Estoy con un proyecto en el que necesito sacar información por un display lcd. Funcionaba perfecto en el Arduino UNO donde estaba haciendo las pruebas pero al conectarlo al Nano en el que va a estar solo se ven cuadrados. Vuelvo a quitar el Nano para poner el UNO y todo perfecto por lo que imagino que el código y el esquema están bien. Supongo que será algo de la propia placa que no permite hacerlo igual en ambas, pero no sé lo que es y los esquemas que encuentro por internet hacen lo mismo.
¿Alguien sabe qué puedo estar haciendo mal?
Muchas gracias de antemano.
Hola, he cargado códigos de prueba, cuando llegue a casa los subo. Respecto a lo de I2C, la idea es conectar este Arduino a otro por I2C, si se puede conectar ambas cosas no sé hacerlo
Pues tienes toda la razón. Acabo de volver a cargar el código de prueba y funciona, pongo el mío de nuevo y no va en el Nano y si en el UNO. El código es larguísimo porque es el menú del programa con el que me ayudaste el otro día (los Arduinos maestro-esclavos I2C a 15m de distancia), por lo que adjunto la parte donde ya sé que se pilla. Sé que así no es nada eficiente, pero solo estoy haciendo pruebas hasta que todo funcione y luego ya lo iré optimizando.
Por cierto, probé en un UNO r3 y tampoco funciona.
He encontrado el error y ahora me siento tremendamente estúpido
Resulta que estaba iniciando el dispositivo como maestro de la siguiente manera: "Wire.beginTransmission(0);" cuando la forma correcta sería: "Wire.begin(0);". Como misteriosamente funcionaba en los rev4, no presté atención a ese tipo de fallos. Ahora ya funciona. Pero tengo una duda sobre el sketch.
El mensaje que muestra al compilar indica un 64% de almacenamiento de programa y un 96% de la memoria dinámica. ¿Podría darme problemas utilizar un porcentaje tan alto de memoria?
He notado que no utilizas int y uint8_t de forma consistente.
Arduino Uno trabaja con 16 bits y Arduino 4 con 32.
Es posible que en otras partes del código que publicaste y después borraste haya algo (operaciones aritméticas, tal vez) que sea sensible a esta diferencia.
No es incorrecto como los has escrito, es una cuestión de gustos.
Por lógica se espera que uses un tipo de datos en los contadores (siempre que el rango de datos lo permita, claro).
Pero si en un for() usas byte y en otro int no está mal pero es deseable que uses uno u otro pero no ambos por una cuestión de claridad y consistencia.
Por ejemplo, en general uso byte (o sea *uint8_t) salvo que necesite contemplar valores negativos o que excedan el rango del byte (255).