Rainbow Neo klockan (4 / 5 steg)
Steg 4: Koden
Programmera Arduino pro mini kan göras på flera sätt. Jag använder en USB-adapter styrelse som ansluter Arduino till min PC med USB-kabel. Enligt min mening är det det enklaste sättet att ladda upp en skiss till arduino.
Så första sak första; ansvarsfriskrivningen. Jag är fortfarande relativt nytt för programmering och även om jag kan oftast få saker att fungera som jag vill ha dem till, det finns ofta ett mycket bättre sätt att göra detta. Med det sagt, om någon kan göra några förbättringar i koden skulle då jag gärna höra om dem. Varje dag är en skoldag :D
Koden erbjuder användaren ett antal sätt att ställa tiden. Först helt enkelt tar till PC tid och datum på tiden av kompilera koden och ställer RTC då. RTC bör kunna hålla tiden korrekt från och med nu och framåt tills myntet batteriet tar slut. Den andra metoden är i grunden samma som först, bara programmerare ingångarna önskad tid manuellt in i koden och som används i stället för systemtiden. Den tredje metoden är för användare som inte vill eller kan inte komma åt koden. De kan ställa in tiden med hjälp av knapparna på baksidan av klockan. Detta görs genom att helt enkelt kontrollera, varje sekund, om man trycker på knappen och sedan, om den knappen är verkligen pressas, köra en metod för att ställa in tiden manuellt. Problemet med detta är kan du behöva hålla in knappen för en hel sekund att få klockan att registrera pressen. ett kort tryck på och släpp fungerar inte varje gång. När den inställda tid metoden kallas, användaren kan använda två knappar på baksidan av klockan, en knapp kommer att avancera till protokollet och andra knappen kommer att lagra protokollet position och växla till timmar så att den första knappen nu avancerar i timmar. Att trycka på den andra knappen en andra gång sparar timmar position och börja klockan kör.
Klockan håller tid genom en serie kapslade i loopar. Inre de flesta loop ansvarar för räknar sekunder. Ett enkelt sätt att göra detta är att bara ha arduino fördröjning av 1 sekund men det fungerar inte för denna klocka. Varje sekund och var 150 sekunder (2,5 minuter) det finns en kort animering som tar lite tid. Du kan redogöra för denna gång och sedan helt enkelt har arduino förseningen resten att göra den totala förseningen upp till en sekund, men detta leder till tiden krypa eftersom klockan är en bråkdel av sekund av varje sekund. Hur denna klocka fungerar är genom att kontrollera RTC och helt enkelt vänta tills den har avancerat av en sekund utan att använda några förseningar. Återigen, det finns bättre sätt att hålla tid såsom kontroll RTC för all tidsinformation (timmar minuter och sekunder) och bara ha neo pixel ringar visar därmed. Om någon vill ändra koden för att bli mer effektiv och exakt då jag skulle gärna höra från dem.
Som för automatisk ljusreglering i mörka rum, lux sensorn mäter det omgivande ljuset varje sekund och om det sjunker under ett inställt värde (som du kanske vill ändra) ändras den globala ljusstyrka lysdioder. Skärmens LED är med ett tal mellan 0 och 255, normalt jag har den på 30 under dagen och 1 på natten. Men jag fann snart att även ställa till 1 det var för ljust för mig att sova (jag gillar totalt mörker när sover) så jag sätta den till 0. Lysdioderna dim tills de visas utanför, men klockan fortsätter att räkna. Det finns också en LED monterad på Arduino sig som kan vara stark nog att förvirra sensorn, detta övervanns genom att sticka en liten fyrkant av isolerande tejp över lampan.
Det finns också några oanvända metoder som finns för några olika animeringseffekter som ser cool, om du kände att experimentera med hur klockan ser ut.
Om du inte bryr dig om koden och bara vill bygga en klocka, så allt du behöver göra är att bestämma hur du vill ställa in tiden och ladda upp här koden till din arduino och bort du gå.