Ciao a Tutti,
Volevo chiedervi un consiglio riguardo al voler costruire un allarme da garage che vorrei costruire.
Il sistema è molto semplice, almeno a parole lo è, solo che io non riesco a mettere insieme le istruzioni che vorrei fargli fare:
L'allarme avrà soltanto contatti digitali:
1 Contatto collegato alla porta di ingresso del garage;
2 Contatti anti scasso sul retro della scatola porta Arduino e sul coperchio della scatola stessa;
2 pulsanti che utilizzo come start e stop ;
1 Uscita per l'attivazione di un buzzer come avviso di pre allarme;
Un'uscita relè per attivare la sirena.
Il funzionamento del sistema:
Per fare si che l'allarme si attivi, con contatto porta e gli altri contatti anti scasso chiusi, premendo il pulsante "start" si attiva un temporizzatore di 10 secondi che mi da la possibilità di uscire dal garage e chiudere la porta/portone.
Ovviamente se il contatto non viene chiuso dopo questi 10secondi, si eccita il relè e si attiva la sirena.
Per disattivare l'allarme, una volta che apro la porta principale avrò un pre allarme dal buzzer per 10secondi, in questo timer dovrò premere il pulsante "stop", in caso non riuscissi a premere in tempo il pulsante di stop scatterà il relè.
Fino ad ora ho creato una parte di sketch che riporto sotto:
/*----------------------------------------------------------------------------------*/
int tempo = 1000;
int tempo10sec = 10000; /*tempo di pre allarme*/
int pinSirena = 8; /*Attivazione rele sirena*/
int buttonPin = 9; /*pulsante o contatto porta*/
int buzzer = 7; /*avviso preallarme*/
int startallarme = 5; /*attiva l'allarme*/
int stopallarme = 6; /*stoppa l'allarme*/
void setup() {
pinMode(pinSirena, OUTPUT);
pinMode(buttonPin, INPUT);
pinMode(buzzer, OUTPUT);
pinMode(startallarme, INPUT);
pinMode(stopallarme, INPUT);
}
void loop() {
if(digitalRead(startallarme)==HIGH){
digitalWrite(buzzer, LOW);
delay(tempo10sec);
digitalWrite(buzzer, LOW);
}
if(digitalRead(stopallarme)==HIGH){
digitalWrite(buzzer, LOW);
delay(tempo10sec);
digitalWrite(buzzer, LOW);
}
if(digitalRead(buttonPin)==HIGH) {
delay(tempo);
digitalWrite(buzzer, HIGH);
delay(tempo10sec);
digitalWrite(pinSirena, HIGH);
}
else{
digitalWrite(pinSirena, LOW);
digitalWrite(buzzer, LOW);
delay(tempo);
digitalWrite(startallarme, LOW);
digitalWrite(buzzer, LOW);
delay(tempo);
}
}
Ho provato a leggere alcune dispense/manuali ma non credo di aver trovato il libro, manuale, youtuber ecc per riuscire a capire davvero quello che devo usare come comando.
Ho provato anche ad inserire un comando "while" ma non credo di averlo usato bene, se non sbaglio il comando while significa che "fino a quando non succede una cosa, allora non fare l'istruzione.
Vorrei chiedervi dove ho sbagliato e se mi potreste aiutare a capire i miei errori così da poter migliorare.
Un'altra domanda, potete consigliarmi un sito, libro, manuale dove vengono descritti i vari comandi per Arduino, anche un qualcosa a livello proprio "tera tera"...
Grazie per ora
Andrea
