Buon giorno a tutti ragazzi, è da tanto che seguo il forum e fino ad ora mi ha sempre risolto un sacco di impicci!
Questo che stò per mostrarvi però è un errore che non riesco davvero a trovare.
Spiego lo scopo:
Inserendo il Codice ‘1’ da tastierino sul display dovrebbe uscire ‘Pin Corretto’, mentre in caso contrario dovrebbe uscire ‘Pin Errato’.
Naturalmente questo non è il vero e proprio programma, però l’ho ridotto in minimi termini per capire dove stava l’errore, ma davvero non riesco a trovarlo.
In sostanza il fatto è che anche inserendo 1 da tastierino, facendo l’uguaglianza il pin risulta comunque errato, non compilandomi l’if ma andando nell’else.
Allego il codice:
#include <Keypad.h>
#include <LiquidCrystal.h>
char vettore[1];
int i=0;
const byte ROWS = 4;
const byte COLS = 4;
char hexaKeys[ROWS][COLS] = {
{'D','#','0','*'},
{'C','9','8','7'},
{'B','6','5','4'},
{'A','3','2','1'}
};
byte rowPins[ROWS] = {37, 35, 33, 31}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {45, 43, 41, 39}; //connect to the column pinouts of the keypad
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
LiquidCrystal lcd(22, 23, 24, 25, 26, 27);
void setup()
{
Serial.begin(9600);
lcd.begin(16, 2);
}
void loop()
{
while (i<1) {
char customKey = customKeypad.getKey();
if (customKey){
lcd.print(customKey);
vettore[i]=customKey;
i++;
}
}
if (vettore[0]==1)
{
lcd.clear();
lcd.print("Pin Giusto");
}
else {
lcd.clear();
lcd.print("Pin Errato");
Serial.println(vettore[0]); //Messo per controllo tramite monitor seriale se il numero corrisponde ad 1
}
i=0;
delay(2000);
lcd.clear();
}
Ovvio inoltre che il vettore deve comunque starci, perchè nel programma finale il pin dovrà essere molto più lungo.
Grazie a tutti dell’aiuto!
Buona giornata.
Alessandro