Stap 4: Code
U kunt nu laden de schets aan de Arduino. You´Re tevens kundig voor draad van de LED strips nu. Don´t sluit de BT Module!!! Wij willen eerst een blik op de code, moet u weten waar u verschillende dingen kunt tweak...
Download de Arduino IDE en de Librarys.
Arduino IDE, AdafruitNeoPixel, tijd, DS1307RTC
Installeer de IDE en zet de librarys in de Bibliotheek-omslag.
Open het bijgevoegde INO bestand en uploaden naar je arduino. De hier beschreven code is hetzelfde maar met aanvullende opmerkingen! Als je alles goed hebt gedaan, ziet u nu de "bootanimation". Het is mogelijk om de tijd over de serialmonitor. Typ bijvoorbeeld. (10:33).
Voel je vrij om te spelen met de code...
Ziek geven u hier een korte beschrijving van de Code (Setup zonder RTC!)
DEFINITIES:
#define PIN 6 //Hour LED Strip
#define MINPIN 5 //Singelminute LED
#define NUMPIXELS 12 //Number van Pixels voor uur
#define MINNUMPIXELS 4 //Number van Pixels voor één minuut
#define BAUDRATE 115200 / / Baudrate, moet overeenkomen met de baudrate van BT Module
#define utch "//start BYTE van TimeSync
int timeset = 0; vlag om op te slaan als de tijd was ingesteld na het opstarten
int delayval = 20; vertraging voor fading animatie
int clocktimer = 10000; tijd vernieuwen
int timebright = 250; helderheid van uur Strip
int mtimebright = 50; helderheid van singelmin
int initialiseren = 0; vlag van de clearpixels functie aanroepen na het opstarten
int ahour;
int oldahour = 0; winkel vorige uur
int aminute;
int oldamin = 0; winkels de vorige minuut voor vernieuwen
int de atweede;
int de adag;
int amonth;
int per;
int mmin;
tmElements_t tm;
Setup voor de 2 NeoPixel LED-arrays (naam = TYPE (nummer van PIXELS die PIN, formaat RGB of GRB, FREQ); Verwijzen naar de Adafruit guide voor meer informatie.
Adafruit_NeoPixel pixels = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel minpixels = Adafruit_NeoPixel (MINNUMPIXELS, MINPIN, NEO_RGB + NEO_KHZ800);
SETUP:
VOID Setup {}
Serial.begin(BAUDRATE);
Wire.begin();
Initialice de strips, alle OFF
pixels.begin();
minpixels.begin();
pixels.show();
minpixels.show();
Een beetje animatie maken
Serial.println("Sunrise");
Sunrise();
delay(1000);
Serial.println("Sunset");
Sunset();
pixels.show();
Serial.println("Ready");
}
LUS:
void loop {}
selectievakje voor timesync
terwijl (Serial.available() > 0) {}
char c = Serial.read();
if(c == utch) //if bestaat een @ op de lijn, lees de komende bytes / ints
{
readtime();
}
}
initialice de LEDs, duidelijke boot animaties
if(Initialize == 0) {}
clearpixels();
initialiseren = 1;
}
ahour = uur();
aminute = minute();
Als (timeset == 1 || timeset == 0) / / hier kunt u controleren als de tijd is ingesteld, kunt u het programma hier stoppen als Timeset = FALSE, verwijder enkel "|| timeset == 0"!
{
Als (oldamin < aminute || oldahour < ahour) //check als de tijd is veranderd. TRUE = vernieuwen -> set alle als u wilt weergeven uit, nieuwe tijd
{
clearpixels();
ClockDisplay();
}
}
}
De klok weergeven
VOID ClockDisplay()
{
oldahour = ahour;
oldamin = aminute;
int xhour, xmin;
Als (ahour > = 12) {}
xhour = ahour-12; Wij hebben slechts 12 LED's voor 24h weergave
}
else {}
xhour = ahour;
}
schaal het in 5min stappen
xmin = (aminute / 5);
if(oldamin < aminute)
{
oldamin = aminute;
clearpixels();
}
Neem de rest van de divisie dor de singelmin LED
mmin = (aminute % 5); modulo operator bijv. 24% 5 = 4! zeer nuttig:-P
pixels.setBrightness(timebright);
pixels.setPixelColor (xmin, pixels. Color(5,125,255)); u kunt de kleuren hier! Speel rond!
pixels.setPixelColor (xhour, pixels. Color(255,50,0));
pixels.show();
de singel minuten weergeven
voor (int m = 0; m
minpixels.setBrightness(mtimebright);
minpixels.setPixelColor (m, pixels. Color(255,255,0));
minpixels.show();
}
}
Lezen en verwerken van de TIMEinformation van Serial
VOID readtime() / / als al we de toonaangevende "de komende gegevens verwerken en opslaan van het tijdstip voor de tijd-Lib kregen
{
ahour = Serial.parseInt();
aminute = Serial.parseInt();
atweede = Serial.parseInt();
adag = Serial.parseInt();
amonth = Serial.parseInt();
per = Serial.parseInt();
Serial.println("timeset");
Serial.Print(ahour);
Serial.Print(":");
Serial.println(aminute);
setTime(ahour,aminute,asecond,aday,amonth,ayear);
}
Alles wissen!
VOID clearpixels() / / set elke enkele PIXEL op uit om de weergave vernieuwen
{
pixels.begin();
minpixels.begin();
voor (int i=0;ipixels.setPixelColor (i, pixels. Color(0,0,0));
minpixels.setPixelColor (i, pixels. Color(0,0,0));
pixels.show();
minpixels.show();
}
}