#include "LiquidCrystal.h"
double A = 0; // MONETA DI 100
double B = 0; // MONETA DI 50
double C=0.0; // ACCUMULATO(CONTO TOTALE)
int D=1; // VARIABILE PER GLI STATI
int Pul1 = A0; // PULSANTE 1
int Pul2 = A1; // PULSANTE 2
int Enter = A2; // PULSANTE 3
int Led = A3; // ACTUADOR(LED USCITA)
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //PINES ARDUINO TO LCD
uint8_t euro[8] = {0x3,0x4,0x8,0x1f,0x8,0x1f,0x4,0x3}; // Custom char euro
// DECLARACIÓN DE ENTRADAS Y SALIDAS
void setup() {
lcd.begin(16, 2);
pinMode(A0, INPUT); // PULSANTE 1 COME ENTRATA
pinMode(A1, INPUT); // PULSANTE 2 COMO ENTRATA
pinMode(A2, INPUT); // PULSANTE 3 COMO ENTRATA
pinMode(A3, OUTPUT);// (ACTUADOR)LED COME USCITA
lcd.createChar(0, euro);
}
void loop() {
switch(D){
case 1: // PRIMO STATO
if(digitalRead(A0) == 0 and digitalRead(A1) == 0){// LETTURA DI PINES PER PULSANTE 1 Y 2
lcd.setCursor(0, 0);
lcd.print("INSERISCE "); // PRIMO TESTO MOSTRATO
lcd.print((char)0);
lcd.print("1.50:");
lcd.setCursor(0,1);
lcd.print("IMPORTO: "); // PRIMO TESTO MOSTRATO
lcd.print((char)0);
lcd.setCursor(10,1);
lcd.print(C);
if(digitalRead(Pul1) == 1){
A=1.00;
C+=A;
D=2;} // PASA AL CASO 2
if(digitalRead(Pul2) == 1){
B=0.50;
C+=B;
D=3;}} // PASA AL CASO 3
if(digitalRead(A2) == 1){
D=4;
}
break;
case 2: // SECONDO STATO
if(A==1.00){ // Condizione per 100
lcd.setCursor(9,1);
lcd.print(C); // Stampa ACCUMULATO
D=1;
}
break;
case 3: // TERZO STATO
if(B==0.50){ // CONDIZIONE PER 50
lcd.setCursor(9,1);
lcd.print(C); // Stampa ACCUMULATO
D=1;
}
break;
case 4: // QUARTO STATO
if(C>=1.50){ // CONDIZIONE PER L'ACCUMULATO
digitalWrite(A3,HIGH); // ACTUADOR- ACCESO LED
lcd.clear(); // CLEAR SCHERMO
lcd.setCursor(1,0);
lcd.print("BEVANDA PRONTA"); // SECONDO MSG
lcd.setCursor(3,1);
lcd.print("GRAZIE ;)"); // SECONDO MSG
delay(2000); // TEMPO IN SCHERMO
lcd.clear(); // CLEAR SCHERMO
digitalWrite(A3,LOW); // ACTUADOR- LED SPENTO
A=0; // RETURN AL PRIMO STATO
B=0; // RETURN AL PRIMO STATO
C=0; // RETURN AL PRIMO STATO
D=1; // RETURN AL PRIMO STATO
}
break;
}
}