ma ci son problemi in sto forum?? dopo che mi loggo compare ancora la scritta "sign in" e se cerco di accedere a questa discussione mi continua a ritornare all'inzio del forum per svariate volte....
vabbè un problema alla volta, torno per il mio circuitino "scovatore" di presenza acqua.
sto testando il funzionamento con uno dei sensori umidità per il terreno che già ho.
ho fatto uno sketch "alla buona" molto rapidamente che mi riporta i valori letti dal sensore sul monitor seriale, e se il valore scende sotto una certa soglia mi suoni un piccolo buzzer. il sensore in questione rimanda un valore 1023 senza umidità (secco) e man mano che l'umidità del terreno (nel mio caso di un panno) sale, il valore restituito dal sensore diminuisce.
io per testarlo ho preso un fazzoletto di carta asciutto ed ho avvolto il sensore, risultato sul monitor seriale 1023 fisso.
poi ho bagnato il fazzoletto mettendo acqua con una siringa e in pochi secondi il valore ha iniziato a scendere, fino a che andando sotto la soglia da me impostata a 700 ha suonato "l'allarme" (il buzzer)
per far funzionare devo però far pressione sul fazzoletto imbevuto e farlo andare a contatto col sensore.
togliendo il fazzoletto in pochi secondi il valore letto aumenta fino a 1023
se provo a mettere direttamente delle goccioline sullo stampato del sensore non succede nulla, il valore restituito rimane 1023...
in pratica le 2 estremità dello stampato devono entrare in conduzione fra loro credo.
questo lo sketch che ho fatto (da migliorare):
const int soglia_critica = 700; //Soglia di "allarme" bagnato
int i; // definisce la variabile “i” utilizzata in un ciclo di for
void setup()
{
Serial.begin(9600);
pinMode(9, OUTPUT); //attiva allarme
}
void loop()
{
int sensorValue = analogRead(A0); //Legge il valore analogico
Serial.println(sensorValue); //Stampa a schermo il valore
if (sensorValue <= soglia_critica)
{
for (i = 0; i < 350; i++) // definisce la durata del primo suono (350 cicli da 2 millisecondi).
{
digitalWrite(9,HIGH); //Accendi allarme
delay(1); // attende 1 millisecondo e riparte dall’istruzione for (350 ripetizioni)
digitalWrite(9, LOW); // disattiva il suono
delay(1);
}
delay (50); // attende 50 millisecondi
for (i = 0; i < 150; i++) // definisce la durata del secondo suono (150 cicli da 4 millisecondi)
{
digitalWrite(9, HIGH); // attiva il suono
delay(2); // attende 2 millisecondi (ripete il suono ogni 4 millisecondi e quindi
// 250 volte al secondo)
digitalWrite(9, LOW); // spegne il suono
delay(2); // attende 2 millisecondi e ripete il ciclo per 150 volte
}
}
else
digitalWrite(9,LOW); //Spegni buzzer
delay(2000); //Attende due secondi
}
penso che oltre all'allarme acustico aggiungerò l'accensione di un led, magari lampeggiante.
che ne dite, può andare?
o forse è meglio che acquisto proprio un sensore goccia/pioggia?