Pages: [1]   Go Down
Author Topic: Software macchinetta caffè  (Read 501 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.

Quote
/*
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. smiley-roll-sweat
« Last Edit: October 18, 2012, 12:56:02 pm by UweFederer » Logged

piacenza
Offline Offline
God Member
*****
Karma: 0
Posts: 684
prima della pazzia c'è la passione
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ciao
ti chiedo di commentarlo inoltre spiega che problema incontri

ciao
stefano
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 22973
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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?  smiley-wink
Logged


BZ (I)
Offline Offline
Brattain Member
*****
Karma: 271
Posts: 21871
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

 
Code:
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
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 22973
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged


Pages: [1]   Go Up
Jump to: