Halloween hacka: Ghost Clyde (4 / 5 steg)
Steg 4: Programmet Ghost Clyde spooky beteende
Kopiera och klistra in följande kod i din Arduino IDE. Ladda upp till Clyde och låt hauntings börja!
Koden är också tillgänglig på GitHub kontentan:
< p > / * < br > Ghost Clyde
Halloween Hacks
Fabule påhitt
av Angela Gabereau
21 okt, 2014
Rörelse utlöser det spökar, Clyde öga ljus vänder på och uppgift ljus
och fan tona in och ut flera gånger, då spöket går tyst igen.
Arduinos grundläggande fade exempel var utgångspunkterna i denna kod.
*/
int taskLight = 11; PIN-koden som Clyde uppgift ljus är kopplad till
int fan = 13. PIN-koden som fläkten är kopplad till
int R = 5, G = 6, B = 9. stift för rött, grönt och blått av den Clyde öga ljus
int rColor = 255, gColor = 255, bColor = 255; Färgvärdena för R, G amd B stift < /p >< p > int pirPin = 10; den digital pin ansluten till PIR-sensorns utgång
int calibrationTime = 30. den tid som vi ger sensorn för att kalibrera (10-60 SEK enligt databladet)
booleska haunting = false; bör uppgift ljus och fan tonas in och ut och ögat ljuset slår.
int spookCount = 0; Hur många gånger skrämmande ljus/fläkt cykeln har drivs sedan trigger.
int spookLimit = 3; Hur många gånger skrämmande ljus/fläkt cykeln körs på avtryckaren.
int ljusstyrka = 0; Hur ljus LED är
int fadeAmount = 5; Hur många poäng för att blekna LED av < /p >< p > / / setup rutinen körs en gång när du trycker på reset:
void setup() {
Initiera stift. < /p >< p > / / förklara Clyde uppgift ljus pin-för att vara en utgång:
pinMode (taskLight, produktionen);
Stäng av Clyde uppgift ljus genom att ange pin hög.
digitalWrite (taskLight, hög); < /p >< p > / / förklara fan pin för att vara en utgång:
pinMode (fläkt, OUTPUT);
Stänga av fläkten genom inställningen pin låg.
digitalWrite (fläkt, låg); < /p >< p > / / förklara R, G och B stiften att utgångar, för Clyde öga ljus.
pinMode (R, OUTPUT);
pinMode (G, OUTPUT);
pinMode (B, OUTPUT);
Rödfärgad Clyde öga ljus att visa att det kalibrering.
digitalWrite (R, 255);
digitalWrite (G, 0);
digitalWrite B, 0. < /p >< p > calibrateMotionSensor();
Inaktivera Clyde öga ljus visar att kalibreringen är klar
digitalWrite (R, 0);
digitalWrite (G, 0);
digitalWrite B, 0.
} < /p >< p > / / loop rutin kör om och om igen för alltid:
void loop() {< /p >< p > / / gör Ghost Clyde utföra hans haunting beteende?
IF(Haunting) {
Blekna ljus och fläkt.
spookyClyde();
Kontrollera om det kusliga ljus och fan fading cykel har köra tillräckligt många gånger.
IF(spookCount>spookLimit) {
Vem du ska ringa?!
Ghostbusters();
}
} annat {
checkMotionSensor();
}
} < /p >< p > / / Fade Clyde uppgift ljus och fläkt, slå på hans öga ljus.
void spookyClyde() {< /p >< p > / / Ange Clyde öga ljus färg
digitalWrite (R, rColor);
digitalWrite G, gColor.
digitalWrite B, bColor; < /p >< p > / / ställa in ljusstyrkan på uppgift ljuset:
analogWrite (taskLight, 255-ljusstyrka);
Ställa in ljusstyrkan på fläkten:
analogWrite (fan, ljusstyrka); < /P >< p > / / ändra ljusstyrkan för nästa gång genom öglan:
ljusstyrka = ljusstyrka + fadeAmount; < /p >< p > / / omvänd riktning mot blekning i ändarna av toningen:
om (ljusstyrka == 0 || ljusstyrka == 255) {
fadeAmount = - fadeAmount;
} < /P >< p > //A ögonblick av mörker.
om (ljusstyrka == 0) {
Delay(1000);
spookCount ++;
} < /P >< p > / / vänta 30 millisekunder att se ljusreglering effekten
Delay(30);
} < /p >< p > / / stänga av alla haunting beteende.
void ghostbusters() {
Återställa haunting värden.
Haunting = false;
spookCount = 0; < /p >< p > / / Aktivera Clyde öga ljus av
digitalWrite (R, 0);
digitalWrite (G, 0);
digitalWrite B, 0. < /p >< p > / / stänga av Clyde genom att ställa in pin hög.
digitalWrite (taskLight, hög); < /p >< p > / / stänga av fläkten av ange pin låg.
digitalWrite (fan, låg);
} < /p >< p > //Wait lite medan så att rörelsesensorn kan kalibrera.
void calibrateMotionSensor() {< /p >< p > för (int jag = 0; jag < calibrationTime; i ++) {
Delay(1000);
}
Delay(50);
} < /p >< p > void checkMotionSensor() {
Om PIR PIN-koden är hög, utlösa beteendet spökar.
IF(digitalRead(pirPin) == hög) {
Haunting = sant;
}
} < /p >