ciao a tutti, sto preparando la mia tesina per la maturità, il progetto consiste nel fare un robot che comando da computer (o da smartphone Android) cliccando su dei bottoni per dirgli se andare avanti indietro destra o sinistra, inoltre tramite dei sensori in scala di grigi vorrei premendo l'apposito pulsante che il robot cammini da solo sopra una riga nera (su sfondo bianco, o viceversa) però per vedere come il sensore vede il nero e il bianco dovrei catturare il segnale analogico che il sensore genera quando vede i colori.
la domanda è questa: come faccio a vedere sul computer a cosa corrisponde il colore nero (o bianco) per questo sensore??
non so se mi sono spiegato bene, comunque se qualcosa non vi è chiaro chiedete pure
grazie
EDIT: ho pensato di convertire il segnale analogico catturato in un segnale digitale in modo che ad esempio quando vede il nero mi genera una sequenza di bit (ad esempio quando vede il nero genera 11111111), solo che poi una volta che questa sequenza di bit è stata catturata io come la vedo da PC??
secondo me hai le idee un po' confuse e ciò probabilmente dipende dal fatto che non mastichi molto nè di elettronica nè di informatica.
Per discriminare una linea nera da uno sfondo bianco (o più chiaro) spesso si usano sei sensori a riflessione, che non sono altro che un led ed un fototransistor. Il fototransisto va in conduzione se riceve la luce riflessa (segnale logico alto) oppure se non riceve nessuna riflessione, cioè quando il led sta illuminando la striscia nera non conduce e riceverai uno stato logico basso.
E' un cosino tipo questo, prendilo come spunto per la ricerca, non come un componente consigliato.
I segnali analogici capionati su Arduino hanno già una rappresentazione digitale, un valore "fisico" che va da 0 a 5V nella logica di Arduino è un numero che va da 0 a 1023.
il sensore che dico io è composto da un LED e una fotoresistenza.
visot che il valore in ohm della fotoresistenza diminuisce all'aumentare dell'intensità della luce riflessa, passando sul bianco il valore diminuirà mentre passando sul nero il valore aumenterà quindi penso vada bene come sensore.
comunque questo è il mio primo esperimento con arduino quindi ancora non lo conosco benissimo
I segnali analogici capionati su Arduino hanno già una rappresentazione digitale, un valore "fisico" che va da 0 a 5V nella logica di Arduino è un numero che va da 0 a 1023.
grazie questo non lo sapevo.. comunque io una volta catturato questo valore come faccio a vedere quanto è?
ad esempio posso inviare costantemente tutti i valori che vede il sensore??
io eviterei di usare un segnale analogico... nel senso che se è nero hai un bit se è bianco ne hai un altro... potresti fare in questo modo: http://www.rattosfilter.altervista.org/
questo l'ho fatto io tempo fà... a te interessa la parte dei sensori che trovi dentro allo schema
grazie ratto93 ora do un' occhiata.
ma per usare il sensore come segnale digitale basta collegarlo ai PIN digitali al posto dei pin analogici??
e poi con il segnale analogico io so che usando una fotoresistenza il valore in ohm diminuisce all'aumentare dell'intensità della luce riflessa quindi ad esempi se il robot è sopra una superficie bianca il valore che dovrebbe restituire è 0 mentre se è sopra una superficie nera è 1023.
usando i PIN del digitale per ottenere un segnale digitale (0/1) il nero corrisponde a 1 e il bianco a 0??
@ Dea1993 non usare fotoresistenze ma fototransistor. Sono piú sensibili e piú veloci.
@ ratto93 usare il sensore in modo digitale limita l'uso perché con leggendolo in modo analogico si possono via SW settare i livelli di riconoscimento della striscia in modo piú fine.
Ciao Uwe
Si è vero UWE però a quanto mi par di capire dea è alle prime armi quindi, forse è meglio partire con un uno o zero tanto poi a modificare il circuito ed il programma ci vuole ben poco..
si forse va bene lo stesso usare un segnale digitale per quello che ci devo fare poi al massimo vedo se non va bene si fa in un attimo a rimetterlo sull'analogico e riprogrammarlo.
poi un'altra domanda ho letto sulle specifiche di arduino che la corrente DC per i PIN di I/O è di 40mA quindi non posso comandarci direttamente un motore con queste caratteristiche:
assolutamente no...
devi usare un ponte H, la maniera più semplice per collegarlo è usare sempre lo schema che ti ho postato solo che in quel caso non regoli la velocità, comunque si fà presto ad aggiungere questo controlllo..
perchè in quel caso non posso usare il PWM?? a me servirebbe proprio usare il PWM, anche se magari all'inizio faccio senza per prendere confidenza con arduino e poi in seguito lo modifico
perchè in quel caso controlli solo la direzione dei due motori, per controllarne anche la velocità devi collegare i pin di enable ad una porta con PWM e li applichi il segnale desiderato che può essere lo stesso per entrambi i motori o diverso...