L'idea era quella di creare un sistema che simula una cassaforte con un tastierino 4x4 e un servo motore. Il circuito deve permettere di visualizzare i tasti premuti su un display e con un particolare codice (es 1234a) postare il servo a 90 gradi mente si si inserisce codice (es 1234c) impostare servo a 0.
io ho trovato su internet un codice e ho cercato di testarlo prima su tinkercard ma ci sono dei paesaggi e variabile che non so cosa servono, volevo chiedere come faccio a controllare se la stringa inserita da tastierino via uguale ad un codice o ad un altro?
Quando leggi una stringa, finito di leggere la stringa devi aggiungere il carattere terminatore stringa '\0',
altrimenti non hai una stringa valida e le funzioni stringa compreso strcmp() non possono funzionare.
Quindi rivedrei la lettura della stringa.
!strcmp() non funziona, strcmp() restituisce zero quando le due stringhe sono uguali, quindi deve essere
if(strcmp(stringa1,stringa2)==0) sono uguali.
1)Leggo il carattere con getKey();
2)Se il carattere è diverso da NO_KEY "è stato premuto un tasto" e diverso da carattere terminatore
aggiungo la stringa
Premuto il carattere terminatore aggiungo il terminatore stringa alla mia stringa
void tastierino()
{
//servo motore a zero
prova_servo.write(0); // 90 è il valore dell'angolo
lcd.setCursor(0,0);
lcd.print(" PASSWORD...");
//Ciclo lettura password
do{
customkey=customKeypad.getKey();
if(customkey!=NO_KEY && customKey != '#'){
Data[data_count] = customKey;
lcd.setCursor(data_count,1);
lcd.print(Data[data_count]);
data_count++;
}
}while(customKey!='#'); //Per terminare la password premo il cancelletto
// E' stato premuto cancelletto la password è stata inserita aggiungo il terminatore
Data[data_count] = '\0';
if(strcmp(Data, Master)==0){
lcd.print(" Pass Corretta");
//servo motore a zero
prova_servo.write(90); // 90 è il valore dell'angolo
delay(3000);
prova_servo.write(0); // 90 è il valore dell'angolo
}
else{
lcd.print("Pass Errata");
delay(3000);
}
lcd.clear();
data_count=0; // Porto il contatore a zero per prossima lettura password
}