Stap 23:
De programmering.
Om vast te leggen van de RC gegevens ben ik met behulp van een eenvoudige Arduino functie genaamd pulseIn(). U ziet alle de verwijzing op de site van de Arduino. Ik ontdekte deze functie terwijl googlen "radio control joystick aan arduino" en vond dit geweldig voorbeeld van Sparkfun.
Alle code is beschikbaar in de github.
Er is een map met de naam "RC_reader" met een programma dat wordt afgedrukt RAW waarden naar de console en vangt alle 6 RC kanalen. Met behulp van deze code, ik ben het lezen van onbewerkte gegevens van de RC, nu moeten we enkel deze gegevens toewijzen aan een bruikbare indeling (0 - 1023) of (0 - 255) of (0 - 180).
--
De eigenlijke code hebben drie belangrijke functies:
RC RAW waarden toewijzen aan bruikbare waarden
rc_mapper();
bruikbare waarden toewijzen aan PWM waarden
motionMapper();
besturingselementen motion met IR-sensor en RC controle
motionControl();
--
rc_mapper() - kaarten de joystick naar een differentiële station, en nogmaals google maakte mijn dag, anders zou ik nog steeds worstelen met dit onderdeel. Deze functie geeft twee waarden 'left_vertical' en 'right_horizontal' die later worden gebruikt voor het toewijzen van snelheid aan de motoren.
motionMapper() - alle de bron voor deze functie kan worden gezien hier. Ik moest kappen dit codefragment te gebruiken met de Motoruino2, omdat de motoren op een slaaf uC, ben ik met behulp van een functie PWM instellen voor beide motoren.
motionControl() - gebruikt enkel de waarden die komt uit de motionMapper() en stuurt ze door middel van de functie setPWM (leftMotor, rightMotor).
--
Ik ben ook met behulp van de juiste knop op de afstandsbediening om in te stellen op maximale snelheid.
--
Er is ook een scherpe afstandssensor die wordt gebruikt om botsingen te vermijden. Op de controle van de beweging ben ik het testen van de afstand, en als het lager dan 100 is de bot loopt normaal, als er dan 100 en onder 200 het beweegt langzaam en als er dan 200 stopt. Het kan altijd in terugwaartse richting, er is nog steeds wat ik wil doen hier tweak, bijvoorbeeld, ik wil zitten kundig voor in- of uitschakelen van deze functie in runtime.
Voor het licht ik ben met behulp van een van de stokken met 3 posities. Elke positie geeft een waarde, elke waarde komt overeen met een lichte staat.
Niet te veel te zeggen over het servo-besturingselement. Ik moet gewoon om te controleren of de grenzen van de cursus om te voorkomen dat botsingen met andere apparaten op het bot.
Alle code is beschikbaar en commentaar op GitHub.