akuygry

Dependencies:   mbed Servo KeypadLib TextLCD

Files at this revision

API Documentation at this revision

Comitter:
AndreaS97
Date:
Tue Dec 04 11:50:39 2018 +0000
Parent:
0:5f8790dfc90c
Commit message:
Yo

Changed in this revision

Cassaforte.cpp Show annotated file Show diff for this revision Revisions of this file
Cassaforte.h Show annotated file Show diff for this revision Revisions of this file
KeypadLib.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/Cassaforte.cpp	Tue Dec 04 10:11:08 2018 +0000
+++ b/Cassaforte.cpp	Tue Dec 04 11:50:39 2018 +0000
@@ -1,59 +1,29 @@
 #include "Cassaforte.h"
 #include "TextLCD.h"
 #include "Servo.h"
+#include "keypad.h"
 I2C i2c(D14, D15);
 //InterruptIn button(PC_13);
 TextLCD_I2C lcd(&i2c, 0x4E, TextLCD_I2C::LCD16x2, TextLCD_I2C::HD44780);
 DigitalOut led(LED1);
-Servo servo(D3);
-bool sensore = false;
+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);
     lcd.setCursor(TextLCD_I2C::CurOn_BlkOn);
-    if (sensore == true)
-        chiuso();
-        else aperto();
     }
 
 void scrivi(char parola[]){
     lcd.cls();
     lcd.printf("%s\n", parola);
     }
-    
-void cambioCodice(){
-    led=!led;
-    scrivi("Cambio codice   di apertura");
-    lcd.setAddress(11,1);
-    wait(3);
-    lcd.cls();
-    scrivi("Digitare il nuo_vo codice:");
-    lcd.setAddress(10,1);
-    inserimento();
-    led=!led;
-    }
-    
-void inserimento(){
-        /*for (int i=0; i<4; i++){
-            wait(1);
-            lcd.putc(i);
-            wait(1);
-            lcd.setAddress(11+i,1);
-            }*/
-        wait(1);
-        lcd.putc('1');
-        wait(1);
-        lcd.setAddress(11,1);
-        lcd.putc('2');
-        wait(1);
-        lcd.setAddress(12,1);
-        lcd.putc('3');
-        wait(1);
-        lcd.setAddress(13,1);
-        lcd.putc('4');
-        wait(1); 
-    }
-    
+       
 void chiuso(){
     servo.position(-90);
     
@@ -62,4 +32,104 @@
 void aperto(){
     servo.position(-90);
     
-    }
\ No newline at end of file
+    }
+void inserimento(char a[],int n){ //funzione di acquisizione dal tastierino
+    keypad.enablePullUp();
+    for(int k=0;k<n;k++){
+    keypad.enablePullUp();
+    char val = keypad.getKey();
+        if(val != KEY_RELEASED){ //se qualche tasto è premuto stampalo e mettilo nell'array  
+                    lcd.putc(val);
+                    lcd.setAddress(k,1);
+                    a[k]=val;
+                    wait(0.4);
+                }
+                
+        }
+}
+void menu(){ //funzione menu (si accede quando la password è corretta)
+    
+    scrivi("A to open, B to Block, C to Change password ");
+    char val;
+    do{
+        inserimento(&val,1); //inserimento dell'opzione scelta dal tastierino (in questo caso la dimensione è 1 e poichè la funzione
+        if(val!='A' && val!='B' && val!='C'){ //accetta solo variabile indirizzo bisogna mandare l'indirizzo di val)
+            scrivi("Not Valid");     //se il valore è diverso da A, B o C ripeti l'inserimento.
+            }
+    }while(val!='A' && val!='B' && val!='C');
+    
+    if(val=='A'){  
+        if(mag==1){                                 
+            scrivi("Opening... \n");
+            alonoff=false;
+            aperto();
+            wait(2);                            
+            menu();                   
+            }
+        }
+    if(val=='B'){  
+        if(mag==0){                                 //MANCA CHIUSURA CON SERVO
+            scrivi("Closing...");  
+            alonoff=true;
+            chiuso();      //chiusura servo e abilitazione allarme, ritorno al reinserimento pass.
+            wait(2);
+            main();
+            }
+        }
+    if(val=='C'){       //cambio password:
+        char v[dim];
+        scrivi("Enter new password: ");
+        inserimento(v,dim);
+       // scrivi("New password is %c %c %c %c, push A to confirm or C to cancel",v[0],v[1],v[2],v[3]);
+        scrivi("Il codice è:");
+        for(int i=0;i<4;i++){
+            lcd.putc(v[i]);
+            lcd.setAddress(i+13,0);
+            }
+        lcd.printf("A:ok, C:annulla");
+        inserimento(&val,1); //conferma della password inserita
+        do{
+            if(val=='A'){           //A=> Cambia la password con quella inserita e torna nel main (dove bisognerà, per
+                scrivi("Password changed \n");   //accedere al menu inserire di nuovo la password)
+                for(int k=0;k<dim;k++){
+                    pass[k]=v[k];
+                    }
+                    main();
+                }
+            if(val=='C'){       //C=>Non cambiare la password e torna di nuovo al menu
+                menu();
+                }
+            if(val!='A' && val!='C'){ //inserimento fin quando il valore è A o C.
+                scrivi("Not valid \n");
+                }
+            }while(val!='A' && val!='C');  
+    }
+}
+void alarm(){   //funzione allarme: (DA RIVEDERE)
+        int cont=0;
+        char insa[dim];                     //DA VEDERE !!!!
+        do{                 //il buz deve suonare durante l'inserimento della password corretta
+            buz=1;          //per disattivare l'allarme stesso e accedere al menu
+            wait(0.5);
+            buz=0;
+            wait(0.5);
+            
+                inserimento(insa,dim);
+                for(int h=0;h<dim;h++){
+                   if(insa[h]==pass[h]){
+                        cont++;
+                    }
+                }
+            
+                if(cont==dim){
+                    menu();
+                    cont=0;
+                    }
+                if (cont!=dim){
+                    scrivi("Password not valid \n");
+                    cont=0;
+                    }
+            
+            }while(1);
+        
+}
\ No newline at end of file
--- a/Cassaforte.h	Tue Dec 04 10:11:08 2018 +0000
+++ b/Cassaforte.h	Tue Dec 04 11:50:39 2018 +0000
@@ -1,10 +1,12 @@
 #ifndef Cassaforte_H
 #define Cassaforte_H
 #include "mbed.h"
+int main();
 void inizializza();
 void scrivi(char parola[]);
-void cambioCodice();
-void inserimento();
+void inserimento(char[],int);
 void chiuso();
 void aperto();
+void menu();
+void alarm();
 #endif
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/KeypadLib.lib	Tue Dec 04 11:50:39 2018 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/rlanghbv/code/KeypadLib/#1f7793af2f64
--- a/main.cpp	Tue Dec 04 10:11:08 2018 +0000
+++ b/main.cpp	Tue Dec 04 11:50:39 2018 +0000
@@ -1,5 +1,5 @@
 #include "Cassaforte.h"
-//#include "mbed.h"
+#include "mbed.h"
 //#include <TextLCD.h>
 //I2C i2c(D14, D15);
 //TextLCD_I2C lcd(&i2c, 0x4E, TextLCD_I2C::LCD16x2, TextLCD_I2C::HD44780);
@@ -8,16 +8,14 @@
 void cambioCodice();
 void inserisci();*/
 InterruptIn button(PC_13);
-
+char v[4];
 int main() {
     /*lcd.setMode(TextLCD_I2C::DispOn);
     lcd.setCursor(TextLCD_I2C::CurOn_BlkOn);*/
     inizializza();
-    button.rise(&cambioCodice);
-        while(1) {
-            scrivi("Cassaforte");
-            wait(0.2);
-        }
+    scrivi("Immetti codice:");
+    inserimento(v,4);
+    
 }
 
 /*void scrivi(char parola[]){