Buenas a todos.
Estoy comunicando mi Arduino UNO (maestro) con un ATtiny que he programado (usando UNO como ISP, está chequeado su correcto funcionamiento).
Mi problema viene cuando intento comunicarlos. He implementado un par de códigos, que os dejo a continuación. Para el caso del Arduino UNO he empleado la clásica librería Wire.h mientras que para ATtiny85 he empleado el análogo TinyWireS.h.
He probado a analizar la trama con un analizador lógico (Saleae 24MHz, 8ch) he podido ver que se envía adecuadamente. Por lo que el problema es del esclavo, supongo. El LED conectado a su pin #6 no da respuesta alguna (permanece apagado).
Aquí el código del esclavo:
#include <TinyWireS.h>
#define I2C_SLAVE_ADDR 0x03 //Dirección del esclavo
#define LED_PIN 6
byte byteRcvd = 0;
void setup() {
pinMode(LED_PIN,OUTPUT);
digitalWrite(LED_PIN,LOW);
TinyWireS.begin(I2C_SLAVE_ADDR);
}
void loop() {
if(TinyWireS.available()){
byteRcvd = TinyWireS.receive();
if(byteRcvd == 0){
digitalWrite(LED_PIN,LOW);
}
else{
digitalWrite(LED_PIN,HIGH);
}
}
}
Y aquí el del maestro:
#include <Wire.h>
#define SLAVE_ADDR 0x03
byte byteToSend = 0;
void setup() {
Wire.begin();
}
void loop() {
byteToSend = 0;
Wire.beginTransmission(SLAVE_ADDR);
Wire.write(byteToSend);
Wire.endTransmission();
delay(1000);
byteToSend = 1;
Wire.beginTransmission(SLAVE_ADDR);
Wire.write(byteToSend);
Wire.endTransmission();
delay(1000);
}
Me he basado en ciertos hilos de este mismo foro, además de googlear un poco, y no ha habido suerte (igual soy muy torpe). Ejemplos de estos hilos son:
http://forum.arduino.cc/index.php?topic=202440.0
https://forum.arduino.cc/index.php?topic=162646.0
http://forum.arduino.cc/index.php/topic,160680.0.html
http://forum.arduino.cc/index.php?topic=132566.0
Gracias por vuestra ayuda.
Saludos.
EDIT: Olvidé añadir los códigos, sí que voy a ser torpe jaja
He tardado 5 min en añadirlos porque el foro no me dejaba postear antes.
EDIT2: Pongo captura de la trama: