Sistema di allarme

Ciao a tutti e perdonatemi se sbaglio qualcosa visto che sono nuovo :slight_smile:
Avrei bisogno di qualche dritta per realizzare un sistema d'allarme, composto da quattro fotocellule.
Quando un sensore rileva qualcosa, si accende il led rispettivo, parte la sirena(cicalino) e viene visualizzato sul display LCD il sensore attivo. Ho visto in rete, che per disinserire l'allarme viene usato un sensore PIR con l'annessa tessera; non disponendo di tale componente, vorrei inserire una password sul display usando dei bottoni(ad esempio premi 2 volte il centrale), ma purtroppo non so come fare. Spero ci sia qualcuno così gentile da aiutarmi :slight_smile:

Il codice:

#include <LiquidCrystal.h> // include la libreria del display

#define la 22 // dichiaro la variabile
#define lb 23 // dichiaro la variabile
#define lc 24 // dichiaro la variabile
#define ld 25 // dichiaro la variabile
#define sa 32 // dichiaro la variabile
#define sb 33 // dichiaro la variabile
#define sc 34 // dichiaro la variabile
#define sd 35 // dichiaro la variabile
#define buzzer 53 // dichiaro la variabile

boolean la = LOW; // dichiaro la variabile
boolean lb = LOW; // dichiaro la variabile
boolean lc = LOW; // dichiaro la variabile
boolean ld = LOW; // dichiaro la variabile

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // viene creata l'istanza dell'oggetto LiquidCrystal chiamata lcd in cui sono indicati i pin dell'LCD collegati alle uscite digitali di Arduino

void setup() {

pinMode(la, OUTPUT); // imposta il pin digitale come output
pinMode(lb, OUTPUT); // imposta il pin digitale come output
pinMode(lc, OUTPUT); // imposta il pin digitale come output
pinMode(ld, OUTPUT); // imposta il pin digitale come output
pinMode (buzzer, OUTPUT); // imposta il pin digitale come output

pinMode(sa, INPUT); // imposta il pin digitale come input
pinMode(sb, INPUT); // imposta il pin digitale come input
pinMode(sc, INPUT); // imposta il pin digitale come input
pinMode(sd, INPUT); // imposta il pin digitale come input

lcd.begin(16, 2); // numero di colonne ed il numero di righe dell'LCD
lcd.print("Zona sicura"); // stampa il messaggio sul display
}

void loop() {

boolean statosa = digitalRead(sa); // memorizza lo stato del sensore
boolean statosb = digitalRead(sb); // memorizza lo stato del sensore
boolean statosc = digitalRead(sc); // memorizza lo stato del sensore
boolean statosd = digitalRead(sd); // memorizza lo stato del sensore

lcd.setCursor(0, 0); // posiziona il cursore in colonna 0 e linea 0

if (statosa != LOW); // se il sensore rileva movimento
{
(la = HIGH); // accende il led
lcd.setCursor(6, 1); // posiziona il cursore in colonna 6 e linea 1
Serial.print("A"); // stampa il messaggio sul display
}
else (statosa == LOW); // se il sensore non è attivo
{
(la = LOW); // spegne il led
}

if (statosb != LOW); // se il sensore rileva movimento
{
(lb = HIGH); // accende il led
lcd.setCursor(7, 1); // posiziona il cursore in colonna 7 e linea 1
Serial.print(",B"); // stampa il messaggio sul display
}
else (statosb == LOW); // se il sensore non è attivo
{
(lb = LOW); // spegne il led
}

if (statosc != LOW); // se il sensore rileva movimento
{
(lc = HIGH); // accende il led
lcd.setCursor(9, 1); // posiziona il cursore in colonna 9 e linea 1
Serial.print(",C"); // stampa il messaggio sul display
}
else (statosc == LOW); // se il sensore non è attivo
{
(lc = LOW); // spegne il led
}

if (statosd != LOW); // se il sensore rileva movimento
{
(ld = HIGH); // accende il led
lcd.setCursor(11, 1); // posiziona il cursore in colonna 11 e linea 1
Serial.print(",D"); // stampa il messaggio sul display
}
else (statosd == LOW); // se il sensore non è attivo
{
(ld = LOW); // spegne il led
}

if (statosa != LOW || statosb != LOW || statosc != LOW || statosd != LOW); // se almeno un sensore è attivo
Serial.printl("Intruso"); // stampa il messaggio sul display
Serial.println("zona:"); // stampa il messaggio sul display
allarme(); // attiva la sirena
}

void allarme() {

for (i = 0; i < 3; i++); // ripete il ciclo tre volte
{
tone(buzzer, 400); // accende il buzzer
delay(500); // attende 0,5s
tone(buzzer, 200);
delay(500); // attende 0,5s
}
}

andre12594:
Ciao a tutti e perdonatemi se sbaglio qualcosa visto che sono nuovo :slight_smile:

Allora ...

  1. Non ti sei presentato QUI (spiegando quali conoscenze hai di elettronica e di programmazione)

  2. Non hai letto il REGOLAMENTO (... e non hai racchiuso il codice tra i tag CODE)

  3. ... ma peggio di tutti ... stai scrivendo in un area riservata ... e si che, come primo post dell'area c'è, in grassetto, QUESTO

Ora un moderatore dovrà spostare la tua discussione ...

Guglielmo