Da circa tre giorni ho in funzione lo spaventa-passeri. Da questi pochi giorni, sembra che la ricetta per allontanarli non sia la paura, ma lo "scassamento di cabbasisi" (bisogna stressarli).
Avevo realizzato il centralone per gestire irrigazione e allarmi, ma al momento l'ho parcheggiato.
Ho realizzato una versione leggera dell'allarme, con.
Sensore luce.
Lettura tensione.
Relè per attivare l'allarme.
Led per il livello di carica.
Rinunciato al lettore mp3, (per niente affidabile).
Sto utilizzando una tromba a 12 volt, riproduce 5 sirene, volume regolabile, e microfono, si trovano tra i 15 e 25 euro.
Questa versione leggera di arduino, mi consente di piazzarlo facilmente nei posti dove è in atto un assalto.
Arduino nano e i componenti sono montati su un "Terminal Adapter", ha uno zoccolo per inserire arduino, e per ogni pin corrisponde un morsetto a vite.
Dicevo. Circa tre giorni di prove. Inizialmente sembrava non avvicinassero, ma il secondo giorno ho visto circa 4 colombacci a pochi metri della tromba. Cambiando le varie tonalità sembra che una bitonale acuta (un po più acuta delle ambulanze) li infastidisca di più. La tonalità tipo tromba di camion (l'ho sentita anche nei film americani nei camion dei pompieri), forse ha attirato dei corvi neri, qualche giorno riproverò per verifica.
Ho impostato 3 secondi di allarme, ogni 3 minuti.
Il motore del codice.
void loop()
{
// Spia - se maggiore 9 volt spia on, con variazione intensità in base alla tensione letta.
if (tensione > 9)
{digitalWrite(spia12v, LOW); delay(loff); digitalWrite(spia12v, HIGH); delay(lon);
} else {digitalWrite(spia12v, LOW);}
// ----- Ogni 0,5 secondi -------
if (millis() > mill1 + 500 )
{ mill1 = millis();
audio(); // verifica o esegui audio
}
// ----- Ogni 4 secondi -------
if (millis() > mill2 + 4000 )
{ mill2 = millis();
// Legge tensione
valpin12v = analogRead(pin12v);
tensione = valpin12v*coefficiente_conversione;
// Fotoresistenza
vpin_fr = analogRead(pin_fr); //Legge la tensione su A2
lux = (vpin_fr * RD * 10) / (RIF * PULL * (1024 - vpin_fr));
serialprint(); // - - - - serialprint - - -
// intensità luce led
if (tensione < 11) {loff = 60; lon = 5;} // 10 -
if ((tensione > 10) && (tensione < 12)) {loff = 40; lon = 5;} // 11
if ((tensione > 11) && (tensione < 13)) {loff = 20; lon = 5;} // 12
if ((tensione > 12) && (tensione < 14)) {loff = 10; lon = 5;} // 13
if ((tensione > 13) && (tensione < 15)) {loff = 5; lon = 5;} // 14
if (tensione > 14) {loff = 400; lon = 400;} // 15 +
if (tensione > 15) {loff = 200; lon = 200;} // 15 +
}
}
void audio() // Audio
{
if (audiouscite != 0)
{ if (lux >= soglialux)
{ if (tensione > 10)
{ if (millis() > aAtotmillis)
{ calcolatempo(); // calcola ettesa prossimo
if (audiouscite == 1) {uscita = 1; }
if (audiouscite == 2) {uscita = 2; }
if (audiouscite == 3) { uscita ++; if (uscita > 2) {uscita = 1;}}
millisaa = millis() + durataaudioa; millisab = millis() + durataaudiob;
} // tempo
if (uscita == 1) { if (millis() < millisaa) {digitalWrite(releaa, LOW);}}
if (uscita == 2) { if (millis() < millisab) {digitalWrite(releab, LOW);}}
if (millis() > millisaa) {digitalWrite(releaa, HIGH);}
if (millis() > millisab) {digitalWrite(releab, HIGH);}
} else {digitalWrite(releaa, HIGH); digitalWrite(releab, HIGH);} // volt
} else {digitalWrite(releaa, HIGH); digitalWrite(releab, HIGH);} // lux
} else {digitalWrite(releaa, HIGH); digitalWrite(releab, HIGH);} // audio on
} // Fine void audio
void calcolatempo() // calcolo attesa prossimo evento
{ aAtotmillis = 0; aAtotmillis = i_audio * 60.0 * 1000.0; aAtotmillis += millis();
}