Go Down

Topic: contatore (Read 2 times) previous topic - next topic

AMBUSH

Salve ragazzi

potreste aiutarmi con questo codice?

Code: [Select]
// Contatore

int pulsante =2;
int val = 0;
int contatore = 0;
int old_counter = 0;
int currentState = 0;
int previousState = 0;

void setup() {
pinMode(pulsante, INPUT);
Serial.begin(9600);
}

void loop(){
val = digitalRead(pulsante);
if (val == HIGH) { 
currentState = 1;
}
else {
currentState = 0;
Serial.println("Pippo");
}


if(currentState != previousState){
if(currentState == 1){
contatore = contatore + 1;
Serial.println(contatore);
}
}
previousState = currentState;
delay(250);
}


il problema è che quando premo il pulsante ho la transizione da Pippo a 1 ma come rilascio torna a Pippo :-)

se ripremo il pulsante fa 2 e se mollo rifà Pippo. le sto provando tutte ma proprio non trovo soluzione per far visualizzare sempre il numero e non pippo

tuxduino

Mi sembra normale che a pulsante rilasciato (LOW) sulla seriale compaiano tanti Pippo. E' esattamente ciò che l'if() subito dopo la digitalRead() fa.

Cosa vuoi ottenere esattamente ?

AMBUSH

Ciao

In pratica il programma inizia visualizzando la parola Pippo come premo il pulsante visualizzo 1 e come rilascio visualizzo sempre 1 e così via per il 2 e per il 3 :-)
sostanzialmente Pippo è lo 0


tuxduino

Allora dovresti stampare pippo quando contatore vale zero, non tutte le volte che leggi LOW dal pin.

PS: CTRL+T per indentare correttamente il codice. Lo rende più leggibile.

AMBUSH

ciao

ma come modifico? avevo già testato a mettere contatore == 0 ma nulla

Go Up