Tastierino e arduino
buon giorno 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 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 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:
ovvio inoltre che il vettore deve comunque starci, perchè nel programma finale il pin dovrà essere molto più lungo.
grazie tutti dell'aiuto!
buona giornata.
alessandro
questo che stò per mostrarvi però è un errore che non riesco davvero 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 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:
code: [select]
#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 row pinouts of keypad
byte colpins[cols] = {45, 43, 41, 39}; //connect column pinouts of 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 tutti dell'aiuto!
buona giornata.
alessandro
ti invitiamo presentarti qui: http://forum.arduino.cc/index.php?topic=113640.0
e leggere il regolamento: http://forum.arduino.cc/index.php?topic=149082.0
- qui una serie di schede xxxpighi per collegamenti elettronici vari: http://forum.arduino.cc/index.php?topic=146152.0
- qui le pinout delle varie schede xxxpighi: http://forum.arduino.cc/index.php?topic=151646.0
- qui una serie di link utili: http://forum.arduino.cc/index.php?topic=126861.0
il tasto che ottieni è il carattere '1' e non il valore 1. il carattere '1' vale nella tabella ascii 49
oppure
e leggere il regolamento: http://forum.arduino.cc/index.php?topic=149082.0
- qui una serie di schede xxxpighi per collegamenti elettronici vari: http://forum.arduino.cc/index.php?topic=146152.0
- qui le pinout delle varie schede xxxpighi: http://forum.arduino.cc/index.php?topic=151646.0
- qui una serie di link utili: http://forum.arduino.cc/index.php?topic=126861.0
il tasto che ottieni è il carattere '1' e non il valore 1. il carattere '1' vale nella tabella ascii 49
code: [select]
if (vettore[0]=='1')
oppure
code: [select]
if (vettore[0]==49) // '1'=49
Arduino Forum > International > Italiano > Software (Moderator: leo72) > Tastierino e arduino
arduino
Comments
Post a Comment