Arduino - kontroll lysdioder med en fjärrkontroll (4 / 5 steg)
Steg 4: Ladda upp Arduino koden
/*
* IRremote bibliotek - Copyright 2009 Ken Shirriff
* skapad av Rui Santos, http://randomnerdtutorials.wordpress.com
* Kontroll lysdioder med en fjärrkontroll
* 2013
*/
#include < IRremote.h >
int IR_Recv = 3; IR-mottagare stift 3
int g_ledPin = 5; Grön LED stift 5
int y_ledPin = 6; Gul LED stift 6
int r_ledPin = 9; Röd LED stift 9
int b_ledPin = 10; blå LED stift 10
int ledPins [] = {5, 6, 9, 10}; matris med alla lysdioder pins
int ledStates [] = {0, 0, 0, 0}; Detta innebär lysdioder staterna först är 0 = låg
int jag = 0; LED index för arrayer
IRrecv irrecv(IR_Recv);
decode_results resultat.
variabler att göra LED blinkar när du valt
int ledState = låg; ledState att aktivera eller inaktivera LED
lång previousMillis = 0; lagrar förra gången LED uppdaterades
långa intervall = 1000; intervall som blinka (millisekunder)
void setup() {
Serial.BEGIN(9600); börjar seriell kommunikation
irrecv.enableIRIn(); Startar mottagaren
pinMode (g_ledPin, produktionen); Anger den digitala pin som utdata
pinMode (y_ledPin, produktionen); Anger den digitala pin som utdata
pinMode (r_ledPin, produktionen); Anger den digitala pin som utdata
pinMode (b_ledPin, produktionen); Anger den digitala pin som utdata
}
void loop() {
avkodar IR indata
om (irrecv.decode (& resultat)) {
långa int decCode = results.value;
Serial.println(decCode);
byta fall om du vill använda den valda fjärrkontrollen
växel (results.value) {
fall 57936: //when du trycker på knappen vidarebefordra
if/else uttalande ser du till att LED är ON eller OFF innan flytta till nästa LED
IF(ledStates[i]==0)
digitalWrite (ledPins [i], låg);
annat
digitalWrite (ledPins [i], hög);
Serial.println ("nästa LED");
ser till att när vi når den sista LED går till första lampan igen
om (jag > = 3)
Jag =-1;
Jag + = 1;
bryta;
fall 57928: //when du trycker på knappen Omvänd
if/else uttalande ser du till att LED är ON eller OFF innan flytta till föregående LED
IF(ledStates[i]==0)
digitalWrite (ledPins [i], låg);
annat
digitalWrite (ledPins [i], hög);
Serial.println ("tidigare LED");
ser till att när vi når den första lysdioden går till den sista LED
om (jag < = 0)
Jag = 4;
Jag-= 1;
bryta;
fall 57932: //when du trycker på knappen ljud av
IF(ledStates[i]==0) {//if LED är avstängd, det kommer slå på
Serial.println ("vänder på lampan markerad");
digitalWrite (ledPins [i], hög); anger LED på
ledStates [i] = 1; uppdaterar den LED staten
}
annat {
Serial.println ("stänger av lampan markerad"); annat: LED är på, det kommer att stänga av
digitalWrite (ledPins [i], låg); framhäver LED
ledStates [i] = 0; uppdaterar den LED staten
}
bryta;
fall 57920: //when du trycker på strömbrytaren
Serial.println ("vänder bort alla lysdioder");
digitalWrite (g_ledPin, låg); framhäver den gröna lysdioden
ledStates [0] = 0; uppdaterar den LED staten
digitalWrite (y_ledPin, låg); framhäver den gula lampan
ledStates [1] = 0; uppdaterar den LED staten
digitalWrite (r_ledPin, låg); framhäver det röda LED
ledStates [2] = 0; uppdaterar den LED staten
digitalWrite (b_ledPin, låg); framhäver den blå lampan
ledStates [3] = 0; uppdaterar den LED staten
bryta;
standard:
Serial.println("Waiting");
}
irrecv.Resume(); Får nästa värde från den knapp du trycker på
}
Detta om uttalande gör LED blinkar om den är markerad och off
IF(ledStates[i]==0) {
osignerade långa currentMillis = millis();
om (currentMillis - previousMillis > intervall) {
spara den senaste gången du blinkade lysdioden
previousMillis = currentMillis;
om lysdioden är stänger den på och vice versa:
om (ledState == låg)
ledState = hög;
annat
ledState = låg;
Set LED med ledState av variabeln:
digitalWrite (ledPins [i], ledState)
}
}
}