Stap 3: Geavanceerde codering
Nu dat je de code hebt gezien, gaan we over afzonderlijke secties om diepere uitleg te geven.
Eerst zullen we kijken naar een sectie met code in de functie latchButtons(). We gaan om te kijken naar de knop debouncing. Wanneer de linker knop wordt gedrukt, de tijd sinds de laatste druk op de knop moet worden berekend. Dit wordt gedaan met behulp van de laatste waarde die is opgeslagen, en het aanroepen van de functie millis() om te controleren van de huidige tijd. Zodra we weten dat de tijd groter dan onze ontdendering tijd is, controleert de functie vervolgens als de bedieningssleutel is toegestaan uit te breiden. Als aan beide voorwaarden wordt voldaan, kan de functie blijven en doen al de dingen met betrekking tot de druk op de knop.
Dit volgende gedeelte is de while lus binnen de motorForward() functie. Het deel te kijken hier is de twee vertragingen. De lus begint met het inschakelen van de motorcontroller en starten van de motor. Als het de eerste lopen al de lus, is er een grotere vertraging. Deze grotere vertraging is negeren de huidige piek die wordt geleverd bij de opstart van een motor. Bij de vaststelling van deze vertraging, wees voorzichtig niet om het te groot, omdat er helemaal geen controle tijdens het. Als de motor vast voor welke reden dan ook zit, zal het niet kunnen worden gestopt totdat deze vertraging voorbij is. Als het niet het eerste punt is, is er een veel kleinere vertraging.
Zodra de motor in beweging is, wordt getFeedback() gebruikt voor het controleren van de huidige sensor. firstRun is uitgeschakeld, zodat de volgende keer door de lus de kleine vertraging, eerder dan het grote één duurt. En tot slot de knoppen worden gecontroleerd om te zien welke nieuwe maatregelen moeten worden genomen.
De volgende secties zijn allemaal in de getFeedback()-routine. De routine begint door lezing de analoge pin op de sensor aangesloten, vervolgens dienovereenkomstig handelt.
Het eerste ding dat is uitgecheckte is als de motor op zijn grenzen. De code weet wanneer de motor is aan de limieten als de huidige lezing 0 is. Soms, is er een valse lezen, dus we een teller, instellen moeten zodat de motor alleen stopt wanneer het is eigenlijk aan de grenzen. Dit stukje code heeft te tellen tot aan de hitLimitsmax voordat de motor stopt. Als het telt minder dan dat, de teller opnieuw ingesteld.
Dit volgende deel is net na de hit grenzen. Als de motor voorwaarts verplaatst wordt wanneer het de limiet bereikt, wordt hij de rightlatch uitgeschakeld. Als het achteruit beweegt was, blijkt uit de leftlatch. De code is hetzelfde voor leftlatch.
Tot slot, de huidige limiet wordt vergeleken met het maximum. Het is voorbij, de leftlatch is uitgeschakeld als de motor is niet langer toegestaan om uit te breiden. Als u wilt inschakelen van extensie, moet de motor worden omgekeerd.
Nu dat we zijn gegaan over de code, kunnen we het voor uw behoeften aanpassen.