Witam,
Staram się zrobić oświetlenie w domu na pilota. Chciałbym aby działało zdalnie oraz ręcznie. Udało mi się wykonać większość wymagań, jednak ostatnim problemem jest to że przycisk trzeba wcisnąć dwa razy żeby światło zgasło/zaświeciło. Na pilocie działa dobrze - jedno wcisniecie, jedna zmiana. Oto kod:
#define irPin 11
IRrecv irrecv(irPin);
decode_results results;
int switchPin = 2;
int ledPin = 13;
boolean currentButton = LOW;
boolean lastButton = LOW;
boolean ledOn = false;
boolean debounce(boolean last)
{
boolean current = digitalRead(switchPin);
if (current != lastButton)
{
delay(5);
current = digitalRead(switchPin);
}
return current;
}
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn();
pinMode(switchPin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
}
void loop()
{
sterowanieReczne();
sterowaniePilotem();
}
void sterowanieReczne() {
currentButton = debounce(lastButton);
if (currentButton == HIGH && lastButton == LOW) ledOn = !ledOn;
lastButton = currentButton;
digitalWrite(ledPin, ledOn);
}
void sterowaniePilotem() {
if (irrecv.decode(&results)) {
switch (results.value) {
case 0x803F00FF:
Serial.println("Nacisnieto klawisz nr. 1");
digitalWrite(ledPin, ledOn);
if (lastButton == LOW) {
lastButton = HIGH;
} else {
lastButton = LOW;
}
lastButton = LOW;
break;
}
irrecv.resume();
}
}
Co może być nie tak?
Dziękuję oraz pozdrawiam :)