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.itV. 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)
}
}
}