Stap 15: Het Script
De Arduino Uno-script is die hieronder zijn toegevoegd.
Nou, ben ik een C-programmeur van tientallen jaren geleden, dus, voor mij, het schrijven van de software was een wandeling down memory lane, en was waarschijnlijk het gemakkelijkste deel van dit hele project.
Ik besloot om uit de werkelijke low-level drivers voor de motor, IR, servo en LEDs abstract. Hoewel ik te lui was om daadwerkelijk gaan het volledige parcours van de object-georiënteerde en scheiden van deze functies in hun eigen C++ klassen, zou het niet moeilijk om te doen. Die oefening wordt voor de lezer overgelaten.
Stuurinrichting
Ik gepartitioneerd van de wiel-posities in een discrete aantal stappen links en rechts, zodat de knoppen links - of pijl-rechts op de afstandsbediening te drukken wordt toegevoegd aan of afgetrokken van de huidige beurt-waarde (met bereik controles). Dit werd vervolgens toegewezen aan een procentuele waarde (-100% t/m 100%, waarin "0" betekent "straight-ahead"), die laat het tot het laagste niveau te beslissen hoeveel werkelijke graden 100% vertegenwoordigen, en die waarde aan de servo feed. Dit gaf mij de meeste flexibiliteit in de code Tweek de max links/rechts draaien graden, evenals hoeveel knop drukt het neemt om er te komen. Ik gebruikte ook de middenknop (tussen de links - en rechts-pijlen) naar het midden van de wielen onmiddellijk (beurt-waarde instellen op 0).
Snelheid
Ik deed iets dergelijks met de motorsnelheid voorwaartse en achterwaartse: Ik heb gemaakt een discrete aantal stappen voor de snelheid, variërend van een positief getal, door 0, een negatief getal: positieve is vooruit, 0 is stop, negatieve is neerwaarts. Als u op de pijl-omhoog drukt, verhoogt het de huidige waarde; Als u op de pijl-omlaag drukt, vermindert het het (met bereik controles). Er is ook een knop die wordt de snelheid ingesteld op 0 (stop). De hoog niveau code wijst dat nummer toe aan een procentuele waarde (-100%... 100%) en daarna gaat het naar de lage code, die van de Arduino bereik (namelijk 0-255 kaarten) om te rijden op de HBridge. Nogmaals, alle deze abstractie stond me Tweek het snelheidsbereik, vooruit en achteruit, alsook het aantal knooppersen duurt om naar 100%.
In de toekomst dienst ik zou iets meer als een joystick controle van deze functies, maar aangezien de IR afstandsbediening toetsenbord is nogal onhandig om te gebruiken.
LED 's
Programmeren van de verlichting was waarschijnlijk het leukste. Mij troep opwaarts een generieke statusmachine stuurprogramma en vervolgens verschillende sets van statuscomputers gedefinieerd voor elk paar van LEDs. Dit stond me toe om te rijden elk van de 6 LED's met vooraf gedefinieerde patronen of onafhankelijk daarvan, samen.
Ik willekeurig toegewezen de cijfertoetsen van de pad te worden gebruikt als LED besturingselementen: 4 betekent links-draai signaal, 6 recht-draai, 5 waarschuwing flashers en anderen als dit nodig is. Het zou geweest zijn aardig voor de links - en rechts-draai knoppen als knevels, maar ik heb nooit aan die in het programma.