Hola, llevo usando el Arduino al rededor de 1 año y medio, tengo un proyecto de una máquina para tostar café. Estoy realizando el interfaz humano - máquina, la estoy haciendo con un Arduino Mega y una Pantalla TFT de 3,95 pulgadas; El esclavo es otro arduino mega el cu.lo de reles, etc. Para que inicie el proceso se envian datos al presionar el boton de comenzar proceso y el Arduino esclavo comienza (esto ya lo hice) . El problema es que necesito leer datos de temperatura y tiempo, y segun por lo que leo el Maestro Writer solo podria enviar datos, no recibirlos. Mi pregunta es, ¿Puedo con estos dos arduino Mega, realizar lo que quiero? es decir, que en la pantalla al yo presionar el boton "Comenzar" inicie el proceso, pero que también lea los sensores cuando este en otra pantalla? es decir, que el maestro en un momento sea Writer, y en otro momento sea Receiver, esto implicaría que el esclavo en un momento es Reader y en otro Sender... ¿se puede? Gracias de antemano
Perdón, corrijo: "El esclavo es otro arduino mega el cual controla servomotores, señal sonora y un modulo de reles,etc. "
Hablas de interconectar dos Arduinos... pero con qué protocolo se comunican?
Recuerda que tienes UART (serial), I2C (TWI), SPI y los que se implementan por software o hardware externo (como OneWire, CAN, USB, DMX, MIDI, etc.)
Hola Lucario, sí hablo de interconectar dos Arduinos, en este caso estoy usando el protocolo I2C (usando la liberia Wire.h).. No estoy muy bie enterado de los protocolos de comunicación, de cual conviene usar en determinado caso, ventajas y desventajas; creo que me tomaré un tiempo para leerlos y decidir que protocolo me conviene más, pero muchas gracias por tu respuesta porque dió pie para yo saber otra cosas.. adjunto fotos de lo que quiero hacer (porque creo que es algo muy común en el mundo de las máquinas) por si otra persona está interesada
Comienza con la pantalla de bienvenida donde se decide que módo usar.
Esta es la pantalla del control manual: cuando se abra ésta pantalla se debe dar una comunicación en donde el Arduino de la pantalla lea el estado de los sensores y actuadores que estan en el otro Arduino.
Esta es la pantalla de resumen donde se selecciona el modo automático, cuando se presiona comenzar se realiza el envio de datos a el Arduino con actuadores para que comience su función.
Finalmente ésta es la pantalla donde como en el control manual, el arduino Maestro (que sería el de la pantalla) recibe informacion
Creo que debí poner otro título como: " Creación de interfaz básica para máquinas, que protocolo es más conveniente?"
La idea es eso, encontrar el protocolo más adecuado para ésta función... soy ingeniero mecánico, tal vez me ayuden a familiarizarme con las cuestiones de velocidad de envio de datos, comunicación duplex o half duplex, que protocolos me dan comunicación bidireccional? en éste caso necesito comunicación bidireccional pero no en el mismo instante de tiempo como anteriormente expliqué.
Bueno primero te sugiero que edites tu último post cambiando los links por los que ofrece Tinypic para "Código IMG para foros y paneles de mensajes".
Le hace más fácil la vida a cualquiera ver las imágenes directamente en el post que tener que abrir más pestañas en el navegador.
Para interconectar dos Arduinos vía I2C, mira este ejemplo
SAbril:
Creo que debí poner otro título como: " Creación de interfaz básica para máquinas, que protocolo es más conveniente?"
Edita el título del primer post (el que está más arriba) y modifícalo.
Respecto al protocolo: tienes dos opciones: serial o I2C.
Ambos ocupan dos pines (más la interconexión a tierra); pero creo que I2C es "semi-dúplex" porque según los ejemplos de Wire, los eventos de envíar y recibir no ocurren al mismo tiempo (además de que los bits viajan solo mediante un cable; el otro es para pulsos del reloj).
Pero eso no importa si el envío de datos al esclavo se hace sólo cuando es necesario; y la solicitud de datos del esclavo se hace regularmente.
Si piensas que en verdad es necesaria una comunicación "full-duplex", entonces ve por el protocolo serial.
Personalmente, no tengo experiencia usando I2C, pero se ve fácil de manejar.
Por otra parte, con comunicación serial ya hasta tengo mentalizado como trabajarlo si el del proyecto fuera yo.
Y bueno, esa es mi opinión. La decisión final la tomarás tú... ![]()
PD: SPI no lo menciono porque es más o menos difícil de manejar (aparte de que ocupa 4 pines + tierra). De hecho se suele usar pero en aplicaciones donde se requiere enviar gran cantidad de datos en un tiempo muy reducido (de ahí que el módulo Ethernet, tarjetas SD y tiras LED "direccionables" usen SPI).
En tu caso no hace falta tanta velocidad porque no creo que sea necesario actualizar las lecturas de los sensores cada 5 microsegundos. ![]()