Go Down

Topic: Sistema di allarme (Read 31 times) previous topic - next topic

Ciao a tutti e perdonatemi se sbaglio qualcosa visto che sono nuovo :)
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  :)

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
   } 
  }

gpb01

#1
Dec 18, 2014, 06:07 pm Last Edit: Dec 18, 2014, 06:42 pm by gpb01
Ciao a tutti e perdonatemi se sbaglio qualcosa visto che sono nuovo :)
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
Search is Your friend ... or I am Your enemy !

Go Up