Go Down

Topic: presentazione e richiesta di aiuto (Read 341 times) previous topic - next topic

whteice

Mar 21, 2013, 11:21 pm Last Edit: Mar 22, 2013, 01:31 am by whteice Reason: 1
Ciao a tutti,
mi chiamo Maurizio e sono un consulente ICT per mestiere e birraio per passione.

Avevo pensato di usare Arduino per il controllo delle temperature nella prima fase di cottura della birra ma appena inziato sono andato un po in blocco sulla definizione delle funzioni
questo il codice che ho scritto e che se provo a compilare mi da errore:
Code: [Select]
//controllo temperature in fase di mash
//definisco tempi e temperature
int prt = 5; //tempo di protein rest
int prc = 52; //temperatura protein rest
int m1t = 5; //primo step tempo di mash
int m1c = 63; //primo step temperatura di mash
int m2t = 5; //secondo step tempo di mash
int m2c = 68; //secondo step temperatura di mash
int mot = 6; //tempo di mash out
int moc = 78; //temperatura di mash out
int ciclo=1;//conto i cicli
int Temp=0;//temperatura del ciclo
int Tempo=0;//tempo del ciclo
#define ITP A1 //temperatura Mosto
#define ITM A2 //temperatura Piastra
#define P 1
#define F1 13
#define F2 12
#define F3 11
#define F4 10
#define FR 9

void setup()
{

  pinMode (P, OUTPUT);//piastra
  pinMode (F1, OUTPUT); //fase1
  pinMode (F2, OUTPUT); //fase2
  pinMode (F3, OUTPUT); //fase3
  pinMode (F4, OUTPUT); //fase4
  pinMode (FR, OUTPUT); //riscaldamento
}
void loop(){
  switch (ciclo){
  case 1:
    Tempo=prt;
    riscaldamento (prc);
  case 2:
    Tempo=m1t;
    riscaldamento (m1c);
  case 3:
    Tempo=m2t;
    riscaldamento (m2t);
  case 4:
    Tempo=mot;
    riscaldamento (mot);
  }
}


int riscaldamento(Temp){ //inizio a riscaldare il mosto per la fase successiva

  if (analogRead(A1)<Temp)
  {
    digitalWrite(P, HIGH);

  }
  if (analogRead(A1)>=Temp)
  {
    ciclo++;
    return ciclo;
  }

}



non ho capito come si definisce le funzione?
Grazie a tutti :)

uwefed

Code: [Select]
int riscaldamento(Temp)
Devi definire di che tipo é la variabile Temp.

Perché ha scritto la funzion int riscaldamento(Temp) 2 volte?

Ciao Uwe

whteice

#2
Mar 22, 2013, 01:29 am Last Edit: Mar 22, 2013, 01:32 am by whteice Reason: 1
grazie mille per la risposta  :)
Temp non è definita in alto insieme alle altre variabili?
La ripetizione è un errore del copia e incolla, chiedo scusa  :P
correggo :)

uwefed


Temp non è definita in alto insieme alle altre variabili?


Se definisci una funzione devi definire anche il tipo di variabili che passi. Questo perché una variabile definita all'interno di una funzione é un altra variabile che é definita fuori, anche se ha lo stesso nome.
Con
Code: [Select]
int riscaldamento(int Temp){};
definisci una variabile Temp che esiste solo all interno della funzione e che non ha che fare niente con la variabile Temp definita all'inizio. Oltre questo puoi passare alla funzione qualsiasi variabile non solo una che si chiama Temp.

Leggiti questo: http://arduino.cc/en/Reference/Scope oppure un altro tutoral riguardante la visibilitá delle variabili ( locali e globali )

Ciao Uwe

whteice

grazie mille
tutto risolto razie a te :)
grazie

Go Up