Rörligt ljus-up Bat Signal (4 / 7 steg)
Steg 4: Arduino kod
För fjärrkontrollen ska fungera, måste du infoga C2025 batteriet.
Kul fakta: Infrarött ljus kan inte ses av det mänskliga ögat och ligger precis under det synliga spektrumet. För att kontrollera om fjärrkontrollen fungerar, slå på kameran i telefonen, håll telefonen med IR lampa inför kameran och trycka på någon knapp. Du bör se en blinkande ljuset från glödlampan. Detta säger du att det fungerar och du kan säga att du framgångsrikt har sett infrarött ljus och kan visa dina vänner!
Kod för lös Bat-Signal
Skrivet av Rachel Porter våren 2015
#include
#include
Servo myservo;
int IR_PIN = 11;
int SERV_PIN = 6;
int P_RED = 2;
int P_GREEN = 3;
int P_BLUE = 5;
osignerade långa lastresult = 0; //the senaste koden från remote - håller sista värdet så att det sista du gjorde kan upprepas
IRrecv irrecv (IR_PIN); //IR mottagaren är ansluten till stift 11
int pos = 0; //the initialt placerar av servo armen är vid 0 grader
decode_results resultat; //decoder för resultat. 8 nummerserierna tilldelade till knapparna på fjärrkontrollen definieras och ges vissa åtgärder.
struct färg {//creating en ny typ av variabel "byte" som är kunna manipulera de tre variablerna nedan i olika färger med hjälp av siffrorna 0 till 255
byte r;
byte g;
byte b;
};
färg c_blue = {255, 0, 0}; / / r, g och b kan manipuleras antingen enskilt eller samtidigt så att de kan göra olika färger
färg c_red = {0, 255, 0};
färg c_green = {0, 0, 255};
färg c_orange = {0, 255, 65};
färg c_purple = {255, 255, 0};
färg c_none = {0, 0, 0};
färg c_white = {255, 255, 255};
färg c_yellow = {0, 255, 80};
void changeColor (struct färg rgb, float ljusstyrka) {//changing ljusstyrkan för rgb-färger
om (ljusstyrka > = 0,0 & & ljusstyrka < = 1,0) {
analogWrite (P_RED, rgb.r * ljusstyrka);
analogWrite (P_GREEN, rgb.g * ljusstyrka);
analogWrite (P_BLUE, rgb.b * ljusstyrka);
}
}
void changeColor (struct färg rgb) {//rgb-strip är analog i motsats till digital
analogWrite (P_RED, rgb.r);
analogWrite (P_GREEN, rgb.g);
analogWrite (P_BLUE, rgb.b);
}
void setup()
{
Serial.BEGIN (9600); //default för Arduino. Initierar seriell anslutning
myservo.attach (SERV_PIN), //the servo är kopplad till servo pin (stift 6) definieras ovan
irrecv.enableIRIn(); / / starta mottagaren
myservo.write (0), //start ställning vid 0 grader
pinMode (2, utgång), //pins 2, 3, 5 skicka ut information i stället för att ta emot information
pinMode (3, OUTPUT);
pinMode (5, OUTPUT);
}
void loop() {
om (irrecv.decode(&results)) {//decode 8-siffriga sekvens kommer från remote-knappar att deras motsvarande kommandon
IF(results.Value == 4294967295) {//happens när du håller ned knappen positiva
results.Value = lastresult;
}
Switch(results.Value) {
fall 16754775: //the positiva knappen flyttas lampa upp
IF(POS < 90) {//postion går inte är högre än 90 grader
POS + = 5. servo arm flyttar i steg om 5 grader
}
bryta;
fall 16769055: / / den negativa knappen flyttas lampa ner
IF(POS > 0) {//position är större än 0, men mindre än 90
POS-= 5. servo arm flyttar i steg om 5 grader
}
bryta;
fall 16756815: / / sista knappen gör ingen färg
changeColor(c_none);
bryta;
fall 16736925: / / mode-knappen gör att färgen blå
changeColor(c_blue);
bryta;
fall 16753245: / / power-knappen gör att färgen vit
changeColor(c_white);
bryta;
fall 16761405: / / play/pause-knappen gör att färgen grön
changeColor(c_green);
bryta;
fall 16769565: / / mute-knappen gör att färgen röd
changeColor(c_red);
bryta;
fall 16750695: / / 100 + knappen gör färgen lila
changeColor(c_purple);
bryta;
fall 16720605: / / knappen föregående gör färgen orange
changeColor(c_orange);
bryta;
fall 16712445: / / nästa knapp gör färgen gul
changeColor(c_yellow);
bryta;
fall 16748655: / / EQ knappen gör regnbågen
changeColor(c_white);
Delay(1000);
changeColor(c_red);
Delay(1000);
changeColor(c_orange);
Delay(1000);
changeColor(c_yellow);
Delay(1000);
changeColor(c_green);
Delay(1000);
changeColor(c_blue);
Delay(1000);
changeColor(c_purple);
Delay(1000);
changeColor(c_white);
Delay(1000);
changeColor(c_none);
bryta;
fall 16738455: / / 0-knappen använder vit strobe light - blinkar 6 gånger
changeColor(c_white);
Delay(100);
changeColor(c_none);
Delay(100);
changeColor(c_white);
Delay(100);
changeColor(c_none);
Delay(100);
changeColor(c_white);
Delay(100);
changeColor(c_none);
Delay(100);
changeColor(c_white);
Delay(100);
changeColor(c_none);
Delay(100);
changeColor(c_white);
Delay(100);
changeColor(c_none);
Delay(100);
changeColor(c_white);
Delay(100);
changeColor(c_none);
Delay(100);
bryta;
fall 16724175: / / 1 knapp gör det rött blixtljus - blixtar 6 gånger
changeColor(c_red);
Delay(100);
changeColor(c_none);
Delay(100);
changeColor(c_red);
Delay(100);
changeColor(c_none);
Delay(100);
changeColor(c_red);
Delay(100);
changeColor(c_none);
Delay(100);
changeColor(c_red);
Delay(100);
changeColor(c_none);
Delay(100);
changeColor(c_red);
Delay(100);
changeColor(c_none);
Delay(100);
changeColor(c_red);
Delay(100);
changeColor(c_none);
Delay(100);
bryta;
fall 16718055: / / 2 knappen använder orange blixtljus - blinkar 6 gånger
changeColor(c_orange);
Delay(100);
changeColor(c_none);
Delay(100);
changeColor(c_orange);
Delay(100);
changeColor(c_none);
Delay(100);
changeColor(c_orange);
Delay(100);
changeColor(c_none);
Delay(100);
changeColor(c_orange);
Delay(100);
changeColor(c_none);
Delay(100);
changeColor(c_orange);
Delay(100);
changeColor(c_none);
Delay(100);
changeColor(c_orange);
Delay(100);
changeColor(c_none);
Delay(100);
bryta;
fall 16743045: / / 3 knappen använder gul blixtljus - blinkar 6 gånger
changeColor(c_yellow);
Delay(100);
changeColor(c_none);
Delay(100);
changeColor(c_yellow);
Delay(100);
changeColor(c_none);
Delay(100);
changeColor(c_yellow);
Delay(100);
changeColor(c_none);
Delay(100);
changeColor(c_yellow);
Delay(100);
changeColor(c_none);
Delay(100);
changeColor(c_yellow);
Delay(100);
changeColor(c_none);
Delay(100);
changeColor(c_yellow);
Delay(100);
changeColor(c_none);
Delay(100);
bryta;
fall 16716015: / / 4 knappen använder grön blixtljus - blinkar 6 gånger
changeColor(c_green);
Delay(100);
changeColor(c_none);
Delay(100);
changeColor(c_green);
Delay(100);
changeColor(c_none);
Delay(100);
changeColor(c_green);
Delay(100);
changeColor(c_none);
Delay(100);
changeColor(c_green);
Delay(100);
changeColor(c_none);
Delay(100);
changeColor(c_green);
Delay(100);
changeColor(c_none);
Delay(100);
changeColor(c_green);
Delay(100);
changeColor(c_none);
Delay(100);
bryta;
fall 16726215: / / 5 knappen använder blå blixtljus - blinkar 6 gånger
changeColor(c_blue);
Delay(100);
changeColor(c_none);
Delay(100);
changeColor(c_blue);
Delay(100);
changeColor(c_none);
Delay(100);
changeColor(c_blue);
Delay(100);
changeColor(c_none);
Delay(100);
changeColor(c_blue);
Delay(100);
changeColor(c_none);
Delay(100);
changeColor(c_blue);
Delay(100);
changeColor(c_none);
Delay(100);
changeColor(c_blue);
Delay(100);
changeColor(c_none);
Delay(100);
bryta;
fall 16734885: / / 6 knappen använder lila blixtljus - blinkar 6 gånger
changeColor(c_purple);
Delay(100);
changeColor(c_none);
Delay(100);
changeColor(c_purple);
Delay(100);
changeColor(c_none);
Delay(100);
changeColor(c_purple);
Delay(100);
changeColor(c_none);
Delay(100);
changeColor(c_purple);
Delay(100);
changeColor(c_none);
Delay(100);
changeColor(c_purple);
Delay(100);
changeColor(c_none);
Delay(100);
changeColor(c_purple);
Delay(100);
changeColor(c_none);
Delay(100);
bryta;
} < br > myservo.write (pos); //writes servo ställning.
om (results.value! = 4294967295) {//This händer när du håller ned knappen negativt. Återgår till första position.
lastresult = results.value;
}
irrecv.Resume(); Ta emot nästa värde
}
}