Serratura elettronica

Salve ragazzi, sono nuovo nel campo di arduino, ho imparato ad utilizzare display lcd e piccoli altri strumenti (ho un mega2560). Ho anche fatto alcuni piccoli progetti, come ad esempio il sensore di parcheggio con il display, buzzer, led ecc.. e vorrei cercare di realizzare un progetto più complesso. Si tratta di una serratura elettronica: digitando sul tastierino, vorrei che i numeri mi apparissero sul display con i vari messaggi (errato, inserisci pass ecc), dei led rosso e verde, un buzzer e magari più in là azionare un relè. di tutto ciò il mio problema più grande è impostare la password, in quanto non ho trovato un buon tutorial. Qualcuno potrebbe passo passo spiegarmi le funzioni che bisogna inserire nello sketch, magari ben commentandole con dei commenti? Ripeto, il mio problema è impostare la password e verificarne l'esito. Se qualcuno potesse aiutarmi in questo mio progetto gliene sarei immensamente grato.
Grazie.

Buonasera,
essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione … possibilmente evitando di scrivere solo una riga di saluto) e di leggere con molta attenzione tutto il su citato REGOLAMENTO … Grazie. :slight_smile:

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposito thread, nessuno ti potrà rispondere, quindi ti consiglio di farla al più presto.
_P.P.S.: Leggi con attenzione il punto 16.1 del suddetto regolamento … capirai perché difficilmente qualcuno scriverà il codice per te … tu devi scrivere, noi ti aiutiamo a correggere :wink: _

Ciao! Per il tuo progetto si può fare in modi diversi, alcuni peggiori ma più facili, altri migliori ma più difficile da realizzare.

Per leggere la password esistono esempio di come inserire password con keypad, si tratta di un ciclo while che legge i tasti premuti e si ottiene una stringa finale.

Il tuo progetto lo vedrei bene con una macchina a stati finiti, ma se sei alle prime armi forse è meglio cimentarsi in qualcosa di più semplice.

Comunque cerca esempi leggere password da keypad.

Qui un link con codice Loading...

Ti spiego il codice cosa fa con dei commenti in modo che tu possa capire.

Premettiamo che una stringa in C è un array di char con un carattere terminatore '\0'

Quello che segue non è il codice completo è solo la parte del loop() che dovresti capire, poi manca tutta
la parte di come creare un oggetto keypad che trovi nel link, questo non lo devi prendere come codice funzionante ma come spiegazione di cosa fa il programma...

// Il codice non è indentato perché col copia e incolla mi viene cosi e non ho voglia di sistemarlo. :)
void loop(){
32 char key = keypad.getKey(); // leggo di continuo un tasto da keypad
33 
34 35 if(key !=NO_KEY){ // Se il tasto è diverso da NO_KEY vuol dire che è stato premuto un tasto
36 if(key== '#'){ // Se è stato premuto il tasto cancelletto significa che la password  è stata inserita
37 
     inputCode_idx = 0;// RESETTA IL CODICE 
38 
40 }else{
41 inputCode[inputCode_idx++] = key; // Se il tasto è diverso da cancelletto lo inserisco nell'array 
2 
43 if(inputCode_idx == 6){// se sono stati inseriti 6 caratteri ho la password di 6 caratteri
44 inputCode[inputCode_idx] = '\0'; // metto il carattere terminatore è ho la stringa password
45 inputCode_idx = 0; // Porto a zero la variabile contatore per una nuovo inserimento di password
46 
48 if(strcmp(inputCode,psw) == 0){ // confronto la password inserita inputCode con una mia password
49 digitalWrite(buzz,HIGH); // Se è uguale faccio qualcosa
50 delay(1000);
51 digitalWrite(buzz,LOW);
52 }
53 }
    // Qui mancheranno qualche parentesi graffa