Software macchinetta caffè

Buonasera a tutti,
purtroppo sono alle prime armi, anzi primissime e dovrei realizzare per scuola un programmino basilare, che deve simulare una macchinettà del caffè che accetta soltanto monete da 20c. e che a 60 eroga il caffè. Ora, so che per voi è una stupidaggine, però io mi sono arenato e non riesco a uscirne fuori, vi posto di seguito il programma che ho buttato giù, se potete dirmi dove ho sbagliato.

/*
Il sistema deve erogare quando vengono inserite 3 monete da 20c.
S0=out 0
S1=out 0
S2=out 0
S3=out 1
L'automa deve simulare il funzionamento di una macchinetta del caffè.
quindi deve accendere il led quando viene premuto il bottone 3 volte
(che a sua volta simula la moneta che viene inserita nella macchina)
*/

const int ledpin=13;
const int input_pin=12;

int stato_att=0;
int stato_fut=0;
int stato_led=0;
int stato_inp=0;

void setup () {
pinMode(ledpin, OUTPUT);
pinMode(input_pin, INPUT);
stato_inp=digitalRead(input_pin);
stato_fut=fissa_stato(stato_inp,stato_led);
stato_att=stato_fut;
}
void loop () { /* in teoria, dovrebbe andare in loop fintanto gli arriva 0 */
while(1)
while(stato_inp=0)
{
}
}
int fissa_stato (int stato_att,int stato_fut)

switch (stato_att) /* l'automa essendo progettato con un automa a stati finiti, questa istruzione dovrebbe rappresentare, il passaggio degli stati. */
{
case 0:
stato_fut=1;
stato_led=0;
break;
case 1:
stato_fut=2;
stato_led=0;
break;
case 2:
stato_fut=3;
stato_led=1;
break;
case 3:
stato_fut:1
stato_led:0
return stato_fut
}
}

Sono sicuro che è sbagliato e incompleto ma non so andare avanti. :cold_sweat:

ciao
ti chiedo di commentarlo inoltre spiega che problema incontri

ciao
stefano

stefa24:
ciao
ti chiedo di commentarlo inoltre spiega che problema incontri

ciao
stefano

Ora l'ho modificato, il problema sarebbe che penso sia sbagliato come ho impostato il programma.

L'indentazione è fatta male e non capisco i vari blocchi dove iniziano e dove terminano.
Inoltre qual è esattamente il problema? Ti fa il caffè troppo amaro? :wink:

while(1)                     /* in teoria, dovrebbe andare in loop fintanto gli arriva 0 */
    while(stato_inp=0)
    {
    }

Ma da dove dovrebbe arrivargli il 0?
while(1) é un ciclo infinito
while(stato_inp=0) é un ciclo mai vero perché non controlli la variabile (==) ma assegni un valore e il risultato della assegnazione é sempre vero o 1.

Caio Uwe

Sì, difatti non uscirà mai da while(1).
Ma anche se lo facesse, nel resto delle altre 2 righe del loop() non c'è traccia del richiamo dell'altra funzione dello sketch.