Robotica.Kimchi.ASM.OnBoard

Il programma, scaricabile qui, governa tutte le funzioni del robot. Giunto alla fine ho scoperto l'esistenza di PowerASM una "libreria" che semplifica molto la programmazione, tuttavia e' utilizzata solo alla fine del programma. Devo ancora ottimizzarlo con le nuove funzioni. Quella libreria e' comunque inclusa. Ho utilizzato un watch dog timer perche' all'inizio succedeva che il programma riceveva comandi sbagliati a causa di disturbi radio, da quando ho inserito i trucchetti di verifica non e' piu' entrato in funzione. Il programma e' abbastanza commentato tuttavia descrivero' a grandi linee il funzionamento.
Come si puo' vedere il MainLoop questa volta e' abbastanza lungo, infatti oltre a controllare la presenza di segnali in arrivo deve anche gestire i servo e i motori. Per capire il programma occorre avere a vista il circuito elettronico del robot, almeno si ha chiaro cosa succede all'accensione dei rele'. Arrivati a VaiPow (linea 163) si vede come l'attivazione del transistor che attacca i motori dipenda da Autostp. Questa variabile (caricata in SetAng) verra' decrementata ad ogni ciclo e serve a fare da timer per i motori. Questa tecnica e' utile per evitare che se il robot esce dal campo radio o entra in una zona molto disturbata (Murphy: il telefonino va in ricezione proprio quando stavi testando il raggio d'azione...) continui ad andare avanti perdendone il controllo. In effetti ho implementato questa tecnica dopo essermi giocato un pezzo di Ricetrasmettitore perche' si e' infilato sotto al divano a tutta velocita' :-(
Alla linea 188 (SkPow) avviene il settaggio dei servo comandi, il braccio snodato. ARServ1 e' la subroutine che "rallenta" i servo. In pratica invece di settare direttamente il valore corrispondente al servo setto un valore incrementale che arrivera' a raggiungere quel valore solo dopo alcuni cicli. Il motivo e' quello di rendere piu' fluido il movimento. Il loop si conclude con lo spegnimento di tutti i motori a spazzole, questo per evitare che nella prossima istruzione (controllo antenna) vada ad interferire un disturbo causato dallo scintillio delle spazzole.

Contattatemi pure per chiarimenti.