Grazie della risposta Uwe!
Tuttavia ho semplificato al massimo il codice (e mi sono reso conto di alcuni errori imbarazzanti
), ma anche in questa situazione sembra che l'attiny non trasmetta nulla e dalla seriale di arduino leggo così : "Dato ricevuto : " :~
A questo punto ho paura di aver fatto i collegamenti sbagliati : ho collegato all'Attiny l'alimentazione dello stesso arduino, il pin A5 al pin 2 dell'attiny e il pin A4 al pin 0 con resistenze da pull-up da 1K. Ho sbagliato qualcosa?
Ecco il codice dell'Attiny Slave :
#include <TinyWireS.h>
#define ADDRESS 0x13 // Indirizzo I2C
const byte led1 = 1;
int value = 30;
void setup() {
TinyWireS.begin(ADDRESS); // Inizializzo la comunizazione I2C
pinMode(led1, OUTPUT);
}
void loop() {
TinyWireS.onRequest(Send); // Alla richiesta richiama Send()
}
void Send() {
TinyWireS.send(value); // Invia un valore di prova
digitalWrite(led1, HIGH);
delay(100);
digitalWrite(led1, LOW);
delay(300);
}
Ecco quello del Master lato Arduino :
#include <Wire.h>
#define ADDRESS 0x13
int i = 0;
char input[3];
void setup()
{
Wire.begin(); // join i2c bus (address optional for master)
Serial.begin(9600); // start serial for output
}
void loop()
{
Wire.requestFrom(ADDRESS, 6); // request 6 bytes from slave device 0x13
if(Wire.available()>0)
{
for (i; i<Wire.available(); i++){
input[i] = Wire.read();
}
Serial.print("Dato ricevuto : ");
Serial.println(input);
i=0;
delay(500);
}
}