Stap 5: De codering
In de setup moet de codeur stellen van de bedoeling van elke gebruikte pin. De myservo heeft een methode voor dit, terwijl voor alle anderen kunt u pinMode gebruiken.
De lus is waar de actie begint.
De belangrijkste variabele in dit programma is aantoonbaar de lightNum variabele. Elke keer dat de hoofdlus wordt herhaald, lightNum heeft een andere waarde tussen -1 en 5. Dit wordt bereikt door de toewijzing van de += met dir. De variabele dir wordt altijd toegewezen 1 of -1 zo door += met lightNum de waarde van lichte num is of door een toegevoegd aan of van door 1 afgetrokken. Dir is terwijl de oplopende 1en -1 tijdens de afdaling. De waarde van dir is toegewezen in de buurt van het einde van de code waar het incheckt, twee als verklaringen, als lightNum op het max of min (en moet worden omgedraaid)
Om te bepalen hoe lightNum beïnvloedt de LEDs schreef ik een eenvoudig systeem als verklaringen. Als lightNum > = de LED dan brandt het (door de aanroepende digitalWrite(). Ik kon waarschijnlijk heb gebruikt een instructie switch, maar ik besloot dat ik zou verlaten dat omscholing voor een andere dag.
Bepaling van de input van de gebruiker was wat lastig, maar interessant voor mij. De codering heeft voor de mogelijkheid dat een speler kan gewoon houd de knop tot win(cheaters). Ik dit door de codering van een variabele met de naam "lastLoop" verholpen gewaarborgd dat de knop niet had plaatsgevonden. Als de knop had niet is ingedrukt tijdens de laatste go ronde dan "lastLoop" = laag. Anders is het hoog. Dus daarom dat als lastLoop laag is en buttonState hoog is dan is dit de alle belangrijke eerst pers maar een geldig om te winnen. Als het is geldig wordt een variabele "eerste" toegewezen HIGH.
Bepalen als de speler een winnaar is werd gedaan door een eenvoudige als verklaring. Als dit een enkelvoud pers (eerst == HIGH) en lightNum gewenst is (in mijn geval lightNum == 5) dan het systeem kan het feest beginnen.
Ik begon met het geven van de servo een gecentreerde waarde. Het zullen dat 1500 ik geloof voor meeste servo's. De waarden voor max en min, ik ben van mening kunnen verschillen. Ik wilde alleen ik aan wiggle dus ik heb het in de viering "for"-lus waarden afwisselend tussen 1300 en 1700. De servo wordt gecontroleerd met behulp van de verklaring van de myservo.writeMicroseconds().
Ook worden gecontroleerd de lus is een afwisselend leidde flitser (3 en 3) evenals een buzz van de zoemer. Wegschrijven naar digitale pinnen is gemakkelijk door enkel bellen digitalWrite (het nummer van de pin, de gewenste waarde van de pin)
Ik vertraagd de lus te laten draaien op een tijdige manier. Zodat het spel een beetje moeilijker maakte ik de vertraging van de winnende lightNum waarde korter is dan de rest.