LED hus nummer - ändra färg daglig - Arduino Powered (7 / 7 steg)
Steg 7: Arduino kod
Nedan är koden jag använde för Arduino Uno.
Jag har aldrig gjort någon kodning innan du spelar med Arduino så jag är säker det inte är perfekt. Det finns utan tvekan mer elegant sätt att få samma resultat men detta fungerar.
I framtiden kommer jag att justera koden för att göra saker som lägger slumpmässiga färger eller andra färgeffekter. Jag kan också lägga till lite kod för att beakta ändringarna i dagsljus och sommartid.
För nu lyser siffrorna upp varje kväll med en annan färg. Och varje morgon de slocknar.
Här är koden:
Hus nummer skiss
skissen startar genom att ställa in tiden för lördag kl 18:00
varje kväll kl 18:00 lamporna kommer att gå på och Visa den
färg för natten
varje morgon kl 6:00 lamporna slocknar
#include "LPD8806.h" //library för LPD8806 LED strip
#include "SPI.h"
int dataPin = 2;
int clockPin = 3;
LPD8806 strip = LPD8806 (32, dataPin, clockPin);
#include < Time.h > //this krävs för att få tid kapacitet
#include < TimeAlarms.h >
void setup()
{
Starta upp LED strip
Strip.BEGIN();
Uppdatera remsan, för att starta de är alla "off"
Strip.show();
Serial.BEGIN(9600);
setTime(18,00,0,1,1,11); Ställ in tid till lördag 18:00 Jan 1 2011
skapa larm
Alarm.alarmRepeat(dowSaturday,18,00,10,SaturdayOn); Detta anger första larmet på 18:00:10 varje lördag
Alarm.alarmRepeat(dowSunday,06,00,00,SundayOff); andra larm att vända lampor av 6:00 AM
Alarm.alarmRepeat(dowSunday,18,00,00,SundayOn);
Alarm.alarmRepeat(dowMonday,6,00,00,MondayOff);
Alarm.alarmRepeat(dowMonday,18,00,00,MondayOn);
Alarm.alarmRepeat(dowTuesday,6,00,00,TuesdayOff);
Alarm.alarmRepeat(dowTuesday,18,00,00,TuesdayOn);
Alarm.alarmRepeat(dowWednesday,6,00,00,WednesdayOff);
Alarm.alarmRepeat(dowWednesday,18,00,00,WednesdayOn);
Alarm.alarmRepeat(dowThursday,6,00,00,ThursdayOff);
Alarm.alarmRepeat(dowThursday,18,00,00,ThursdayOn);
Alarm.alarmRepeat(dowFriday,6,00,00,FridayOff);
Alarm.alarmRepeat(dowFriday,18,00,00,FridayOn);
Alarm.alarmRepeat(dowSaturday,6,00,00,SaturdayOff);
}
void loop() {
digitalClockDisplay();
Alarm.Delay(1000); vänta en sekund mellan klockdisplay
}
funktioner som anropas när ett larm utlöser:
void SaturdayOn() {
colorChase (remsa. Color(0,127,127), 1000); på lördag slår larm på och Visa denna färg
}
void SundayOff() {
colorChase (remsa. Color(000,000,000), 1000); på söndag morgon stänga remsa av
}
void SundayOn() {
colorChase (remsa. Color(127,15,30), 1000);
}
void MondayOff() {
colorChase (remsa. Color(000,000,000), 1000);
}
void MondayOn() {
colorChase (remsa. Color(20,127,20), 1000);
}
void TuesdayOff() {
colorChase (remsa. Color(000,000,000), 1000);
}
void TuesdayOn() {
colorChase (remsa. Color(20,0,127), 1000);
}
void WednesdayOff() {
colorChase (remsa. Color(000,000,000), 1000);
}
void WednesdayOn() {
colorChase (remsa. Color(90,20,90), 1000);
}
void ThursdayOff() {
colorChase (remsa. Color(000,000,000), 1000);
}
void ThursdayOn() {
colorChase (remsa. Color(10,95,120), 1000);
}
void FridayOff() {
colorChase (remsa. Color(000,000,000), 1000);
}
void FridayOn() {
colorChase (remsa. Color(0,85,85), 1000);
}
void SaturdayOff() {
colorChase (remsa. Color(000,000,000), 1000);
}
void digitalClockDisplay()
{
digital klocka av tiden
Serial.Print(Hour());
printDigits(minute());
printDigits(second());
Serial.println();
}
void printDigits(int digits)
{
Serial.Print(":");
IF(digits < 10)
Serial.Print('0');
Serial.Print(digits);
}
kod för LED strip
void colorChase (uint32_t c, uint8_t vänta) {
int i;
för (jag = 0; jag < strip.numPixels(); i ++) {
strip.setPixelColor (i, 0);
}
för (jag = 0; jag < strip.numPixels(); i ++) {
strip.setPixelColor (i, c);
}
Strip.show();
Delay(Wait);
}