#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);
#define SEL 12
#define ADD 11
byte pos;
byte ncol,nriga;
byte num;
long mynum;
long cifra[]={0,0,0,0,0,0};
void setup()
{
pinMode(SEL, INPUT_PULLUP);
pinMode(ADD, INPUT_PULLUP);
lcd.init();
lcd.backlight();
azzera();
Serial.begin(9600);
}
void loop()
{
LCDnum();
}
void cursore()
{
while (true){
if (digitalRead(SEL)==LOW){
delay(400);
if(pos<1){
numero();
Serial.println(mynum);
return;
}
while (digitalRead(SEL)==HIGH){
if((millis()/100)%2){
lcd.setCursor((ncol-1+pos),nriga);
lcd.print(cifra[pos]);
}
else{
lcd.setCursor((ncol-1+pos),nriga);
lcd.print(" ");
}
if (digitalRead(ADD)==LOW){
cifra[pos]++;
if (cifra[pos]>9)(cifra[pos]=0);
delay(300);
}
}
lcd.setCursor((ncol-1+pos),nriga);
lcd.print(cifra[pos]);
pos --;
}
}
}
void numero(){
mynum=(cifra[1]*10000+cifra[2]*1000+cifra[3]*100+cifra[4]*10+cifra[5]);
}
void LCDnum() {
if (digitalRead(SEL)==LOW){
delay(50);
pos=5;
azzera();
cursore();
}
}
void azzera(){
ncol = 8; // (da 0 a 15)posizione colonna su LCD
nriga = 1; // (da 0 a 3 )posizione riga su LCD
mynum=0;
for (byte i=1;i<6;i++){cifra[i]=0;}
lcd.setCursor(ncol,nriga);
lcd.print("00000");
}