Ayuda con problema de comunicación Arduino

Todo cuanto tiene que ver con la obtención, almacenamiento y proceso de la información digital, sus aplicaciones y el software y hardware utilizado.
Responder
Mensaje
Autor
mmcompu
Mensajes: 618
Registrado: Vie Nov 13, 2009 4:27 am
País: mexico
Ciudad: acapulco

Ayuda con problema de comunicación Arduino

#1 Mensaje por mmcompu »

Hola conforeros, estoy haciendo un juego para niños para la Feria de las Ciencias de mi hijo, es una tabla con dos botones de tipo "el que oprima primero gana", la mecánica es que, en cada turno, el Arduino elige un valor aleatorio x, luego enciende unos leds rojos x veces, tocando un beep en cada una y avisando en la pantalla que no presionen, al llegar a x+1 enciende los leds verdes, beepea y avisa que ahora sí, entonces, el primero que oprima el botón es el ganador, pero si se adelantan y lo oprimen antes, pierden, dándole el punto al adversario.

Ya todo estaba funcionando adecuadamente, salvo por un mensaje de inicio, estuve depurando con el Arduino conectado a una Laptop, pero, de repente, al subir un sketch, dejó de reconocer el puerto USB, enviando un error de Windows, probé cambiando el cable USB, cambiando a otra computadora y el error persiste, en cuanto conecto el Arduino zaz, mensaje de error de Windows del tipo "el dispositivo falló y no será reconocido".

Dando por hecho que el Arduino había fallado conecté otro, Windows lo reconoce, el entorno lo acepta, subo el sketch y justo un instante antes de poner el mensaje de "subido", otra vez Windows manda error y desde entonces la placa también es inaccesible.

Es claro que algo en mi sketch está deshabilitando el puerto USB, pero la placa sigue funcionando bien hasta donde la tenía programada. Alguna idea de por dónde empezar?

Son Arduinos Leonardo, estoy usando los siguientes pines:

0 - Botón maestro.
1 - Desconectado.
2 - Botón del jugador 1 (INT 0) manejando los pulsos de ambos botones como interrupciones.
3 - Botón del jugador 2 (INT 1)
4 y 5 - Desconectado.
6 - Bocina pequeña 8 ohms.
7 al 12 - Pantalla LCD 16x2.

De antemano mil gracias.
Creo en la evidencia, creeré cualquier cosa, sin importar cuán extraña o ridícula sea, siempre que haya evidencias de ello, cuanto más extraña o ridícula sea, sin embargo, más sólidas tendrán que ser las evidencias.

Avatar de Usuario
heli
Mensajes: 1946
Registrado: Mié Sep 06, 2006 7:28 am
País: España
Ciudad: Alcalá de Henares
Ubicación: Alcala de Henares (Madrid, España)
Contactar:

Re: Ayuda con problema de comunicación Arduino

#2 Mensaje por heli »

Buenos dias mmcompu.

El problema es estas usando el PIN 0 para el "botón maestro". Prueba a usar el PIN 4 ó el PIN 5 para esa función.

En Arduino UNO o Arduino Leonardo no puedes usar los pines 0 ni 1 para pulsadores o salidas generales porque se usan para la comunicación serie. Cuando tu sketch programa el PIN 0 como entrada general deja de funcionar como pin de la UART y no ya no puedes comunicar con el ATMEGA.
Estos pines deben dejarse sin uso si quieres mantener la comunicación serie, si los usas para otra cosa pierdes esa función y no puedes decargar los sketch.
El pin 0 esta rotulado con RX y el pin 1 con TX

Imagen
¡No es imposible, lo que pasa es que no sabes como hacerlo!
Aka: no es difícil si sabes como.
http://heli.xbot.es

mmcompu
Mensajes: 618
Registrado: Vie Nov 13, 2009 4:27 am
País: mexico
Ciudad: acapulco

Re: Ayuda con problema de comunicación Arduino

#3 Mensaje por mmcompu »

Mil gracias, ahora... ¿alguna idea de cómo recuperar los dos que ya dejé sin serial?
Creo en la evidencia, creeré cualquier cosa, sin importar cuán extraña o ridícula sea, siempre que haya evidencias de ello, cuanto más extraña o ridícula sea, sin embargo, más sólidas tendrán que ser las evidencias.

Avatar de Usuario
heli
Mensajes: 1946
Registrado: Mié Sep 06, 2006 7:28 am
País: España
Ciudad: Alcalá de Henares
Ubicación: Alcala de Henares (Madrid, España)
Contactar:

Re: Ayuda con problema de comunicación Arduino

#4 Mensaje por heli »

Buf!
En los Arduino UNo esto tiene facil solución porque tienen otro micro dedicado a la conversión USB-SERIE y el proporciona el reset al ATMEGA328.
Pero los Leonardo solo tienen un ATmega32u4 que lleva el USB y el bootloader interno. Los pines TX y RX no deberían interferir en la comunicación serie en esta placa (en la ARDUINO UNO sí que lo hacen, por hardware).
Quizás se haya corrompido el bootloader, puedes usar la opción de quemar bootloader.

Con este método programas el chip ATmega32u4 del Leonardo desde otro arduino que funcione:

Imagen
http://www.instructables.com/id/Overvie ... cess-and-/
¡No es imposible, lo que pasa es que no sabes como hacerlo!
Aka: no es difícil si sabes como.
http://heli.xbot.es

mmcompu
Mensajes: 618
Registrado: Vie Nov 13, 2009 4:27 am
País: mexico
Ciudad: acapulco

Re: Ayuda con problema de comunicación Arduino

#5 Mensaje por mmcompu »

Gracias, ya lo resolví, por si a alguien más le ocurre:

Entré a tutoriales para saber cómo borrar el sketch de la placa y reemplazarlo con un bootloader en limpio.

En teoría muy facilito, se conecta una placa funcional de cualquier tipo, se le sube el sketch "Arduino ISP" de los ejemplos del IDE oficial, se cablea la placa a reprogramar vía conector ICSP o, en Arduino UNO y Mega, con los pines que duplican este conector, se conecta el pin 10 de la placa programadora al reset de la placa a programar, en herramientas/placa se elige el tipo de placa que se va a programar (aunque este conectada una de otro tipo), se elige "Arduino como ISP" en las opciones de programador y se le da a quemar bootloader, todo bien, excepto que de Leonardo a Leonardo no funciona.

Lo que sí funcionó prácticamente a la primera fue un truco genial que vi en un tutorial, se carga un sketch pequeñito (el tipo usó el ejemplo "Blink") se conecta la placa a programar, da mensaje de error, lo ignoras, le das a subir, inicia compilación y justo cuando está terminando de compilar oprimes reset en la placa, esto detiene la ejecución del programa y con ello cualquier error que estuviera bloqueando la comunicación, entonces la computadora reconoce el puerto y el IDE graba el nuevo sketch sin ningún problema.
Creo en la evidencia, creeré cualquier cosa, sin importar cuán extraña o ridícula sea, siempre que haya evidencias de ello, cuanto más extraña o ridícula sea, sin embargo, más sólidas tendrán que ser las evidencias.

mmcompu
Mensajes: 618
Registrado: Vie Nov 13, 2009 4:27 am
País: mexico
Ciudad: acapulco

Re: Ayuda con problema de comunicación Arduino

#6 Mensaje por mmcompu »

Actualizando: El problema lo generaba el uso de Interrupts() y noInterrupts(), estuve subiendo mi código con el truco de oprimir reset, hasta que llegué a la parte donde deshabilitaba las interrupciones para prevenir que ya registrado el primer push a un botón se oprimiera el otro, esto con el fin de registrar solo al primero, tuve que resolver este asunto de quién oprimió primero dentro del bloque loop, porque sencillamente no hubo modo de deshabilitar las interrupciones sin que el puerto serie se pierda, no se a qué se deba, seguramente estoy haciendo algo mal, pero seguiré investigando después de la feria, que el tiempo es poco y aún nos falta hacer un vending de dulces casero para premiar al ganador del jueguito de la tabla, en cuanto pueda subo fotos de todo el proyecto.

De nuevo mil gracias por la ayuda.

PD: la imagen que subiste está genial como referencia.
Creo en la evidencia, creeré cualquier cosa, sin importar cuán extraña o ridícula sea, siempre que haya evidencias de ello, cuanto más extraña o ridícula sea, sin embargo, más sólidas tendrán que ser las evidencias.

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados