Go Down

Topic: problema con il while  (Read 195 times) previous topic - next topic

danielelamanna

Dec 27, 2017, 04:25 pm Last Edit: Dec 27, 2017, 05:03 pm by danielelamanna
buonasera....  ho un problema con il ciclo while. praticamente vorrei fare in modo che quando nessuno di due pulsanti è premuto sul monitor seriale venga scritto una frase mentre quando premo uno dei due pulsanti venga scritto un' altra frase. lo sketch è questo ma non funziona perché sul monitor seriale viene scritto sempre la prima frase.

int pulsante=7;
int pulsante1=8;
void setup(){
pinMode(pulsante,INPUT);
pinMode(pulsante1,INPUT);
Serial.begin(9600);
}
void loop(){
pulsante=0;
pulsante1=0;
while(pulsante==0 && pulsante1==0){
int p=digitalRead(pulsante);
int p1=digitalRead(pulsante1);
Serial.println("sono nel while");
delay(1000);
}
delay(1000);
Serial.println("sono uscito dal while");

}

gpb01

#1
Dec 27, 2017, 04:29 pm Last Edit: Dec 27, 2017, 04:30 pm by gpb01
Due cose ...

1. ti ricordo che in conformità al regolamento, punto 7, devi editare il tuo post qui sopra (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More -> Modify che si trova in basso a destra del tuo post) e racchiudere il codice all'interno dei tag CODE (... sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra).

2. non è che le variabili "pulsante" e "pulsante1" si aggiornano da sole eh ! ... per aggiornarle devi leggere sempre lo stato del pin con la digitalRead() ;)

Guglielmo

Edit: per il punto 1 mi sono sovrapposto con Nid69ita :D
Search is Your friend ... or I am Your enemy !

nid69ita

#2
Dec 27, 2017, 04:30 pm Last Edit: Dec 27, 2017, 04:37 pm by nid69ita
stai facendo moooolta confusione tra pulsante/pulsante1 che sono i numeri dei pin con p/p1 che sono i valori letti da quei pin.
Fai una bella cosa, prima di tutto dichiara pulsante e pulsante1  const byte:
Code: [Select]
const byte pulsante=7;   // invece di intcosi trovi subito l'errore perché il compilatore ti segnalerà errore quando fai pulsante=0;
Code: [Select]
const byte pinPulsante=7;
const byte pinPulsante1=8;
int valP,valP1;
void setup()
{ delay(1000);
  pinMode(pinPulsante,INPUT);
  pinMode(pinPulsante1,INPUT);
  Serial.begin(9600);
}

void loop()
{ valP=0;
  valP1=0;
  while(valP==0 && valP1==0)
  { valP =digitalRead(pinPulsante);
    valP1=digitalRead(pinPulsante1);
    Serial.println("sono nel while");
    delay(200);
  }
  delay(1000);
  Serial.println("sono uscito dal while");
}


my name is IGOR, not AIGOR

danielelamanna


gpb01

#4
Dec 27, 2017, 04:40 pm Last Edit: Dec 27, 2017, 04:40 pm by gpb01
okey.. grazie
Si, ma fai quanto ti ho richiesto nel mio post #1 ...

Guglielmo
Search is Your friend ... or I am Your enemy !

danielelamanna


Go Up