lunedì 22 settembre 2014

Domotica - Sistema anti intrusione

La casa è protetta da un antifurto perimetrale composto da reed (contatti magnetici) applicati a ogni
finestra. I contatti magnetici sono particolari interruttori che permettono il passaggio della corrente
a seconda che un magnete sia allontanato o avvicinato al dispositivo, in questo caso esso è posto su un oggetto mobile (porta o finestra). Mentre il sistema è abilitato, non appena una finestra o
porta viene aperta, l’allarme si attiva con una segnalazione acustica, ottenuta tramite un campanello, e da una segnalazione visiva data da una luce lampeggiante. Il sistema anti intrusione è attivabile e disattivabile tramite tastierino numerico, digitando una password. Il programma visualizza lo stato dell’allarme sul display della centralina.

Programma Arduino

#include <Keypad.h>
#define sirena 24
#define LEDA 17
#define mg1 4
#define mg2 3
#define mg3 2
#define mg4 44
#define mg5 45
#define mg6 14
#define mg7 15
#define mg8 16
int x = 0;
int y = 0;
int m = 0;
const byte ROWS = 4;
const byte COLS = 3;
char keys[ROWS][COLS] = {
  {'1','2','3'},
  {'4','5','6'},
  {'7','8','9'},
  {'*','0','#'}
};
byte rowPins[ROWS] = {34, 35, 36, 37};
byte colPins[COLS] = {38, 39, 40};
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup() {
pinMode(LEDA, OUTPUT);
pinMode (sirena, OUTPUT);
pinMode (mg1, INPUT);
pinMode (mg2, INPUT);
pinMode (mg3, INPUT);
pinMode (mg4, INPUT);
pinMode (mg5, INPUT);
pinMode (mg6, INPUT);
pinMode (mg7, INPUT);
pinMode (mg8, INPUT);
keypad.addEventListener(keypadEvent);
}

void loop() {
char key = keypad.getKey();
  pinMode ( x == 0) {
    lcd.setCursor(0, 0);
    lcd.print("CASA DOMOTICA   ");
    lcd.setCursor(0, 1);
    lcd.print("allarme off     ");
  }
  else {
    lcd.setCursor(0, 0);
    lcd.print("CASA DOMOTICA   ");
    lcd.setCursor(0, 1);
    lcd.print("allarme on      ");
  }
  if ( (digitalRead(mg1) == LOW) || (digitalRead (mg2) == LOW) || (digitalRead (mg3) == LOW) || (digitalRead (mg4) == LOW) || (digitalRead (mg5) == LOW) || (digitalRead (mg6) == LOW) || (digitalRead (mg7) == LOW) || (digitalRead (mg8) == LOW)) {
    y = 1;
  }
  else {
    y = 0;
  }
  if (( y == 1) && ( x == 1)) {
    do {
      digitalWrite(sirena, HIGH);
      do {
        digitalWrite(LEDA, HIGH);
        delay(100);
        digitalWrite(LEDA, LOW);
        delay(100);
        m = m + 1;
      }
      while (m < 1);
      m = 0;
      char key = keypad.getKey();
    }
    while (x == 1);
    digitalWrite(sirena, LOW);
    digitalWrite(LEDA, LOW);
  }
}
void keypadEvent(KeypadEvent key) {
  switch (keypad.getState()) {
    case PRESSED:
      if (key == '#') {
        x = !x;
      }
      break;
  }
}

Nessun commento:

Posta un commento