Utilizando un Arduino como Maestro y otros Arduinos como Multiplexores

La siguiente duda me asalta tras hacer otra pregunta sobre cuánto se puede exprimir un Arduino en cuanto a voltaje/amperios. Se puede ver el tema en este hilo: http://arduino.cc/forum/index.php/topic,88288.0.html

En mi proyecto tengo que controlar entre otros los siguientes componentes:

  • 10 leds indicadores (de un único color) que se pueden encender de manera independiente y más de uno a la vez (había pensado un utilizar un chip MAX7219/MAX7221 ó icm7218Diji para que técnicamente sólo esté encendido un led cada vez aunque al ojo humano se vean iluminados todos los que deban estarlo en ese momento).
  • 4 relés, para controlar con ellos un total de 12 bombillas de 220v (3 bombillas por relé).
  • 10 dígitos de 7 segmentos led (4 para dos marcadores de 2 dígitos, 3 para un reloj X:XX, 2 para indicar otro dato y el último dígito para otro dato más). Creo que para esto tendré que utilizar al menos otros dos chips tipo MAX7219/MAX7221 ó icm7218Diji (a no ser que haya un chip capáz de controlar al menos 10 dígitos de 7 segmentos led).
  • 2 potenciómetros.
  • 1 altavoz.
  • 5 botones pulsadores.
  • Un Shield Ethernet.
  • Un Shield Blutooth.

Tras ver las respuestas en el otro tema y dada mi ignorancia respecto a separar Arduino (como controlador) del resto de componentes respecto a lo que necesidades energéticas se refiere se me plantea la siguiente opción:

Sólo se me ocurre utilizar más de un arduino en el proyecto, y utilizar los otros como si fuesen multiplexores.

Mi idea es utilizar Arduinos Esclavos en los que varios pines analógicos como entradas se utilizarían para recibir las órdenes del Arduino maestro y así repartir la carga energética entre varios arduinos, uno para leds, otro para dígitos, quizás el maestro sólo para los shields.

En el Arduino Maestro entiendo yo que usando salidas PWM (entre los 0v y los 5v) podría usar los rangos de voltaje en los receptores analógicos de los Esclavos para interpretar bastantes estados posibles (técnicamente 10 bits = 1024 opciones por pin analógico).

Entiendo que pretender utilizar los 1024 de forma efetiva es imposible, ya que una salida PWM puede tener cierto margen de error, entonces se me ocurre analizar variaciones en el conversor analógico/digital por ejemplo en rangos de cada 128 valores, lo que entre 0 y 1024 dejaría 8 rangos efectivos (0-127, 128-255, 256-383, 384-511, 512-639, 640-767, 768-895, 896-1023) => 3 bits por cada analógico.

Con 3 entradas analógicas pudiendo distinguir 8 rangos cada una, podría controlar 8*8*8 = 512 variaciones, díría que más que de sobra.

¿Estoy liándola? ¿Estoy meando fuera del tiesto?

Gracias por vuestra comprensión, un saludo, HerniHdez

Yo creo que eso es complicaste la vida, ya que puedes hacer un bus con los pines del Serial ( TX y RX ) para distancias cortas, sino tienes otras alternativas como El RS-485 o el bus CAN.

JRodrigo: Yo creo que eso es complicaste la vida, ya que puedes hacer un bus con los pines del Serial ( TX y RX ) para distancias cortas, sino tienes otras alternativas como El RS-485 o el bus CAN.

¿Y eso no implica estar en el Arduino Maestro permanentemente mandando y codificando datos a través del Serial para mantener el estado de los cada uno de los Arduinos Esclavos?

Yo entiendo que de la forma que digo yo, si no hay que variar el estado de los Arduinos Esclavos, no habría ni que tocar los valores de las salidas PWM (que segurían manteniendo el estado anterior tras empezar de nuevo el loop) que van de las salidas digitales del Maestro a los analógicos de los Esclavos, que sólo tendría que seguir interpretando la misma situación.

Gracias, un saludo, HerniHdez

Se me olvido comentarte que las salidas PWM ( "Modulación por Ancho de Pulso", en ingles "Pulse Width Modulation" ) no te dan un voltaje de 0 a 5 V, su salida es de 5V >> http://arduino.cc/es/Tutorial/PWM

HerniHdez: ¿Y eso no implica estar en el Arduino Maestro permanentemente mandando y codificando datos a través del Serial para mantener el estado de los cada uno de los Arduinos Esclavos?

No tiene por que todo depende de la programación.

JRodrigo: Se me olvido comentarte que las salidas PWM ( "Modulación por Ancho de Pulso", en ingles "Pulse Width Modulation" ) no te dan un voltaje de 0 a 5 V, su salida es de 5V >> http://arduino.cc/es/Tutorial/PWM

HerniHdez: ¿Y eso no implica estar en el Arduino Maestro permanentemente mandando y codificando datos a través del Serial para mantener el estado de los cada uno de los Arduinos Esclavos?

No tiene por que todo depende de la programación.

Joer... no me ha hecho ni falta ver el tutorial, ya me acuerdo que lo que hace es mandar 5V durante X tiempo... vayaaaaaaaa =( casi me da por retirarme del proyecto.

Y lo de la programación, supongo que te referirás "puede" a usar variables para ir almacenando los estados y no tener que andar mirando siempre el bus o como estén interconectados, y sólo modificar las variables si se detectan cambios en la info recibida del bus, y que los programas de los Arduinos Esclavos tiren de esas variables.

Gracias, un saludo, HerniHdez