Stap 11: Elektronica deel 3: stroom van de logica en de controle van de onderdelen
SERVO CONTROL
Deze maakt gebruik van een stock continue rotatie servo, aangesloten op de Arduino in de volgende configuratie.
** Opmerking: De draad van de controle (meestal geel of bruin) kan worden aangesloten op elke digitale Pin, in deze situatie die is aangesloten op Digital Pin 3.
In deze configuratiezijn de boven- en onderkant eindschakelaars geschakeld.
De regel "#include < servo.h >" Hiermee importeert u de servo-bibliotheek. Continue rotatie servo's zijn aangesloten op de Arduino in dezelfde configuratie als standaard servo's, maar de code ze te bestrijden is iets anders. Standaard servo's worden gecontroleerd door het verstrekken van een absolute positie (bijvoorbeeld "positie = 124"), maar continue rotatie servo's interpreteren waarden voor positie als snelheid en richting. De CR-servo was gekalibreerd om te interpreteren 95 als dode stop, met 0 als de volledige snelheid met de klok mee en 180 zo volledig linksom. In werkelijkheid is elke waarde die groter is dan 10 vanaf "dead stop" in beide richtingen de volle snelheid (dat wil zeggen, de waarden minder dan 80 en meer dan 100 in het algemeen niet zal de snelheid van de servo in beide richtingen verhogen).
In deze schets, worden willekeurige waarden voor snelheid en richting gegenereerd in het bereik van 80-105. Dit gebeurt in de "newParameters"-functie (na de hoofdlus).
RANDOMIZING VERKEER
Naast het genereren van een willekeurige snelheid en richting, zal de code ook genereren van een willekeurige interval uit te voeren op dat
snelheid/richting.
De marges voor deze willekeurig gegenereerde waarden zijn:
Snelheid/richting: 80-105
Pauze: 1000-5000ms
Runtime:.5 - 2.0 seconden, effectief
MET BEHULP VAN CODE LOOPS ALS EEN TIMER
Arduino code ("sketches") zijn gebaseerd op continu herhalen instructies (de "ongeldig loop()"). In werkelijkheid, de Arduino wordt uitgevoerd door de lus bijna ogenblikkelijk, daarvoor, een 100 milliseconden "vertraging" commando is toegevoegd aan het einde van de lus-code. Dit zal de code in de lus van ongeveer 10 keer per seconde daadwerkelijk beperken. Door het verhogen van kan de waarde van de "timer" bij elke pass door de lus, runtime worden bijgehouden. Met de waarde van een toename van 10 en een maximum van 50, zal de code loop voor ongeveer een halve seconde. Wanneer de max tijdswaarde is bereikt, de snelheid is ingesteld op "dead stop" en een timer onderbreken wordt gestart. De pauze tijd is een andere willekeurig gegenereerde waarde.
EINDSCHAKELAARS
De eindschakelaars zijn aangesloten op de digitale pennen 1 & 2. Wanneer beide Hekschakelaar is gecontacteerd, ligt de snelheid/richting waarde onmiddellijk op "dead stop". Vervolgens wordt een nieuwe reeks van snelheid/richting, bewerkingstijd en pauze waarden berekend, maar de snelheid/richting bereik is beperkt tot beweging in de tegenovergestelde richting.
LED 's
De LEDs zijn bekabeld op basis van deze configuratie. Bedrading van LEDs is doodsimpel, dat de truc is het regelen van macht aan hen in de tekening op basis van een afzonderlijke gebeurtenis, zoals een timer of switch.
De LED's zijn ingebed in het gezicht van de wijzerplaat en worden getriggerd door de waarden die zijn gegenereerd voor snelheid en positie, pauze en run-time.
Deze code geknipt zal aanzetten een LED als de waarde van randpause > 2000, anders blijft het uit.
Als (randpause > 2000)
{digitalWrite (led3, hoge);}
else {digitalWrite (led3, laag);}