Vai al contenuto

simulatore distributore cibi e bevande


thoromir

Messaggi raccomandati

http://imageshack.com/a/img841/5434/br7m.png

 

l'obbiettivo e quello di simulare in modo moolto semplificato il comportamento di un distributore di cibi e bevande.

 

byte mon_1 = 5; //pin moneta 50 cent

byte mon_2 = 7; //pin moneta 1 euro

byte prod_1 = 9; //pin acqua

byte prod_2 = 11; //pin panino

float credito = 0; //variabile Credito

float costo; //variabile costo prodotto

boolean puls; //variabile pulsante (se premuto e letto uno dei pulsanti, non sara piu'

//possibile nessuno dei 4 pulsanti fino al rilascio)

 

void setup() {

 

Serial.begin(9600 //dichiaro la velocita' di comunicazione con la porta seriale

pinMode(mon_1,INPUT); //imposto i pin

pinMode(mon_2,INPUT);

pinMode(prod_1,INPUT);

pinMode(prod_2,INPUT);

digitalWrite(mon_1,HIGH); //assegno la resistenza di pull-up

digitalWrite(mon_2,HIGH);

digitalWrite(prod_1,HIGH);

digitalWrite(prod_2,HIGH);

Serial.println("INIZIO");

Serial.println("Inserisca monete o scelga un prodotto");

}

void loop() {

if(digitalRead(mon_1) && digitalRead(mon_2) && digitalRead(prod_1) && digitalRead(prod_2))

puls = 1; //se tutti i pulsanti sono HIGH -> puls = 1

delay(50); //ritardo contro i rimbalzi dei pulsanti

if(!digitalRead(mon_1) && puls) { //se il pulsante moneta 1 e' LOW e puls = 1

credito += 0.50; //aggiungo al credito 50 cent

puls = 0; //puls diventa

stampa_credito (); //funzione che stampa sulla seriale il credito complessivo

}

if(!digitalRead(mon_2) && puls) { //stesse operazioni di prima

credito += 1;

puls = 0;

stampa_credito ();

}

costo = 0;

if(!digitalRead(prod_1) && puls) {

costo = 0.50;

puls = 0;

Serial.println("Prodotto scelto -> ACQUA");

erog_prod_rest (); //funzione che eseguendo tutti i calcoli necessari decide se

//il credito e' sufficiente, erogare il prodotto e/o il resto

}

if(!digitalRead(prod_2) && puls) {

costo = 0.80;

puls = 0;

Serial.println("Prodotto scelto -> PANINO");

erog_prod_rest (); //stessa procedura di prima

}

}

//spezzoni di codice ripetitivi, isolati in funzioni (per comodita')

void stampa_credito () {

Serial.print("Il suo credito e' di ");

Serial.print(credito);

Serial.println(" euro");

Serial.println("");

}

void erog_prod_rest () {

Serial.print("Costo prodotto -> ");

Serial.print(costo);

Serial.println(" euro");

Serial.println("");

if (credito >= costo) {

Serial.println("Erogazione PRODOTTO");

float resto = credito - costo;

if (resto) {

Serial.print("Erogazione RESTO di ");

Serial.print(resto);

Serial.println(" euro");

}

Serial.println("");

credito = 0;

Serial.println("Inserisca monete o scelga un prodotto");

Serial.println("");

}

else

Serial.println("Credito insufficiente");

Serial.println("");

}

Link al commento
Condividi su altri siti

Crea un account o accedi per lasciare un commento

Devi essere un membro per lasciare un commento

Crea un account

Iscriviti per un nuovo account nella nostra community. È facile!

Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.

Accedi Ora

Giochi in Uscita



  • Community Hive Community Hive

    Community Hive allows you to follow your favorite communities all in one place.

    Follow on Community Hive
  • Utenti

    Non ci sono membri da mostrare

×
×
  • Crea Nuovo...