ALLARME PRO 21H
È stato proposto, da un gruppo di studenti con competenze informatiche, in seguito al grande successo riscosso grazie alla presentazione della cassaforte un nuovo prototipo di allarme di sicurezza all'avanguardia. Questo prodotto è in grado di proteggere qualsiasi dal più piccolo appartamenti alle grandi aziende, attraverso un sistema di sicurezza dotato di un lettore di chiavi magnetiche.

SCHEMA ELETTRICO

SKETCH
#define USE_ALB_RFID
#include <LiquidCrystal.h>
#include "ArduinoLearningBoard.h"
#define SS_PIN 10
#define RST_PIN 9
#define LED 8
#define LED2 7
#define B 6
#define PIR 5
LiquidCrystal lcd(14, 15, 16, 17, 18, 19);
RFID rfid(SS_PIN, RST_PIN);
int codice[5];
bool statoallarme ;
void setup()
{
SPI.begin();
rfid.init();
lcd.begin(16, 2);
codice[0] = 0;
codice[1] = 0;
codice[2] = 0;
codice[3] = 0;
codice[4] = 0;
lcd.clear();
lcd.print(" BENVENUTO");
statoallarme = true;
digitalWrite(LED2, LOW);
digitalWrite(LED, HIGH);
delay(1000);
}
void loop()
{
lettura();
rilevatore();
}
void lettura()
{
int sec;
if (statoallarme)
{
lcd.clear();
lcd.print("ALLARME");
lcd.setCursor(0, 1);
lcd.print(" DISATTIVATO");
digitalWrite(LED2, LOW);
digitalWrite(LED, HIGH);
}
else
{
lcd.clear();
lcd.print(" ALLARME");
lcd.setCursor(0, 1);
lcd.print(" ATTIVATO");
digitalWrite(LED, LOW);
digitalWrite(LED2, HIGH);
}
if (rfid.isCard())
{
if (rfid.readCardSerial())
{
lcd.clear();
codice[0] = rfid.serNum[0];
codice[1] = rfid.serNum[1];
codice[2] = rfid.serNum[2];
codice[3] = rfid.serNum[3];
codice[4] = rfid.serNum[4];
if ((codice[0] == 52) && (codice[1] == 190) && (codice[2] == 45) && (codice[3] == 91) && (codice[4] == 252))
{
lcd.clear();
lcd.print(" CHIAVE VALIDA");
delay(5000);
lcd.clear();
if (statoallarme)
{ lcd.clear();
lcd.print(" ALLARME");
lcd.setCursor(0, 1);
lcd.print(" ATTIVATO");
delay(1500);
digitalWrite(LED, LOW);
digitalWrite(LED2, HIGH);
lcd.clear();
statoallarme = false;
lcd.setCursor(0, 0);
for (sec = 30; sec > 0; sec--)
{
if (sec <= 9)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("TEMPO RIMANENTE");
lcd.setCursor(0, 1);
lcd.print(" 00:0");
lcd.print(sec);
delay(1000);
}
else
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("TEMPO RIMANENTE");
lcd.setCursor(0, 1);
lcd.print(" 00:");
lcd.print(sec);
delay(1000);
}
}
}
else
{ lcd.clear();
lcd.print("ALLARME");
lcd.setCursor(0, 1);
lcd.print(" DISATTIVATO");
delay(1500);
digitalWrite(LED2, LOW);
digitalWrite(LED, HIGH);
lcd.clear();
statoallarme = true;
}
}
else
{
lcd.clear();
lcd.print(" CHIAVE ");
lcd.setCursor(0, 1);
lcd.print(" NON VALIDA");
delay(1000);
}
}
rfid.halt();
}
}
void rilevatore()
{
int i;
bool disinnescato;
i = -1;
disinnescato = false;
if (statoallarme == false)
{
if (digitalRead(PIR) == HIGH)
{
while ((!disinnescato) && (i < 16))
{
i++;
lettura();
if (statoallarme == true)
disinnescato = true;
delay(1000);
}
while (statoallarme == false)
{
lcd.clear();
digitalWrite(LED2, LOW);
tone(B, 466, 800);
delay(800);
lcd.print(" INTRUSO");
digitalWrite(LED2, HIGH);
tone(B, 622, 800);
delay(800);
lettura();
lcd.clear();
}
}
}
}