asi bude problém v kodu pro SLAVE. používáš tam
tlacitko1 = Wire.read();
tlacitko2 = Wire.read();
při čtení streamu. To ti nepůjde. Přečte 1 Byte a očekává další, ale ten nepřijde.
Musíš si přečíst pouze 1 a pak rozhodnout co je to zač.
upravil bych to asi takto:
#include <Wire.h>
const byte slaveId = 1;
void setup()
{
Serial.begin(9600);
Wire.begin(slaveId);
Wire.onReceive(receiveEvent);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
}
void loop()
{
}
void receiveEvent(int howMany)
{
char tlacitko1;
// uprava char tlacitko2;
while(Wire.available() > 0)
{
tlacitko1 = Wire.read();
// uprava tlacitko2 = Wire.read();
if (tlacitko1 == 'a')
{
Serial.println("=> Tlacitko1 = zapnuto");
digitalWrite(8, HIGH);
delay(1000);
}
else if (tlacitko1 == 'b') // uprava
{
Serial.println("=> Tlacitko2 = zapnuto");
digitalWrite(9, HIGH);
delay(1000);
}
else {
digitalWrite(8, LOW);
digitalWrite(9, LOW);
delay(100);
}
}
}