Go Down

Topic: Como comunicar dos arduinos ? (Read 25257 times) previous topic - next topic

igorreal

#30
May 24, 2010, 03:45 pm Last Edit: May 24, 2010, 09:01 pm by igorreal Reason: 1
Cristal,

Mírate esto:
http://www.earthshineelectronics.com/files/ASKManualRev3.pdf
Código:
http://www.earthshineelectronics.com/files/EDASKCode.zip


Proyecto 10 (Serial Controlled RGB Lamp). Podrás sacar unas buenas ideas....


;)

Cristal

Igor,

Me han gustado mucho los ejemplos pero infelizmente no solucionan mis problemas.  Quando pruebo por la serial utilizando el Realterm todo me funciona.

Te explico lo que quiero:
La parte del Maestro me funciona perfectamente, cuando cambio el dip switch el maestro me envia el codigo correcto.  Estoy utilizando tu codigo, apenas he cambiado el pulsador por un dip switch.  Creo que la figura 1 es mas o menos como funciona el Maestro.

Quando utilizo algo como en la figura 2, tampoco tengo problemas, o sea, por ejemplo,  si envio un "zero", apago mi led, si envio un "uno" enciendo mi led, todo funciona perfectamente.

En la figura 3 es aonde empiezan mis problemas.  Quando envio un "dos" deveria entrar en la rutina de fade, y cuando seleciono outra vez un "zero", el led deveria apagarse.

Lo que ocurre es que la rutina de fade es un loop, cierto? entonces tengo que en salir un cierto momento del loop, chequear si me ha llegado algo en la serial, si no me ha llegado nada, devo volver aonde estava en el loop y seguir la secuencia de fade, si me ha llegado algo en la serial, por ejmplo el "zero", salgo del loop definitivamente y apago el led.  Me acompañas?

Bueno, esto me funciona cuando pruebo el esclavo DENTRO de Arduino y con el Realterm, quando pongo el "esclavo" en el circuito RS485, la funcion fade no funciona, el LED queda apagado todo el tiempo.

Con el mismo esclavo dentro de mi circuito RS485, cuando envio un "uno" el LED se enciende y cuando envio un "zero" el LED se apaga.

Algo pasa cuando  voy a chequear si he recibido algo en la serial de dentro del loop, o la rutina  se cuelga en algun punto o estoy siempre empezando la rutina por eso no se enciende nada.

Ahora has compreendido mi problema? :D

Saludos,









igorreal

#32
May 25, 2010, 10:34 am Last Edit: May 25, 2010, 10:35 am by igorreal Reason: 1
Si, entendido.... No te queda otra que ir poniendo puntos de debug en tu programa y sacandolo la informacion por puerto serie para ver que esta pasando..... :o

Si tienes una placa de diecimila, puedes quitarle el microcontrolador (para usar solo el chip FTDI conversor USB-serie) y ponerle un max485 siempre configurado como receptor. Asi puedes monitorizar la info del bus con el Realterm.


Saludos



Igor R.

Cristal

Infelizmente no tengo otra placa diecimila, mas como estoy utilizando los ATMegas en un circuito proprio, pudeo seguir tu idea.

Tienes idéa si cuando estoy dentro de un loop ejecutando algo, si recibo datos por la serial, los datos son almacenados independientemente de la rutina que este ejetuando? ::)

Si eso no ocurre, estoy seguro que ese es mi problema.

Cristal

Hola a todos,

Finalmente, el circuito completo funciona, el truco fue sacar todos los programas del esclavo y ponerlos en el maestro, en el esclavo sólo los mandos para activar los LEDs. ;D

Gracias a todos y especialmente a Igor por las ayudas.

Saludos,

igorreal

Me alegro!!!!  ;)

Cuando hagas tu proyecto, publicalo para que pueda servir a otros.... :)



Saludos



Igor R.

Go Up