COG-Burn väja Steer fötter (3 / 5 steg)
Steg 3: Uppdatera fast programvara
Koden är ganska enkel.
Vi har en RS232 (seriell) gränssnittsmenyn konfigurera I2C adress, mjuka gränser på sensorn, varvtal och standard rubrik. De flesta av firmware är associerad med den seriella gränssnittsmenyn. Använd en USB till RS232 TTL enhet som ett FTDI marker att blinka din Arduino Pro Mini, serial-uttaget kommer sedan visar du menyn för konfiguration.
Den verkliga logiken är i "vika", denna rutin åtgärder position sensorn och sedan köra motorer upp till dubbla hastigheten anges att "komma ikapp" till andra sidan.
För I2C vi har två subrutiner, receiveEvent kallas när data anländer till Arduino på I2C bussen. RequestEvent inträffar när en I2C enhet begäran data från Arduino kör SwerveSteerTwoTone.
Vi använder EEPROM för att lagra inställningarna så att enheten kan minnas dess inställningar när den är avstängd. Du kan se detta som en hårddisk för Arduino. Kom ihåg att den bara har mycket få byte.
En smart bit i denna kod använder funktionen tonar för att skapa en konsekvent timer för att generera två olika frekvenser för de två stegmotorer. Detta tonar funktion utdata på Pin 2 och sedan Pin 2 är också Int 0 ändringar Int 0 då kalla avbrottshanterare "intHandler". intHandler kontrollerar om PIN-koden för stepper motor måste växlas, det gör detta för två stift.
Allt detta kunde vara är mer elegant men detta ett bra sätt att skapa inkapsling av foten rörelsen bort från resten av koden för roboten.
Slutligen en sista anmärkning. Vi är starkt troende i "Den enklaste sak som kunde möjligen arbete." så det är möjligt att denna kod kommer att misslyckas i något fall eller kunde skrivas till snabbare eller har renare mer konsekvent timing. Men detta är det enklaste vi trodde skulle fungera. Och det förekommer att fungera som förväntat.