Antifurto temporizzato
-
- Messaggi: 138
- Iscritto il: sab 13 lug 2019, 22:59
- Località: Provincia di Novara
- Contatta:
Antifurto temporizzato
Buonasera a tutti, sto costruendo un piccolo antifurto per delle arnie e ho collegato un esp01 ad un reedswitch così in caso venga sollevata l'arnia si apre il contatto e tramite la scheda esp e IFTTT mi arriva una chiamata sul telefono. Però volevo collegare anche una sirena che dopo circa 5 minuti smetta di suonare per evitare di scaricare tutta la batteria che alimenta il tutto. Così ho collegato un arduino e un relè e la mia idea era di fare in modo che quando viene aperto il contatto del reed, l'arduino faccia scattare il relè e dia alimentazione alla sirena per 5 minuti, e poi smetta. Non ho trovato nessuno scketch del genere in rete. riuscireste a darmi una mano per cortesia?
Re: Antifurto temporizzato
Manca (e' implicito ma meglio chiedere) una specificazione di che cosa deve succedere se:
1. il coperchio viene richiuso prima dei 5 minuti di sirena;
2. il coperchio viene richiuso dopo i 5 minuti di sirena;
3. il coperchio non viene mai richiuso.
Assumendo che la risposta e' "la sirena suona per 5 minuti dopo la prima apertura dell'arnia, indipendentemente da una eventuale chiusura. La sirena non viene riarmata se non chiudendo l'arnia, e allora una nuova apertura causa altri cinque minuti di sirena.", allora puo' bastare
Ammetto di averlo compilato ma non eseguito. Come base di partenza dovrebbe andar bene, ovviamente ci si possono aggiungere molte cose.
1. il coperchio viene richiuso prima dei 5 minuti di sirena;
2. il coperchio viene richiuso dopo i 5 minuti di sirena;
3. il coperchio non viene mai richiuso.
Assumendo che la risposta e' "la sirena suona per 5 minuti dopo la prima apertura dell'arnia, indipendentemente da una eventuale chiusura. La sirena non viene riarmata se non chiudendo l'arnia, e allora una nuova apertura causa altri cinque minuti di sirena.", allora puo' bastare
Codice: Seleziona tutto
// N.B.: tutti questi valori possono essere adattati alla situazione "reale".
// Sono raggruppati qui per comodita' di accesso
// Definiamo che pin sono collegati al sensore di apertura dell'arnia
#define PINARNIA 1
// Il valore letto quando l'arnia e' chiusa/aperta
#define ARNIA_CHIUSA HIGH
#define ARNIA_APERTA LOW
// e al comando della sirena
#define PINSIRENA 2
// nonche' il valore di uscita per far suonare la sirena
#define SIRENA_ON HIGH
#define SIRENA_OFF LOW
uint8_t allarme;
void setup() {
// Definisci la direzione dei pin utilizzati
pinMode(PINARNIA, INPUT);
pinMode(PINSIRENA, OUTPUT);
digitalWrite(PINSIRENA, SIRENA_OFF);
allarme = false;
}
void loop() {
int iterazioni;
if (allarme == false) {
// L'arnia era chiusa l'ultima volta che ho guardato...
if (digitalRead(PINARNIA) == ARNIA_APERTA) {
// Oh no! Hanno aperto l'arnia! Occorre agire
allarme = true; // Ricordiamoci che siamo gia' passati di qui
digitalWrite(PINSIRENA, SIRENA_ON); // Accendiamo la sirena
delay(300000L); // Aspettiamo 5 minuti * 30 secondi/minuti * 1000 millisecondi/secondo
digitalWrite(PINSIRENA, SIRENA_OFF); // Spegniamo la sirena
}
} else {
// Siamo gia' passati per un ciclo di allarme, vediamo se hanno richiuso l'arnia
if (digitalRead(PINARNIA) == ARNIA_CHIUSA) {
// Hanno richiuso l'arma, resettiamo l'allarme
allarme = false;
}
}
}