A
Dependencies: mbed Servo KeypadLib TextLCD
Cassaforte.cpp
- Committer:
- AndreaS97
- Date:
- 2018-12-05
- Revision:
- 2:74c155c71eb5
- Parent:
- 1:02c938489de7
- Child:
- 3:c64c5ac14d22
File content as of revision 2:74c155c71eb5:
#include "Cassaforte.h" #include "TextLCD.h" #include "Servo.h" #include "keypad.h" I2C i2c(D14, D15); TextLCD_I2C lcd(&i2c, 0x4E, TextLCD_I2C::LCD16x2, TextLCD_I2C::HD44780); DigitalOut led(LED1); Servo servo(D11); int dim=4; Keypad keypad(D6,D5,D4,D3,D10,D9,D8,D7); //porte del tastierino char pass[4]={'1','2','3','4'};//password di default (è possibile cambiarla dal menu) DigitalOut buz(D2); //porta buz DigitalIn mag(D1); //porta del magnete bool alonoff=true; //variabile booleana per abilitare o disabilitare l'allarme in caso di apertura e chiusura (?) void inizializza(){ lcd.setMode(TextLCD_I2C::DispOn); buz=0; //lcd.setCursor(TextLCD_I2C::CurOn_BlkOn); } void scrivi(char parola[]){ lcd.cls(); lcd.printf("%s\n", parola); } void chiuso(){ servo.position(-90); } void aperto(){ servo.position(-90); } void inserimento(char a[],int n,bool vis){ int i=0; Timer t; t.start(); do{ keypad.enablePullUp(); char val = keypad.getKey(); if(t.read()>20 && buz==0){ //CHIUSURA dopo 20 secondi dal mancato inserimento main(); } if(val != KEY_RELEASED){ if(vis==true){ lcd.putc(val); lcd.setAddress(i+1,1); } a[i]=val; i++; wait(0.4); } }while(i<n); } bool confronto(char v[],int dim){ int cont=0; for(int i=0;i<dim;i++){ if (v[i]==pass[i]){ cont++; } } if (cont==4){ return true; } else{ return false; } } void menu(){ scrivi("A Apri B BloccaC Cambia codice"); char val; do{ inserimento(&val,1,false); }while(val!='A' && val!='B' && val!='C'); if(val=='A'){ //if(mag==1){ scrivi("Apertura..."); alonoff=false; aperto(); wait(2); menu(); // } } if(val=='B'){ if(mag==0){ scrivi("Chiusura..."); alonoff=true; chiuso(); wait(2); main(); } } if(val=='C'){ char v[dim]; scrivi("Nuovo codice:"); inserimento(v,dim,true); scrivi("Codice: "); for(int i=0;i<4;i++){ lcd.setAddress(i+12,0); lcd.putc(v[i]); } lcd.printf("A:ok C:annulla"); do{ inserimento(&val,1,false); if(val=='A'){ scrivi("Codice cambiato."); wait(1); for(int k=0;k<dim;k++){ pass[k]=v[k]; } main(); } if(val=='C'){ menu(); } }while(1); } } void allarme(){ char insa[4]; do{ buz=1; scrivi(" Allarme!"); inserimento(insa,4,true); if(confronto(insa,4)==true){ buz=0; menu(); } }while(1); }