Contador ascendente con Monitor Serial

Hola a todos, quisiera pedir ayuda, tengo que hacer que un pulsador aumente un número en el monitor serial cada vez que es presionado y al llegar a 10 envíe un mensaje específico. El problema es que el circuito cuenta cuando solo he presionado el pulsador una sola vez, lo cual está mal. Les dejo el código (Soy novato en esto de programación con Arduino, agradecería si me explicaran que hicieron, eso me ayudaría a mejorar en mi rendimiento escolar).

#define PULSADOR 2
int estpuls;
int x;

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

void loop() {
estpuls = digitalRead(PULSADOR);
if(estpuls == 1){
 for(x = 0; x < 11; x++){
 if(x <= 9){
  Serial.println("LLeva " +String(x) +String(" intentos"));
  delay(1000);
}else{
  Serial.println("Ha alcanzado el limite de intentos");
  delay(1000);
}
}
}
}

Esto
estpuls = digitalRead(PULSADOR);
if(estpuls == 1){
No responde a cada vez cuando es presionado.
Esto al ser presionado incrementa x sin descanso.
Para lograr la consigna se debe mantener el estado anterior y observar el flanco del pulsador. Cuando presionas pasas de NO presionado a SI presionado o sea de falso a true o de 0 a 1
Eso traducido a código se hace así: tengo que poner todo el código porque agregaré una variable que llamaré estpulsAnt estado Pulsador Anterior

#define PULSADOR 2
int estpuls;
int estpulsAnt = 0; 
int x;

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

void loop() {
    estpuls = digitalRead(PULSADOR);
    if(estpuls == 1 && estpulsAnt = 0){
        x++;
        if(x <= 9){
            Serial.println("Lleva " +String(x) +String(" intentos"));
            delay(1000);
        }else{
            Serial.println("Ha alcanzado el limite de intentos");
            delay(1000);
            x = 0;
        }
    }
    estpulsAnt = estpuls;
}

En lo personal me gusta usar esto

if(estpuls && !estpulsAnt){

antes que esto

if(estpuls == 1 && estpulsAnt = 0){

son lo mismo, pero la primera es una versión reducida.

Este formato de consulta (if) pregunta: cuando el pulsador pasa de 0 a 1 o sea en su flanco, entonces haz todo lo que esta adentro. A diferencia de cuando el pulsador esta presionado hazlo lo que permite que x se incremente sin parar.
Ahora con el flanco debes presionar y soltar y con cada presion abrá un avance.

Te entiendo @gatul pero el dice

Para mi cada vez que es presionado, es diferente a presionarlo y que se autoincremente. Te comprendo pero no estoy de acuerdo con vos.

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