Go Down

Topic: "Knock sensor" non mi funziona (Read 1 time) previous topic - next topic

nello

Premetto che ho acquistato da poco Arduino,ma so di non essere giustificato a chiedervi come mai non mi funziona il tutorial "Knock"(dato che tali tutorials sono estremamente semplici).Ho provato a vedere se fosse danneggiato il piezo elettrico,ma con "Melody" mi funziona... :-/...da cosa potrebbe dipendere?E' da un giorno e più che sto ricontrollando tutte le entrate ed uscite,ma senza soluzione... :'(

uccio

hai messo una resistenza dell'ordine dei megaohm in parallelo al piezo? altrimenti non vai da nessuna parte!

nello

La resistenza messa in parallelo col piezo ammonta a 33MOHM ma niente...boh?!

uccio

33 mega??' sei sicuro?!? non saranno mica kilo...

nello

No scusa sono 3.3 Mohm poichè i colori della resistenza sono arancio-arancio-verde-dorato,ma comunque dovrebbe funzionare no?

uccio

si la resistenza è ok...
mi dici cosa intendi per "non funziona"?
ciao

nello

Non funziona cioè quando "eccito il sensore toccandolo"(scusa ma mi sto "scemunendo" co sto esempio da un paio di giorni..knock = bussare, percuotere, battere...giusto?) il led non ne vuole proprio sapere di lampeggiare, anzi ti dirò di più: LAMPEGGIA A SUO PIACIMENTO!Cioè senza toccare il sensore e senza nessuna emissione di suoni(l'ho provato soprattutto di notte, quando ho più tempo libero) il led a volte si accende e spegne con intervalli lentissimi, altre volte con intervalli lunghissimio, altre volte ancora rimane acceso e non si spegne fin quando non resetto, insomma fa un pò come gli pare... :-?

nathanvi

nello, tre cose.
1) Prima di tutto stiamo parlando di questo esempio giusto?

2) In tal caso il piezo è sul pin analogico numero 0 (non sul digitale ad esempio) giusto?

3) Io proverei ad abbassare il numero THRESHOLD e mettere per esempio uguale a 50 o anche meno e vedere cosa succede.

Forse è solo un problema di sensibilità...

nello

1) e 2) SI! 3) Ho provato ad abbassare la sensibilità addirittura anche a 1!E' lo stesso!!!Forse è meglio che lascio per un pò stare per poi tornarci con un altro spirito?Perchè ora mi verrebbe di lanciarlo al muro.. :o..

nello

Comunque vi ringrazio molto per la disponibilità.. ;)..

stefanino

ciao nello
anche io ho avuto dei problemi con il piezo e questo sistema. molti! :|

ho parzialmente risolto, ma solo facendomi aiutare da un altro amico (il mitico andrea). mi ha fatto provare un collegamento SENZA resistenza, semplicemente provando combinazioni diverse, quello che funziona meglio e` senza resistenze , positivo del piezo sul pin 0 analogico, negativo del piezo sulla ground di arduino.
la patch è diversa, la posto in coda.

quello che non capisco (sono molto ignorante) è perchè fare il pullup analog e come mai funziona anche se dal serial monitor mi da sempre solo valori molto molto alti, prossimi al 900...


ciaociao fammi sapere


stefanino



/*
*****
script per Piezo input
originale http://rooreynolds.com/2008/05/14/hacking-the-doorbell/
modificato da A.Richetta www.akash.it
V. 0.1 11/05/2009
Status : Working
Connessioni:
Analog 0 -> + Piezo
ground -> - Piezo
*/


int ledPin = 13;   // LED
int potPin = 0;    // positivo Piezo
int val = 0;

long time = 0;
long debounce = 1000; // tempo per il debounce (gestione delle spurie del piezo)

void setup() {
 pinMode(ledPin, OUTPUT);      // digital Out
 Serial.begin(9600);           // Coneesione Seriale
 digitalWrite(14 + potPin, HIGH); // pullup analog, aggiunge 14 al valore del potpin
                                // (analog 0 = digital 14, a1 = d15, etc)
}

void loop() {
 val = analogRead(potPin);
 if (val < 1000) { //se il valore è inferiore a 1000
   if (millis()-time > debounce) { //guarda che sia passato il tempo impostato nel debounce
     Serial.println("ON");  //ok sono on
     Serial.println (val);  // scrive il valore del potpin
     digitalWrite(ledPin, HIGH);   //  LED on
     delay(500);                   // Aspetta
     digitalWrite(ledPin, LOW);    // LED off
     time = millis();  //rimposta la variabile time con il valore di millis (tempo di accensione di arduino dopo l'ultimo reset)
   }
 }

}

nello

Miracolosamente mi funziona l'esempio classico!Chissà cosa avevo sbagliato.. :-[

Go Up