Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Revision 0:bb97e8580dd0, committed 2018-12-04
- Comitter:
- AndreaS97
- Date:
- Tue Dec 04 10:09:41 2018 +0000
- Commit message:
- Cassaforte Yo
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/KeypadLib.lib Tue Dec 04 10:09:41 2018 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/users/rlanghbv/code/KeypadLib/#1f7793af2f64
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Tue Dec 04 10:09:41 2018 +0000
@@ -0,0 +1,131 @@
+#include "mbed.h"
+#include "keypad.h"
+
+int dim=4;
+Serial pc(USBTX, USBRX);
+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(D11); //porta del magnete
+bool alonoff=true; //variabile booleana per abilitare o disabilitare l'allarme in caso di apertura e chiusura (?)
+void inserimento(char[],int); //funzione per inserire parametri dal tastierino
+void menu(); //funzione per andare al menu (dove è possibile cambiare pas, aprire ecc...
+void alarm(); //funzione allarme (attiva il buz e fa inserire il codice per la disattivazione)
+int i=0;
+int main(){
+ char vet[dim];
+ int cont;
+ int tent=0; //MANCA LA PARTE RELATIVA AL MAGNETICO (Magnetico aperto(mag=0) => suona se l'allarme è inserito)
+ do{
+ cont=0;
+ pc.printf("Insert password: "); //inserimento della password
+ inserimento(vet,dim);
+
+ for(int p=0;p<dim;p++){ //confronto con la password
+ if (vet[p]==pass[p]){
+ cont++;
+ }
+ }
+
+ if (cont==dim){ //se il confronto è andato bene vai al menu e disattiva l'allarme
+ pc.printf("The password is correct \n");
+ alonoff=false;
+ menu();
+ }
+ if(cont!=dim){ //se il confronto non è andato incrementa i tentativi e si riparte da capo
+ pc.printf("Password not valid");
+ tent++;
+ if (tent==3){ //se i tentativi sono più di tre chiama la funzione allarme
+ alarm();
+ }
+ }
+ }while(1); //il while(1) permette di ripetere l'operazione di continuo, si esce solo
+} //saltanto alla funzione allarme o menu, dalle due funzioni poi si potrà
+ //ritornare al main richiamandolo da capo.
+void inserimento(char a[],int n){ //funzione di acquisizione dal tastierino
+ i=0;
+ do{
+ keypad.enablePullUp();
+ char val = keypad.getKey();
+ if(val != KEY_RELEASED){ //se qualche tasto è premuto stampalo e mettilo nell'array
+ pc.printf("%c ",val);
+ a[i]=val;
+ i++;
+ wait(0.4);
+ }
+
+ }while(i<n); //ripeti fino alla dimensione dell'array richiesto
+}
+
+void menu(){ //funzione menu (si accede quando la password è corretta)
+
+ pc.printf("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)
+ pc.printf("Not Valid"); //se il valore è diverso da A, B o C ripeti l'inserimento.
+ }
+ }while(val!='A' && val!='B' && val!='C');
+
+ if(val=='A'){ //MANCA APERTURA CON SERVO
+ pc.printf("Opening... \n"); //apertura col servo e disattivazione dell'allarme (altrimenti se il magnetico si apre
+ menu(); //si va in allarme)
+ }
+ if(val=='B'){ //MANCA CHIUSURA CON SERVO
+ pc.printf("Closing..."); //chiusura servo e abilitazione allarme, ritorno al reinserimento pass.
+ wait(4);
+ alonoff=true;
+ main();
+ }
+ if(val=='C'){ //cambio password:
+ char v[dim];
+ pc.printf("Enter new password: ");
+ inserimento(v,dim);
+ pc.printf("New password is %c %c %c %c, push A to confirm or C to cancel",v[0],v[1],v[2],v[3]);
+ 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
+ pc.printf("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.
+ pc.printf("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){
+ pc.printf("Password not valid \n");
+ cont=0;
+ }
+
+ }while(1);
+
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Tue Dec 04 10:09:41 2018 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/3a7713b1edbc \ No newline at end of file