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.
Puedes ver cómo 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


Pingback: 🥇 Simular Arduino con SimulIDE en Linux Ubuntu