Hallick min Zoomobil (15 / 16 steg)
Steg 15: Skriptet
Arduino Uno skriptet är bifogat nedan.
Tja, är jag C programmerare från decennier sedan, så för mig, skriver programvaran var en promenad ner memory lane, och var förmodligen den enklaste delen av hela projektet.
Jag bestämde mig till abstrakt ut faktiska lägsta-nivå-drivrutinerna för motor, IR, servo och lysdioder. Trots att jag var för lat för att faktiskt gå till full objektorienterad vägen och separata dessa funktioner i sina egna C++ classes, skulle inte det vara svårt att göra så. Att motion är kvar för läsaren.
Styrning
Jag partitionerade hjulet positioner i ett diskret antal steg vänster och höger, så att trycka på vänster - eller höger-pil knapparna på fjärrkontrollen lägger till eller subtraheras från det aktuella tur-värdet (med olika kontroller). Detta var sedan mappas till ett procentvärde (-100% till 100%, där 0 betyder "rakt fram"), som lämnar det till lägsta nivå att besluta hur många faktiska grader motsvarar 100% och mata detta värde till servo. Det gav mig större flexibilitet i koden att snurra på max vänster/höger sväng grader, samt hur många knapptryckningar det tar att komma dit. Jag använde även mittknappen (mellan vänster - och höger-pilarna) till mitten hjulen omedelbart (som tur-värde till 0).
Hastighet
Jag gjorde något liknande med motor hastighet framåt och bakåt: Jag skapade en diskret rad steg för hastigheten, allt från ett positivt tal, genom 0, till ett negativt tal: positiva är framåt, 0 är stopp, negativa är bakåt. Som du trycker på upp-pilen, ökar det det aktuella värdet. du trycker nedåtpilen, minskar det det (med olika kontroller). Det finns också en knapp som anger hastigheten 0 (stopp). Hög nivå koden mappar detta antal till ett procentvärde (-100%... 100%) och sedan går det ner till den låga kod, som kartor som till Arduinos utbud (nämligen 0-255) att köra HBridge. Igen, alla denna abstraktion får mig att snurra varvtalsområde framåt och bakåt, samt antalet knapptryckningar som krävs för att komma till 100%.
I framtiden kan jag använda något mer som en joystick för att styra dessa funktioner, men eftersom IR fjärrkontrollens knappsats är ganska klumpig att använda.
Lysdioder
Programming lamporna var nog det roligaste. Jag inrätta en allmän tillståndsdator drivrutin och sedan separata uppsättningar av staten maskiner för varje par av lysdioder. Detta tillät mig att köra var och en av de 6 lysdioderna med fördefinierade mönster tillsammans eller självständigt.
Jag godtyckligt mappas pad sifferknapparna för att användas som LED kontroller: 4 medel vänster-sväng signal, 6 rätt-vända, 5 varning blinkers och andra behov. Det hade varit trevligt för vänster - och höger-turn knappar vara växlar, men jag fick aldrig till det i programmet.