ho comprato questo piccolo sensore che vorrei utilizzare piu o meno come encoder , funziona in digitale , l ho collegato ad arduino e gli ho detto che se la lettura digitale è HIGH mi deve scrivere yuppi ,
ma scrive costantemente yppi come se trovasse sempre il valore logico alto , allora ho provato ad invertire l HIGH con il LOW ma niente , non vi sto qui a scrivere il programma che sono 3 righe Digitalread etc etc , comunque ogni aiuto è ben accetto grazie
Copia e incolla lo sketch.
Possono essere anche 3 righe, ma essere errate.
sketchhhh
int sensore = 2;
Void setup ()
{pinMode ( sensore, INPUT);
Serial.begin (9600);
}
Void loop(){
if (digitalRead==HIGH)
{
{Serial.print ("yuppi");
} }
E' un sensore a scarica capacitiva
va gestito in modo diverso
http://www.robotstore.it/product/6/Sensore-di-riflessione-ad-infrarossi-Pololu-QTR-1RC.html
La sequenza di lettura tipica è:
Settare la linea di I/O come uscita e pilotarla a livello alto
Attendere almeno 10 us per la carica del condensatore da 10nF
Settare la linea di I/O come input (in alta impedenza)
Misurare il tempo necessario al condensatore per scaricarsi, ovvero aspettare di leggere un livello ZERO sulla linea di I/O
ok grandissimo in pratica assomiglia molto allo sketch del sensore di ultrasuoni ? o dico le solite boiate ?
ho creato il nuovo codice ma mi da sempre 0 :~
int slinea = 2;
int durata;
void setup() {
Serial.begin (9600);
}
void loop()
{
pinMode(2, OUTPUT);
digitalWrite(2 , HIGH);
delayMicroseconds(10);
pinMode(2, INPUT);
durata = pulseIn(2, LOW);
Serial.print (durata);
delay (3000);
}
Ma secondo lo scheda nelle note che hai scritto, dopo
delayMicroseconds(10);
non dovresti spegnere il pin
digitalWrite(2 , LOW);
prima di portarlo a input?
pinMode(2, INPUT);
niente mi da ancora 0
ho notato poi che togliendo il delay nel programma , a volte mettendo sotto una superfice riflettente aumentava il numero di volte che scriveva la durata , ho bisogno di una mano che diavolo devo fare ?