Väckarklocka med ledningar (eller Arduino) (3 / 7 steg)
Steg 3: Källkod och IDE
Källkoden för projektet kan nås från min elektronik repository i GitHub. Känn dig fri att granska koden, använda det (bara ge kredit när förfaller), och föreslå förbättringar.
Vi använder de ledningar v.1.0.1-dev som IDE (Integrated Development Environment), som finns för närvarande endast på Windows och Mac OS (: (vi saknar GNU/Linux-versionen).
För att använda gemensamma Arduino bibliotek som TMRpcm (för uppspelning av WAV-filer från SD-kort) på ledningar, behöver man justera sin källkod, till exempel genom att införa Wiring.h i stället för Arduino.h. Eftersom det visade sig vara lite av en smärta, delar vi också hela ledningar mappen, inklusive konfigurerade bibliotek för att undvika du sådan process.
EEPROM
För att göra timme och larm inställningar perdurable vi använder EEPROM (elektriskt raderbart programmerbart skrivskyddad minne) (2 KB) som tillhandahålls av ledningar S. Källkoden är optimerad på ett sådant sätt att det förhindrar för att skriva till samma EEPROM adress för många gånger (EEPROM-minne har en livslängd baserat på antalet operationer som läs/skriv). Till exempel, när du anger minuter, skriver vi bara sista numret och inte mellanliggande sådana. Vi använder 11 EEPROM för att lagra 4 variabler (aktiverad, typ, timmar och minuter) för alarm 1, 4 (aktiverad, typ, timmar och minuter) för alarm 2 och 3 (aktiverat, timmar och minuter) för varning läge.
Månen fas beräkning
Vi låna funktionen för beräkning av månfasen från http://www.ben-daglish.net/moon.shtml och anpassa det till C++-kod. Det är en funktion som bygger på en algoritm av John Conway, som vanligtvis ger rätt månfasen. Det är inte exakt, men felet är försumbart för våra ändamål.