Contador Ascendente al Soltar Pulsador en Arduino

Contador ascendente al soltar pulsador en Arduino

El sketch de Arduino que presento de un contador ascendente, basa su funcionamiento en un pulsador, como casi cualquier otro contador didáctico. La pequeña diferencia en este caso, es que el conteo se  hace efectivo al soltar el pulsador (release), no al oprimirlo, así garantizamos que el conteo se haga por cada pulso, y no al mantener oprimido el pulsador.

El sketch:

/*******************************
CONTADOR DE UNA DIGITO CON DISPLAY
DE ÁNODO COMÚN. SE CONFIGURA PIN 12
COMO ENTRADA CON PULSADOR

Pin 2 segmento a
Pin 3 segmento b
Pin 4 segmento c
Pin 5 segmento d
Pin 6 segmento e
Pin 7 segmento f
Pin 8 segmento g
*******************************/

unsignedchar boton = 12;
unsignedchar estado = 0; //estado del botón

// Codificación de los números

const unsigned char num_array[11][7] =
{
    {0,0,0,0,0,0,1}, //0
    {1,0,0,1,1,1,1}, //1
    {0,0,1,0,0,1,0}, //2
    {0,0,0,0,1,1,0}, //3
    {1,0,0,1,1,0,0}, //4
    {0,1,0,0,1,0,0}, //5
    {0,1,0,0,0,0,0}, //6
    {0,0,0,1,1,1,1}, //7
    {0,0,0,0,0,0,0}, //8
    {0,0,0,1,1,0,0} //9
};

void Muestra_Dato(unsigned char);
unsigned int retardo = 0;
unsigned char decena = 0, unidad = 0, centena = 0, resto = 0, contador = 0, bandera = 0;

void setup() {

// put your setup code here, to run once:
    pinMode(boton, INPUT_PULLUP);
    pinMode(13, OUTPUT);
    pinMode(2, OUTPUT);
    pinMode(3, OUTPUT);
    pinMode(4, OUTPUT);
    pinMode(5, OUTPUT);
    pinMode(6, OUTPUT);
    pinMode(7, OUTPUT);
    pinMode(8, OUTPUT);

    Muestra_Dato(0);
    Serial.begin(9600);

}

void loop() {
// put your main code here, to run repeatedly:
    estado = digitalRead(boton);

    if(estado == LOW && bandera == 0){

        while(estado == LOW){
            estado = digitalRead(boton);
            Serial.println(estado);
            if(estado == HIGH){
                break;
            }
        }

    contador++;
    Muestra_Dato(contador);

    if(contador == 10){
        contador = 0;
        Muestra_Dato(contador);
        bandera = 1;
    }

estado = digitalRead(boton);

    if(estado == HIGH){
        bandera = 0;
    }
 }

 delay(200);

}

//Mostramos el valor del contador en el display
void Muestra_Dato(unsigned char number){
    unsignedchar pin = 2;
    
    for(unsignedchar j=0; j < 7; j++){
        digitalWrite(pin, num_array[number][j]);
        pin++;
    }
}

Cuando pulsamos el botón de incremento, el programa entra en un único bucle while (resaltado en naranja) que tenemos en el sketch. Así mantenemos la ejecución en un ciclo infinito, hasta que soltemos el pulsador. A soltarlo, nos liberamos de ese bucle con la instrucción break, y el programa continúa su ejecución para incrementar el contador.

play-sharp-fill

    Puedes ver cómo simular Arduino con SimulIDE en Linux    

Simular Arduino con SimulIDE en Linux

 

Puedes ver más proyectos de Arduino Curso Completo, exhibido en la Librería Nacional.


Valora este artículo

Contador ascendente al soltar pulsador en Arduino
5,0 rating based on 12.345 ratings
Overall rating: 5 out of 5 based on 1 reviews.
Nombres
Email
Titulo
Calificanos
Contenido

Interesante

★★★★★
“ Perfecto, excelente el dato.”
- Sebastian Bonilla
Comparte esto en
Publicado en Arduino.

Un comentario

  1. Pingback: 🥇 Simular Arduino con SimulIDE en Linux Ubuntu

Los comentarios están cerrados.