top of page

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

Circuito 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(); 
      }
}
}

La libreria da scaricare è la keypad di Mark Stanley, Alexander Brevig;

Sketch
Video tutorial

VIDEO TUTORIAL

MANUALE D'USO

Manuale d'uso

SLIDE FOR COMPANY

SLIDE FOR COMPANY
bottom of page