Seg... pinne. (12 / 14 steg)
Steg 12: Styrning och andra lösa ändar.
Utmatningen till motorerna sker genom att en modulerad (PWM) signal på motor controller insatsvaror. I Arduino mark görs detta med analogWrite(). Men standard Arduino PWM frekvens är alldeles för låg för motorstyrning, så jag lagt några direkta register manipulation för att tvinga den att vara 15.625 kHz. Eftersom registeransvariga är reversibel, jag använder en liten skog av om uttalanden att lista ut vad man ska sätta på DIR stiften och även att Invertera kommandot utdata.
En mycket viktig del av skrift god kontroll mjukvaran hanterar datatyper. Du kan se i koden som jag ofta uttryckligen typecast för att se till att jag får exakt den datatyp som jag vill i varje steg av beräkningen. Ingenting är värre än att ha din controller freak ut eftersom en variabel svämmade över. Av den anledningen gälla jag också begränsa vid varje steg att se till att variablerna bo inom lämpliga spänner. Exempelvis tar analogWrite() ett heltalsvärde mellan 0 och 255, så jag begränsa utgångarna till denna rad i varje steg av beräkningen.