Remote Control Light switch (ARDUINO) (4 / 8 steg)
Steg 4: Arduino koden
Så är här koden för att faktiskt göra detta projekt arbete, se till att du har hämtat IR remote biblioteket först eller det kommer inte att fungera.
Snabb förklaring till koden:
När tryckknappen trycks den röda lysdioden tänds och arduino kommer vänta någon IR-signalen att komma in. När en signal detekteras den signalen får sparas och används för att växla servo.
Servo är inställd att alltid vara i 90 grader tills signalen tas emot, det går sedan att antingen 180 grader eller 1 grad vilket gör servo arm slog tråd, stänger av ljuset på och.
#include < IRremote.h >
#include < Servo.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 servoPin = 9;
int enableOutput = 0;
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
Servo myservo;
int pos = 0;
void setup()
{
myservo.attach(9);
Serial.BEGIN(9600);
irrecv.enableIRIn(); Starta mottagaren
pinMode (ledPin, produktionen); initiera LED stift som en utgång:
pinMode (outputPin, produktionen); initiera tryckknapp PIN-koden som indata:
pinMode (buttonPin, ingång); initiera tryckknapp PIN-koden som indata:
}
void loop()
{buttonState = digitalRead(buttonPin); / / läsa statligt av tryckknapp värdet:
om (irrecv.decode (& resultat)) {/ / om en signal upptäcks, lagra värdet
CurrentValue = (results.value);
Serial.println ("kod fick"). visar lagrade kod för referens
om det mottagna värdet är lika med programmerade värdet, sedan växla utdata staten
IF(CurrentValue == StoredCode) {
enableOutput = 1;
}
om (RecordState == 1) {/ / om inspelningsfunktionen aktiveras lagra aktuella värde som programmerat värde StoredCode = CurrentValue;
RecordState = 0;
digitalWrite (ledPin, låg);
Serial.println(StoredCode); visar lagrade kod för referens
}
Delay(500);
irrecv.Resume(); Ta emot nästa värde
}
annat //if ingen signal upptäcks, sedan det aktuella värdet är 0
{CurrentValue = 0;
} om (buttonState == hög) {/ / kolla om inspelningsknappen trycks.
om det är, är buttonState hög:
medan (buttonState == hög) buttonState = digitalRead(buttonPin); vänta på knappen att vara utsläppt digitalWrite (ledPin, hög); slå på lampan att ange att inspelningsfunktionen är på
RecordState = 1;
}
om ((outputState == 1) & &(enableOutput==1)) {//set lämplig utgång staten Serial.println("State=1,Enable=1"); //displays lagras kod för referens
POS = 1;
myservo.write(POS);
Delay(1000);
POS = 90.
myservo.write(POS);
Delay(15);
digitalWrite (outputPin, hög); outputState = 0;
}
annars om ((outputState == 0) & &(enableOutput==1))
{
Serial.println("state=0,enable=1"); visar lagrade kod
POS = 180;
myservo.write(POS);
Delay(1000);
POS = 90.
myservo.write(POS);
Delay(15);
digitalWrite (outputPin, låg);
outputState = 1;
}
enableOutput = 0;
}