Salve a tutti , volevo chiedervi se qualcuno mi potrebbe aiutare a scrivere una parte del programma, dato che tutto il resto l'ho fatto. Sto cercando di costruire una piccola cassaforte, tramite l'uso di arduino avendo a disposizione un lcd e un tastierino numerico. L’unico problema che ho è che devo scrivere nella seconda riga dell’lcd, ho usato queste parole
lcd.setCursor (0,1);
lcd.write("*");
se provo a digitare i numeri del tastierino, sullo schermo appare soltanto un asterisco gli altri non vengono scritti, pero se inserisco il codice giusto funziona tutto. sapreste dirmi dove sto sbagliando? A dimenticavo dovrei inserirci anche un cursore che lampeggia in questa riga, in modo che ogni numero che vado a digitare sposti di conseguenza anche il cursore . non so se mi sono spiegato correttamente
Vi allego il programma :
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 14, 15, 16, 17);
#include <Keypad.h>
#define LEDA 10
#define LEDC 9
const byte ROWS = 4; //quattro righe
const byte COLS = 3; //tre colonne
char keyInsert[6];
// Queste variabili servono come verifica del corretto inserimento del codice
int i = 0;
int j = 0;
int s = 0;
int x = 0;
// Codice segreto
char code[7]= "123456";
char keys[ROWS][COLS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
byte rowPins[ROWS] = {8,7,6,5}; //i Pin a cui sono connesse le righe del KeyPad
byte colPins[COLS] = {4,3,2}; // i Pin a cui sono connesse le colonne del KeyPad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup(){
Serial.begin(9600);
lcd.begin(16, 2);
pinMode(LEDC,OUTPUT);
pinMode(LEDA,OUTPUT);
}
void loop(){
char key = keypad.getKey();
if (i==0){
Serial.println("Inserire codice...");
i++;
lcd.print("Inserire codice");
i++;
}
if (key != NO_KEY && j<6){
Serial.print("*");
//Serial.println(key);
keyInsert[j]=key;
j++;
lcd.setCursor (0,1);
lcd.write("*");
}
if(key == '*') {
Serial.println();
Serial.println("Verifica codice...");
lcd.clear() ;
lcd.write("Verifica codice");
delay(1000);
for(s=0; s<6;s++){
if(keyInsert[s]==code[s]){
x++;
}
}
if(x==6){
Serial.println("Codice corretto");
lcd.setCursor (0,1);
lcd.write("Codice corretto");
digitalWrite(LEDA,HIGH);
delay(1000);
digitalWrite(LEDA,LOW);
}
else{
Serial.println("Codice errato, riprovare");
lcd.setCursor (0,1);
lcd.print("Codice errato");
delay(2000);
lcd.clear() ;
x=0;
i=0;
j=0;
}
}
if(key == '#'){
lcd.clear() ;
x=0;
i=0;
j=0;
digitalWrite(LEDC,HIGH);
delay(1000);
digitalWrite(LEDC,LOW);
}
}