CONTADOR DECIMAL DOBLE.

INTRODUCCIÓN.

En gran cantidad de dispositivos actuales se puede encontrar un contador electrónico, son innumerables los elementos que incorporan algún tipo de contador electrónico. Del mismo modo hay en libros o artículos de electrónica o en la misma red, donde se describen contadores, sencillos o más complejos, pero todos diseñados con el mismo fin, contar unos eventos que se producen con cierta regularidad, aunque a veces no tanto.

EL CONTADOR.

En unos de mis artículos se describe un contador de dos dígitos capaz de mostrar registros desde 00 a 99. Estoy refiriéndome al artículo contador de 00 a 99, en ese caso se trata de un contador realizado mediante circuitos integrados de tipo comercial de la serie CMOS 4000 (serie cuatro mil). Sin embargo en esta ocasión, aprovechando las posibilidades que nos ofrecen los microcontroladores y en concreto Arduino, trataré de describir cómo realizar uno de estos contadores de eventos. El detector de entrada, puede ser cualquier elemento y de cualquier forma, lo importante es que, entregue una señal digital adecuada, para su lectura.

El siguiente es un ejemplo de aplicación, por cierto, este circuito ya se ha estudiado en esta otra práctica.

circuito2x7segm
Fig. 1

En principio vamos a necesitar de un sistema antirrebote (en inglés debouncing) que sea fiable. Dos pulsadores para proporcionar los pulsos que vamos a contar, uno para aumentar y el otro para disminuir sus respectivas cuentas. Por lo tanto, una variable val para leer si se presiona el pulsador y otra variable val2 para comparar con la lectura anterior. De esta forma podemos saber si ha cambiado el estado de la entrada. Una variable botonStado que guarde el estado del pulsador. Un variable que guarde el número de pulsaciones. Con estas variables, vamos a crear un código que lleve la cuenta a medida que ésta aumente y la muestre en el monitor de Arduino, así, siempre habrá constancia de las pulsaciones que se han producido.

Vamos a empezar por escribir el listado del código que sea capaz de contar y mostrar la cuenta desde 0 hasta 99. De esta forma resolveremos los problemas que se presenten y lo haremos poco a poco de manera que podamos abordarlos con seguridad de no abandonar por que los problemas nos abrumen.

El siguiente listado está bastante bien comentado y espero que no haya problemas para seguirlo, en caso de necesitar ayuda, diríjase al Autor que, le atenderá tan pronto disponga de tiempo o diríjase al foro de Arduino.

Este es el listado del código, puede copiarlo desde aquí y pegarlo en su editor de texto preferido, para seguir el proyecto.

Si ha seguido los pasos descritos hasta ahora, es de suponer que todo ha salido bien. En otro caso, vuelva sobre sus pasos y analice donde está el error cometido, para poder seguir. Con esto, tenemos resuelta la primera parte del proyecto que habíamos planteado al principio.

Analizando lo que hemos hecho, podemos abordar la segunda parte; la cual, deducimos que se puede considerar una copia casi idéntica del anterior código, naturalmente hay que realizar algún cambio para que sirva nuestros intereses. Veamos estos puntos a modificar.

En primer lugar, la cuenta de las pulsaciones deberá ser llevada por una variable vval que guarde las pulsaciones. Como en el caso anterior, vval2 será la variable que usaremos para el rebote mecánico del pulsador.

Probemos este código, ¡ah!, pero antes hagamos los cambios. Para hacer más fácil las modificaciones, añadiremos un 2 a las variables, exceptuando val y val2, a las que antepondremos una v. Por supuesto que modificaremos el número del pin en el caso de la entrada del pulsador (switchPin2= 9) y la salida del LED (ledPin2 = 3) que ocuparan los pines libres que siguen al anterior.

La línea que representa el contador, se bebe modificar ya que ahora el contador disminuye o sea, es regresivo. Con esto, cada presión del pulsador se identifica con la resta de un dígito sobre la cuenta anterior. Esta es la nueva forma del «contador».

Esta línea que sigue, tampoco es necesaria: // if (buttonCounter2 > -10) Serial.print(«0»); // pulsaciones, ya que en este caso, no creo necesario anteponer un «0» al contador.

Sin embargo es conveniente prestar atención al contador ya que estamos en sentido regresivo y el signo – (menos), puede causarnos algún retraso en conseguir la solución. Hay que prestar atención a la comparación, siga los pasos del código y comprenderá mejor el funcionamiento.

Este es el código del contador regresivo, lo puede copiar de aquí, pegarlo en su editor de texto y compilarlo, para comprobar su efectividad.

 COMBINAR LOS DOS CÓDIGOS.

Hemos logrado que los dos códigos realicen lo que teníamos previsto. Eso sí, los contadores, cuentan, cada uno en su dirección, lo que habíamos previsto. El caso es que ambos deben formar parte de un mismo código. Este es el reto actual. Cómo lo vamos a abordar.

Debe observarse que se han realizado unos pequeños cambios en cada subrutina, de modo que puedan compartir el código y cumplan con lo previsto. Se ha creado una nueva subrutina para la presentación en el monitor de Arduino, los resultados que se van produciendo en la medida que se generan las pulsaciones.

Esta rutina la he llamado anota(), por que eso es lo que hace. La he sacado fuera del código principal para que si al interesado no le aporta información en su aplicación, pueda prescindir de ella, eliminando las llamadas a dicha rutina y la misma.

En el listado que sigue, puede observarse lo descrito. Si está interesado en el código, aquí lo puede descargar, para su utilización, como siempre cópielo en su editor de texto preferido y compílelo con su Arduino, para cargarlo y comprobar su buen funcionamiento.

Por cierto, un dato que esta pendiente de aclarar, he añadido un tercer pulsador switch, para poder poner a cero (Reset), en cualquier momento. Ahora, ya puede disfrutar de un doble contador de eventos. Piense usted en una aplicación para darle una utilidad, por ej. un contador para una cancha deportiva. Es una idea.

Como siempre, comentarios, criticas y sugerencias para mejorar este artículo, son bienvenidos y apreciados.

4 thoughts on “CONTADOR DECIMAL DOBLE.”

  1. Buenas puede poner el listado de componentes y el esquema final con el boton de reset gracias.
    Los displays son de Catodo Comun verdad?

    1. Hola Francisco Jose.
      Los valores de los componentes son 7 resistencias de 220 a 270 ohms para los displays y 2 resistencias de 270 para los dígitos.
      2 pulsadores NA. y 2 Displays de CA.
      En cuanto al código de reset es algo más elaborado y no dispongo de tiempo en estos momentos.

      Saludos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.