Close

Odpověď na: Kontrola kódu

Úvodní stránka Fórum Vaše projekty Arduino Kontrola kódu Odpověď na: Kontrola kódu

#11586
posjirka
Účastník

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);
     
    }
  }
}