Cześć. Czy ktoś może mi wytłumaczyć jak to działa, że tym samym guzikiem na pilocie dioda się włącza i wyłącza.
Umiem napisać program który jednym guzikiem włącza, a drugim wyłącza i go rozumiem, a teraz chciałbym zrozumieć jak działa program poniżej, którym zapala i gasi diodę tym samym guzikiem.
Czy to ma związek z zapisem "int diodaStatus = LOW;" i "diodaStatus = ~diodaStatus;"?
#include <IRremote.h>
#define irPin 11
IRrecv irrecv(irPin);
decode_results results;
#define diodaPin 8
#define diodaPin 3
#define diodaPin 13
int diodaStatus = LOW;
void setup() {
Serial.begin(9600);
irrecv.enableIRIn();
pinMode(3, OUTPUT);
pinMode(8, OUTPUT);
pinMode(13, OUTPUT);
}
void loop() {
if (irrecv.decode(&results)) {
switch (results.value) {
case 0xFF40BF:
Serial.println("2");
diodaStatus = ~diodaStatus;
digitalWrite(3, diodaStatus);
delay(250);
break;
case 0xFF807F:
Serial.println("1");
diodaStatus = ~diodaStatus;
digitalWrite(8, diodaStatus);
delay(250);
break;
case 0xFFC03F:
Serial.println("3");
diodaStatus = ~diodaStatus;
digitalWrite(13, diodaStatus);
delay(25);
break;
}
irrecv.resume();
}
}
Umiem napisać program który jednym guzikiem włącza, a drugim wyłącza i go rozumiem, a teraz chciałbym zrozumieć jak działa program poniżej, którym zapala i gasi diodę tym samym guzikiem.
Czy to ma związek z zapisem "int diodaStatus = LOW;" i "diodaStatus = ~diodaStatus;"?
#include <IRremote.h>
#define irPin 11
IRrecv irrecv(irPin);
decode_results results;
#define diodaPin 8
#define diodaPin 3
#define diodaPin 13
int diodaStatus = LOW;
void setup() {
Serial.begin(9600);
irrecv.enableIRIn();
pinMode(3, OUTPUT);
pinMode(8, OUTPUT);
pinMode(13, OUTPUT);
}
void loop() {
if (irrecv.decode(&results)) {
switch (results.value) {
case 0xFF40BF:
Serial.println("2");
diodaStatus = ~diodaStatus;
digitalWrite(3, diodaStatus);
delay(250);
break;
case 0xFF807F:
Serial.println("1");
diodaStatus = ~diodaStatus;
digitalWrite(8, diodaStatus);
delay(250);
break;
case 0xFFC03F:
Serial.println("3");
diodaStatus = ~diodaStatus;
digitalWrite(13, diodaStatus);
delay(25);
break;
}
irrecv.resume();
}
}