Paso 2: Programar los esclavos
Porque estoy usando virutas de ATTiny84, es necesario utilizar el encabezado de TinyWireS (google, no es difícil de encontrar). También, porque la ATTiny84 está actuando como un esclavo sólo, esto es todo lo que necesita.
Cada uno de los tres chips de ATTiny84 reciben una dirección única en la red:
#define I2C_SLAVE_ADDRESS 0 x 1
#define I2C_SLAVE_ADDRESS 0 x 2
#define I2C_SLAVE_ADDRESS 0x3
La línea #define en el bosquejo es la única línea que difiere en este ejemplo.
Mi ejemplo se diferencia del bosquejo fuente que tomé de El ingeniero errante en que estoy conectando tres ATTiny84 y he incluido un LED indicador que alterna el encendido y apagado cuando recibe instrucción de maestro I2C.
En el croquis adjunto, he añadido alguna lógica que determina el estado del LED basado en la divisibilidad de la "i" de 2, usando un simple modulo truco:
void requestEvent()
{if(i%2==0) {digitalWrite (LEDPin, LOW);} else {digitalWrite (LEDPin, alto);} TinyWireS.send(i); i ++; }
Si dividido por 2 resultados en 0, entonces gire el LED apagado, si no... encender, entonces me envía al maestro I2C.