Semaforo pedonale

ciao a tutti,
devo scrivere un codice per far funzionare un semaforo nel seguente modo:
quando la temperatura è maggiore di dieci gradi funziona normalmente, con la possibilità per i pedoni di chiamare l'attraversamento. La luce verde dei pedoni deve lampeggiare un po' prima di tornare rossa;
quando la temperatura è minore di dieci gradi il semaforo lampeggia tutto il tempo a luce gialla, sempre con la possibilità per i pedoni di chiamare l'attraversamento come nel caso di sopra.
secondo voi è giusto il codice che ho scritto? per leggere la temperatura pensavo di usare un TMP36.
copio il codice che ho scritto qui sotto.

#define autoRosso  10
#define autoGiallo 11
#define autoVerde  12
#define pedoniRosso 9
#define pedoniVerde 8
#define pulsantePedonale 2

#define verde    0
#define chiamata 1
#define giallo   2
#define rosso    3
int stato;   // Stato del semaforo
int val_Adc = 0;
float temp = 0;

void setup()
{
  pinMode(autoRosso, OUTPUT);
  pinMode(autoGiallo, OUTPUT);
  pinMode(autoVerde, OUTPUT);
  pinMode(pedoniRosso, OUTPUT);
  pinMode(pedoniVerde, OUTPUT);
  pinMode(pulsantePedonale, INPUT);
  
  stato = verde;
}

void loop()
{
 
  val_Adc = analogRead(0);
  temp = ((val_Adc * 0.00488) - 0.5) / 0.01;
 
  if (temp >= 10) {
    
  switch(stato)
  {
    case verde:
      digitalWrite(autoRosso, LOW);
      digitalWrite(autoGiallo, LOW);
      digitalWrite(autoVerde, HIGH);
      digitalWrite(pedoniVerde, LOW);
      digitalWrite(pedoniRosso, HIGH);
      while( digitalRead(pulsantePedonale) == 0);  //????
      delay(15000);
      stato = giallo;
      break;
    case giallo:
      digitalWrite(autoGiallo, HIGH);
      delay(5000);
      while( digitalRead(pulsantePedonale) == 0);  //????
      stato = rosso;
      break;    
    case rosso:
      digitalWrite(autoVerde, LOW); 
      digitalWrite(autoGiallo, LOW);
      digitalWrite(autoRosso, HIGH);    
      digitalWrite(pedoniRosso, LOW);
      digitalWrite(pedoniVerde, HIGH);
      delay(10000);
      int counter = 0;
       if(counter <= 10){
         digitalWrite(pedoniVerde, LOW);
         delay(200);
         digitalWrite(pedoniVerde, HIGH);
         delay(200);
         counter == counter + 1;
         }
      stato = verde;
      break; 
      }
  } 
  else {
      digitalWrite(autoRosso, LOW);
      digitalWrite(autoGiallo, HIGH);
      digitalWrite(autoVerde, LOW);
      digitalWrite(pedoniVerde, LOW);
      digitalWrite(pedoniRosso, HIGH);
      delay(1000);
      digitalWrite(autoGiallo, LOW); 
      delay(1000);
      if( digitalRead(pulsantePedonale) == 1){
      digitalWrite(autoGiallo, LOW);
      digitalWrite(autoRosso, HIGH);    
      digitalWrite(pedoniRosso, LOW);
      digitalWrite(pedoniVerde, HIGH);
      delay(10000);
      int counter = 0;
       if(counter <= 10){
         digitalWrite(pedoniVerde, LOW);
         delay(200);
         digitalWrite(pedoniVerde, HIGH);
         delay(200);
         counter == counter + 1;
         }
      }
  }
}

:warning:
Ti segnalo che, nella sezione in lingua Inglese, si può scrivere SOLO in Inglese ... quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post; questa volta esso è stato spostato, da un moderatore della sezione di lingua Inglese, nella sezione di lingua Italiana ... la prossima volta potrebbe venire direttamente eliminato. Grazie.

A quanto detto da UKHeliBob aggiungo ...

... cortesemente, come prima cosa, leggi attentamente il REGOLAMENTO della sezione Italiana del forum, (prestando sempre molta attenzione al punto 15), dopo di che, come da suddetto regolamento, fai la tua presentazione NELL'APPOSITA DISCUSSIONE spiegando bene quali esperienze hai in elettronica e programmazione, affinché noi possiamo conoscere la tua esperienza ed esprimerci con termini adeguati.

Grazie,

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposita discussione, nel rispetto del succitato regolamento nessuno ti risponderà (eventuali risposte o tuoi ulteriori post, verrebbero temporaneamente nascosti), quindi ti consiglio di farla al più presto. :wink:

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.