CASSAFORTE Z80Ti
È stato proposto, da un gruppo di studenti con competenze informatiche, un nuovo prototipo di cassaforte di ultima generazione. La nuova FoxSafe Z80Ti. Essa è in grado di proteggere qualsiasi cosa, attraverso un sistema di sicurezza all’avanguardia dotato di password scelta dall’utente.

SCHEMA ELETTRICO

SKETCH
#include <Keypad.h>
#include <LiquidCrystal.h>
#include <Servo.h>
#define LED 13
#define LED2 12
const byte ROWS = 4; // Quattro righe
const byte COLS = 4; // Quattro colonne
// Definizione mappa della tastiera
byte keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {
9, 8, 7, 6 };
byte colPins[COLS] = {
5, 4, 3, 2 };
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
char code [4],cod[4];
int i;
int sbagli=0;
int sbagli2=0;
LiquidCrystal lcd(14, 15, 16, 17, 18, 19);
Servo myservo;
int cont;
void setup() {
cod[0]='1';
cod[1]='2';
cod[2]='3';
cod[3]='A';
pinMode (LED, OUTPUT);
pinMode (LED2, OUTPUT);
pinMode(10,OUTPUT);
myservo.attach(11);
lcd.begin(16, 2);
cont=0;
digitalWrite (LED2,HIGH);
}
void loop()
{
lcd.setCursor(0, 0);
lcd.print("DIGITA CODICE:");
lcd.setCursor(0, 1);
for (i=0; i<4; i++) {
code[i] = keypad.waitForKey();
lcd.print('*');
}
delay(500);
if((code[0] == cod[0]) && (code[1] == cod[1]) && (code[2] == cod[2]) && (code[3] == cod[3])) {
digitalWrite (LED2, LOW);
lcd.clear();
sbagli2=0;
lcd.print (" CODICE ESATTO");
tone(10,2000,500);
delay(200);
tone(10,1000,200);
delay(1500);
lcd.clear();
if(cont%2==0)
{
digitalWrite (LED, HIGH);
myservo.write(10);
delay(15);
cont++;
}
else
{
myservo.write(180);
delay(15);
digitalWrite(LED,LOW);
digitalWrite (LED2,HIGH);
cont++;
}
}
if(((code[0] != cod[0]) || (code[1] != cod[1]) || (code[2] != cod[2]) || (code[3] != cod[3]))&&((code[0] != '*') || (code[1] != '*') || (code[2] != '*') || (code[3] != '*'))) {
lcd.clear();
lcd.print (" CODICE ERRATO!");
tone(10,3000,1000);
sbagli2++;
if(digitalRead(LED)==HIGH)
{
digitalWrite (LED2, HIGH);
delay(1000);
digitalWrite (LED2, LOW);
}
else{
digitalWrite (LED2, LOW);
delay (1000);
digitalWrite (LED2, HIGH);
delay(1500);
}
lcd.clear();
}
if(sbagli2==4)
{
int sec;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" CASSAFORTE");
lcd.setCursor(0, 1);
lcd.print(" BLOCCATA");
delay(2000);
lcd.clear();
for(sec=30;sec>0;sec--)
{
if(sec<=9)
{
lcd.setCursor(0, 1);
lcd.print("Attendi 00:0");
lcd.print(sec);tone(10,466,800);
delay(1000);tone(10,622,800);
}
else
{
lcd.setCursor(0, 1);
lcd.print("Attendi 00:");
lcd.print(sec);tone(10,466,800);
delay(1000);tone(10,622,800);
}
}
sbagli2=0;
lcd.clear();
return 0;
}
if((code[0] == '*') && (code[1] == '*') && (code[2] == '*') && (code[3] == '*'))
{
sbagli=0;
do
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Immetti il V.C.");
lcd.setCursor(0, 1);
for (i=0; i<4; i++) {
code[i] = keypad.waitForKey();
lcd.print("*");
}
delay(500);
if((code[0] != cod[0]) || (code[1] != cod[1]) || (code[2] != cod[2]))
{
lcd.clear();
lcd.print("Codice Errato");
}
sbagli++;
}
while(((code[0] != cod[0]) || (code[1] != cod[1]) || (code[2] != cod[2]) || (code[3] != cod[3]))&&(sbagli != 4));
if(sbagli==4)
{
int sec;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("CODICE BLOCCATO");
for(sec=30;sec>0;sec--)
{
if(sec<=9)
{
lcd.setCursor(0, 1);
lcd.print("Attendi 00:0");
lcd.print(sec);tone(10,466,800);
delay(1000);tone(10,622,800);
}
else
{
lcd.setCursor(0, 1);
lcd.print("Attendi 00:");
lcd.print(sec);tone(10,466,800);
delay(1000);tone(10,622,800);
}
}
lcd.clear();
return 0;
}
else
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Immetti il N.C.");
lcd.setCursor(0, 1);
for (i=0; i<4; i++) {
cod[i] = keypad.waitForKey();
lcd.print("*");
}
delay(500);
lcd.clear();
}
}
}