Stap 4: De Code
Programmeren van de Arduino pro mini kan worden gedaan op een aantal manieren. Ik gebruik een USB-adapter board dat de Arduino met mijn PC via USB-kabel verbonden. Volgens mij is het de eenvoudigste manier voor het uploaden van een schets aan de arduino.
Dus het eerste ding eerst; de disclaimer. Ik ben nog steeds relatief nieuw voor de programmering en hoewel ik meestal dingen krijgen kan te werken zoals die ik wil, is er vaak een veel betere manier doen. Met dat gezegd, als iemand verbeteringen aan de code kan maken zou dan ik graag horen over hen. Elke dag is een dag school :D
De code geeft de gebruiker een aantal manieren om de tijd. De eerste gewoon neemt naar PC tijd en datum op het moment van opstellen van de code en stelt de RTC op dat moment. De RTC moet zitten kundig voor houden tijd nauwkeurig vanaf dit moment vanaf, totdat de munt batterij leeg. De tweede methode is in wezen hetzelfde als de eerste, alleen de programmeur ingangen de gewenste tijd handmatig in de code en dat wordt gebruikt in plaats van de systeemtijd. De derde methode is voor gebruikers die niet willen, of geen toegang tot de code. Zij kunnen de tijd instellen met behulp van de knoppen op de achterzijde van de klok. Dit wordt gedaan door simpelweg te controleren, elk tweede, als de knop wordt ingedrukt en vervolgens, als de knop is inderdaad wordt ingedrukt, een methode voor het instellen van de tijd handmatig uitvoeren. Het probleem met dit is dat u wellicht houdt u de knop een hele seconde om de klok om te registreren van de pers; een kort indrukken en release werkt mogelijk niet elke keer. Zodra de ingestelde tijd-methode wordt aangeroepen, de gebruiker kan het gebruik van de twee knoppen op de achterzijde van de klok, één knop zal vooraf de notulen en de andere knop slaat de notulen plaats en overschakelen naar uren-modus, zodat de eerste knop nu de uren voorschotten. De tweede knop zal een tweede keer de positie van de uren opslaan en start de klok lopen.
De klok houdt tijd door een reeks geneste FOR-lussen. De binnenste meeste lus belast is met de seconden tellen. Een eenvoudige manier om dit te doen is om gewoon arduino vertraging van 1 seconde, maar dat zal niet werken voor deze klok. Elke tweede en elke 150 seconden (2,5 min) is er een korte animatie die duurt enige tijd. U kon rekening voor deze tijd en dan gewoon de vertraging van de arduino de rest om de totale vertraging tot een seconde, maar nogmaals dit tot tijd leidt kruipen als de klok een fractie van een seconde af per seconde is. De manier waarop die deze klok werkt is door het controleren van de RTC en gewoon te wachten tot het heeft geavanceerde door één seconde zonder gebruik te maken van eventuele vertragingen. Nogmaals, er zijn betere manieren om te houden van tijd zoals het controleren van de RTC voor alle tijdinformatie (uren, minuten en seconden) en heb de neo-pixel ringen dienovereenkomstig weergeven. Als iemand wil redesign van de code om meer efficiënt en nauwkeurig verlopen dan zou ik graag van hen horen.
Wat betreft het automatisch dimmen in donkere kamers, de lux-sensor meet het omgevingslicht elke seconde en als het valt onder een ingestelde waarde (die u wenst te veranderen) zal veranderen de globale helderheid van de LED's. De helderheid van de LED is ingesteld door een getal tussen 0 en 255, normaal heb ik het op 30 overdag en 1 s'nachts. Maar ik snel gevonden dat zelfs reeks 1 het was ook helder voor mij om te slapen (I als totale duisternis wanneer slapen) dus ik kunt instellen op 0. De LED's dim totdat ze verschijnen af, maar de klok blijft tellen. Er is ook een LED gemonteerd op de Arduino zelf die helder genoeg om te verwarren van de sensor kan worden, dit werd overwonnen door het vasthouden van een pleintje van isolerend tape over de LED.
Er zijn ook sommige niet-gebruikte methoden die voor sommige verschillende animatie-effecten die zien er cool zijn, in het geval dat u voelde experimenteren met de manier waarop de klok kijkt.
Als u niet de zorg over de code en wil om te bouwen van een klok, allen u moet doen is beslissen hoe u wilt instellen van de tijd en deze code uploaden naar je arduino en daar ga je.