thoromir Inviato 18 Aprile 2014 Condividi Inviato 18 Aprile 2014 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 Altre opzioni di condivisione...
Messaggi raccomandati
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 accountAccedi
Sei già registrato? Accedi qui.
Accedi Ora