Styr någon krets med en TV-fjärrkontroll (och en Arduino) (3 / 9 steg)
Steg 3: Arduino koden
#include < IRremote.h >
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results resultat.
osignerade långa CurrentValue = 0;
osignerade långa StoredCode = 0;
CONST int buttonPin = 6; numrera av tryckknapp PIN-koden
CONST int ledPin = 4; antal LED stift
CONST int outputPin = 3; antal LED utgångsstiftet
CONST int relayPin = 2; numrera av relä stift
int buttonState = 0; variabel för att läsa tryckknapp status
int RecordState = 0; är mottagaren i inspelningsläge
int outputState = 1; är produktionen på eller av
void setup()
{
Serial.BEGIN(9600);
irrecv.enableIRIn(); Starta mottagaren
initiera LED stift som en utgång:
pinMode (ledPin, produktionen);
initiera tryckknapp PIN-koden som indata:
pinMode (outputPin, produktionen);
initiera tryckknapp stiftet som indata: pinMode (buttonPin, ingång);
pinMode (relayPin, produktionen);
initiera tryckknapp stiftet som indata: pinMode (buttonPin, ingång);
}
void loop() {
Läs statligt av tryckknapp värdet:
buttonState = digitalRead(buttonPin);
om en signal upptäcks, lagra värdet
om (irrecv.decode (& resultat)) {
CurrentValue = (results.value);
om det mottagna värdet är lika med programmerade värdet, sedan växla utdata staten
IF(CurrentValue == StoredCode) {
outputState =! outputState;
}
inspelningsfunktionen aktiveras lagra aktuella värde som programmerat värde
om (RecordState == 1) {
StoredCode = CurrentValue;
RecordState = 0;
digitalWrite (ledPin, låg);
Serial.println(StoredCode); visar lagrade kod för referens
}
Ta emot nästa värde
irrecv.Resume();
}
annat //if ingen signal upptäcks, sedan det aktuella värdet är 0
{
CurrentValue = 0;
}
Kontrollera om inspelningsknappen trycks.
om det är, är buttonState hög:
om (buttonState == hög) {
vänta på knappen släpps
medan (buttonState == hög) {
buttonState = digitalRead(buttonPin);
}
slå på lampan att ange att inspelningsfunktionen är på
digitalWrite (ledPin, hög);
RecordState = 1;
}
ställa in lämplig utgång
IF(outputState == 1) {
digitalWrite (outputPin, hög);
digitalWrite (relayPin, hög);
}
annat {
digitalWrite (outputPin, låg);
digitalWrite (relayPin, låg);
}
}