Stap 4: De Code van de Arduino
Dus is hier de code eigenlijk dit project werken, zorg ervoor dat u hebt gedownload van de externe mediabibliotheek van IR eerst of het zal niet werken.
Korte uitleg van de code:
Wanneer u op de drukknop drukt de rode LED zal oplichten, en de arduino zal vervolgens wachten op elke IR signaal te komen. Zodra een signaal wordt gedetecteerd dat signaal wordt opgeslagen en wordt vervolgens gebruikt om te schakelen van de servo.
De servo is ingesteld op altijd op 90 graden totdat het signaal wordt ontvangen, dan of wordt verplaatst naar beide 180 graden tot 1 graad waardoor de servo arm raakte de draad, schakelen het licht aan en uit.
#include < IRremote.h >
#include < Servo.h >
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results resultaten;
unsigned long CurrentValue = 0;
unsigned long StoredCode = 0;
Const int buttonPin = 6; het nummer van de drukknop pin
Const int ledPin = 4; het nummer van de LED-pin
Const int outputPin = 3; het nummer van de uitgang LED pins
Const int servoPin = 9;
int enableOutput = 0;
int buttonState = 0; variabele voor het lezen van de drukknop status
int RecordState = 0; de ontvanger is in de opname mode
int outputState = 1; de uitvoer is in- of uitschakelen
Servo myservo;
int pos = 0;
VOID Setup
{
myservo.attach(9);
Serial.begin(9600);
irrecv.enableIRIn(); Start de ontvanger
pinMode (ledPin, OUTPUT); Initialiseer de LED-pin als uitgang:
pinMode (outputPin, OUTPUT); Initialiseer de drukknop pin als input:
pinMode (buttonPin, INPUT); Initialiseer de drukknop pin als input:
}
void loop
{buttonState = digitalRead(buttonPin); / / Lees de stand van de drukknop waarde:
Als (irrecv.decode (& resultaten)) {/ / als een signaal is gevonden, slaat de waarde
CurrentValue = (results.value);
Serial.println ('code ontvangen'); displays opgeslagen code voor verwijzing
Als de ontvangen waarde is gelijk aan de geprogrammeerde waarde, dan schakelt de uitgang staat
if(CurrentValue == StoredCode) {}
enableOutput = 1;
}
Als (RecordState == 1) {/ / als de opnamefunctie te selecteren is geactiveerd winkel de huidige waarde als de geprogrammeerde waarde StoredCode = CurrentValue;
RecordState = 0;
digitalWrite (ledPin, laag);
Serial.println(StoredCode); displays opgeslagen code voor verwijzing
}
delay(500);
irrecv.resume(); De volgende waarde ontvangen
}
anders //if die geen signaal wordt gevonden, dan de huidige waarde is 0
{CurrentValue = 0;
} Als (buttonState == HIGH) {/ / controleren als de record-knop wordt ingedrukt.
Als het is, is de buttonState hoog:
terwijl (buttonState == HIGH) buttonState = digitalRead(buttonPin); wachten op de knop om te worden vrijgegeven digitalWrite (ledPin, hoge); de LED om aan te geven dat record mode is ingeschakeld inschakelen
RecordState = 1;
}
Als ((outputState == 1) & &(enableOutput==1)) {//set de juiste uitgang staat Serial.println("State=1,Enable=1"); //displays opgeslagen code voor verwijzing
POS = 1;
myservo.write(POS);
delay(1000);
POS = 90;
myservo.write(POS);
delay(15);
digitalWrite (outputPin, hoge); outputState = 0;
}
anders als ((outputState == 0) & &(enableOutput==1))
{
Serial.println("State=0,Enable=1"); code displays opgeslagen
POS = 180;
myservo.write(POS);
delay(1000);
POS = 90;
myservo.write(POS);
delay(15);
digitalWrite (outputPin, laag);
outputState = 1;
}
enableOutput = 0;
}