Stap 4: De Code
Deze code is vrij sterk veranderd van wat JonBush aanvankelijk gepubliceerd. Grote veranderingen zijn:
- Het gebruik van de delay()-functie uitgeschakeld. In de originele code werd de tijd tussen elke knippen (verlichting wijzigen) doorgebracht in een delay() staat. Dit veroorzaakt een probleem met het lezen van de sensoren (potten en knop) sinds de Arduino zal niet detecteren gebeurtenissen of wijzigingen totdat de delay() is verlopen. Het is niet zo'n probleem voor de potten, maar voor de knop moet u mogelijk het 4 seconden ingedrukt voordat het werd opgepikt. Deze code besteedt al zijn tijd zo spoedig mogelijk op zoek naar veranderingen in sensoren, of tijd items in een lus.
- Gebruikt de multiMAP() functie (van rob.tillaart te converteren van de lineaire verdeling gegenereerd door de functie random() in iets anders. Ik heb geprobeerd verschillende distributies: Gaussiaans, logaritmische, en wat ik gewoon verzonnen. Ik liet ze er allemaal in de commentaren. Op het einde weet ik niet om het even welk van hen maakte veel verschil, lineair was waarschijnlijk prima.
- Toegevoegd een timer ter afsluiting van het licht laten zien na een bepaalde hoeveelheid tijd. Gecontroleerd door een pot.
- Toegevoegd een gesneden snelheid-multiplier, bestuurd door een pot.
- Toegevoegd een lichtshow afbreken, gecontroleerd door de drukknop.
- Toegevoegd de functie van een zachte reboot na 24 uur (86,400,000 ms). Hierdoor zouden alle tellers en de lichtshow te starten op hetzelfde tijdstip elke dag.
- Een activiteit-LED op pin 13 toegevoegd.
- Geïnitialiseerd alle van de verschillende programma-parameters aan redelijke waarden zodat een of alle van de potten en de switch, kunnen worden geëlimineerd.
- De routine softReset() zorgt ervoor dat een programma sprong naar adres 0. Dit heeft het effect van alle tellers resetten en opnieuw op te starten de code vanaf het begin. Het is een truc om te simuleren door de resetknop te drukken. Het zou niet compileren voor de Trinket, maar werkt op de Pro Trinket en Uno. Ik weet niet welke andere Arduinos het kan of kan niet werken op.
- Fade-naar-zwart. Dit die ik rond om te implementeren nooit. Ontbreek.
Ook merkte ik de code vrij volledig, dus lees erdoorheen als u vragen hebt.