Per la nostra prossima acrobazia.
Come puoi vedere, ho zappato il mio sensore a infrarossi sul davanti del robot e
ho collegato le linee di alimentazione e analogiche.
Si noti dove ho eseguito il DCC e le linee di terra dal sensore.
Qui nell'angolo di Arduino, proprio accanto al pulsante di reset, c'è un'intestazione a sei pin e può essere usato per più cose,
ma il suo scopo principale è quello di una delle connessioni seriali, ma ha anche dei
pin di alimentazione.
Quindi, quando guardi l'intestazione con il pulsante di ripristino in alto a sinistra, il pin in basso a destra è più
cinque volt nel raccoglitore in basso a sinistra.
Così ho eseguito i miei collegamenti di potenza lì e poi ho eseguito il mio filo di segnale su uno zero proprio come faceva prima.
Ora ho il mio sensore a infrarossi montato sul front-end e posso usarlo come sensore di prossimità
e possiamo navigare in una stanza come fa anche l'aspirapolvere robot Roomba.
Ora, anche se questo è facoltativo, ritengo che questo sia molto importante e mi dispiace di aver dimenticato di
metterli su prima di fare la festa di ballo.
Ho dato al mio robot degli occhi finti.
Ora ovviamente non devi farlo, ma penso che sia un vero affare.
Quindi, prima di passare allo schizzo di navigazione ostacoli, dovremmo discutere di un problema che potresti
aver già incontrato.
A seconda di quanto hai ballato il tuo robot mentre passiamo nelle nostre lezioni, non ho notato che
questa cosa mangia le batterie per la colazione.
Questi motori e Edwina usano molto corrente e quindi scaricano le batterie a una tensione più
bassa piuttosto velocemente.
E poi inizi a ottenere cali di tensione sul tuo Arduino.
Quindi se a metà della sequenza l'Arduino riavvia misteriosamente la sequenza dall'inizio o è solo una specie
di spasmi e non va da nessuna parte.
Potrebbe essere quello che sta succedendo.
Prova alcune batterie nuove.
Ho passato due set con tutte le mie continue revisioni di test e la riprogrammazione dei miei sketch
Dance Dance per quella lezione.
Puoi anche provare a mettere un condensatore più grande come un condensatore di filtro sul tuo h bridge o metterlo nelle
intestazioni di Arduino quando il potere accade.
Questo potrebbe aiutare.
C'è un'altra testata di connessione seriale verso il basso e anch'essa ha pin di alimentazione collegati direttamente alla base di
alimentazione di Arduino.
Quindi potresti mettere un grosso condensatore su quei pin o potresti anche aggiungere un secondo pacco batteria in
serie o parallelo a quello già presente.
O anche solo aggiungendo un'altra batteria in serie manterrà la bassa tensione sopra i cinque volt perché in questo momento il
pacco batteria è di circa sei volt quando è completamente carico.
Quindi non ci vuole molto di meno per portarlo a meno di 5 volt o si
può semplicemente fare un paio di batterie guidate e poco costose.
Bene, facciamo un piano di gioco qui.
Se hai visto un Roomba in azione hanno più sensori a infrarossi e in realtà eseguono un po 'di mappatura della
stanza al volo.
Ma in realtà puoi realizzare la stessa cosa con solo un sensore paraurti come se avessimo appena randomizzato i tuoi movimenti
in tutta la stanza.
E quando incontri un ostacolo fermati e gira in una direzione casuale, continua ad andare avanti e indietro nel tempo
e eviti gli ostacoli e copri la stanza.
Quindi, nello schizzo di evitare gli ostacoli a infrarossi, quello che ho fatto è stato piuttosto semplice.
Ho impostato una variabile di soglia che è un numero che ho deciso nella nostra lezione precedente in cui abbiamo sperimentato
il sensore a infrarossi.
Ora nel mio caso ho deciso che se la lettura analogica del sensore a infrarossi fosse scesa al di sotto di circa 50,
ho sentito che era un rilevamento positivo di un ostacolo.
Ora potresti aver trovato un numero diverso a qualunque numero tu voglia schiaffo
quel numero lì dentro.
Ho impostato tutte le aperture GPI per il controllo del ponte H, ho impostato il robot per il movimento in avanti
e poi ho usato i numeri estratti dallo schizzo di calibrazione nell'ultima lezione per guidare una linea retta
approssimativa.
Lo schizzo raw scaricabile avrà entrambi questi numeri a venticinque.
L'ho già modificato per abbinarlo al mio robot.
Probabilmente avrai numeri diversi qui.
Basta cambiarli in qualunque numero tu abbia inserito nelle tue calibrazioni per andare in una linea retta
approssimativa, in modo che inizi a fare il trucking a una velocità controllata attraverso la funzione loop e ogni volta che lo ricolleghi
ci vuole una lettura dal sensore a infrarossi e se la lettura è al di sotto della soglia, prende una serie
di
passaggi prima ferma i motori e aspetta per mezzo secondo.
Non devi fare questa parte, ovviamente.
Ma ho programmato in ritardo.
Quindi imposta il lato b del ponte a 8 ore per la retromarcia.
Quindi il motore destro girerà all'indietro.
Quindi ruota la velocità in avanti del motore sinistro e il motore destro all'indietro a piena velocità in
modo che giri sul posto.
Ora, se avessi programmato il robot in modo che dicesse solo il motore della mano destra girato all'indietro, ciò
che accadrà è che il robot si girerà e tornerà indietro.
Ora potrebbe esserci un muro qui o qualche altro ostacolo che vorrei sapere e non lo lascerei tornare indietro.
Ma se giriamo sul posto non apportiamo alcuna modifica alla nostra posizione, quindi ruoterà in una
direzione diversa.
Ora ho appena scelto un tempo di ritardo arbitrario di trecento per la rotazione.
Potresti volerlo allungare o accorciare.
Stavo semplicemente mirando a circa 90 gradi di rotazione leggermente più o leggermente meno è meglio perché questo è
esattamente di 90 gradi.
Potresti rimanere intrappolato semplicemente viaggiando verso il perimetro esterno della stanza e basta.
Quindi, una volta completata la rotazione, spengo i motori in modo da dividere il secondo.
Di nuovo un altro ritardo che è opzionale ma mi piaceva avere questi
ritardi qui e poi torna all'inizio della funzione di loop che ovviamente imposta entrambi i motori per girare
in avanti e poi inizia a avanzare in linea retta a una velocità controllata Continuerà a farlo fino
a quando non incontrerà un altro ostacolo, quindi fai lampeggiare
il tuo Arduino e lascia cadere il robot nel mezzo per vedere cosa fa.
Puoi perfezionarlo mentre procedete cambiando i valori del diritto analogico per modificare le velocità del motore in modo
che guidi in un arco o in una linea retta migliore.
È possibile modificare i valori di soglia se non si è soddisfatti del rilevamento e, naturalmente, è possibile aggiungere anche
occhi googly.