Electronica Basica: Usando Botones en PIC16F877A y Hormiga 877




Botones Miniatura
Los botones o interruptores, están por todos lados, existen digitales, como los que muestran las pantallas táctiles de los teléfonos inteligentes; los mecánicos, como los que posee el teclado de la computadora de escritorio o laptop; están los empleados en la industria, robustos, y sujetos a calor y humedad; hasta los pequeños, como la fotografía que acompaña a esta entrada, que apenas tiene medidas de 5 mm x 5 mm.
Estos dispositivos son universalmente usados por dos principales motivos, son fácil de construir y solo poseen dos estados claramente definido: Encendido y apagado. Y son esas características las que los convierten en herramientas poderosas para poder interactuar con piezas de software que se ejecutan en computadoras, microcontroladores, autos, aviones y hasta lanzaderas espaciales.



Los interruptores, basan su funcionamiento en el principio de interrumpir la corriente eléctrica entre sus terminales, de modo que una ausencia o presencia de corriente eléctrica entre sus terminales, provoca una diferencia de tensión o voltaje entre sus terminales, que a fin de cuentas es la magnitud que un semiconductor puede detectar (es decir los semiconductores funcionan con voltaje, idealmente).

El símbolo para caracterizar en un esquema eléctrico / electrónico es muy sencillo, y representa la función que este cumple en un circuito eléctrico, la de interrumpir o dejar pasar la corriente eléctrica.
Símbolo de comportamiento del Interruptor

El interruptor al controlar el flujo de corriente como mencionamos un poco más arriba,  es capaz de controlar el voltaje que existe entre sus terminales, de tal manera que cuando no existe flujo de corriente se presenta un voltaje entre las terminales del interruptor, mientras que lo contrario sucede cuando el dispositivo conduce la corriente; no presenta voltaje entre sus terminales, esto idealmente. Sin embargo en dispositivos ideales, existe un voltaje muy pequeño propio de los materiales de los que está construido el dispositivo, no obstante, esto se puede despreciar en la práctica.

Estos dispositivos son muy útiles para ingresar comandos o estipular condiciones en programas que se ejecutan en computadores, ya que los estados de un interruptor se pueden interpretar como valores lógicos que la programación entiende, detectando un valor Verdadero cuando el interruptor presenta un voltaje entre sus terminales o un valor Falso cuando el interruptor no posee un voltaje entre sus terminales. Veamos cómo podemos utilizar el PIC16F877 mismo que contiene la placa Hormiga 877 para leer estos estados presentes en los interruptores.

Lo primero que tenemos que hacer es abrir el proyecto de la Hormiga 877 mediante el Entorno de desarrollo integrado MPLAB X; la placa Hormiga 877  cuenta con tres botones programables instalados directamente sobre la placa, mismos que facilitan ingresar los estados en la programación. Para poder leer estos estados de estos botones embebidos, debemos de utilizar la función "PBRead(unsigned int button)"; pero si queremos utilizar cualesquiera de las terminales de entrada y salida de propósito general (GPIO)  para leer los estados de los botones que conectemos a estas terminales GPIO, tenemos que utilizar la función "DigitalRead( unsigned int terminal)", describamos las funciones:

Botones en la parte superior izquierda.


PBRead(unsigned int button).

Esta función devuelve el valor en el cual se encuentren los botones embebidos de la placa Hormiga 877 siendo un valor "verdadero" o "1" si este se encuentra activado, mientras que devuelve un valor "Falso" o "0 " si este botón no esta presionado. Estos botones están etiquetados con las palabras "PB0, PB1,PB2", de modo que en los parámetros de entrada de la función, si colocamos el numero "0" nos devolverá el valor del botón "PB0", si tecleamos el número "1", devolverá el estado del botón "PB1" y por último si tecleamos número "2", nos leerá el estado del botón etiquetado como "PB2".

Parámetros de Entrada:
    numero de Boton, 0 = PB0, 1 = PB1, 2 = PB2.
Parámetros de Salida:
    Estado del botón seleccionado, devuelve un 0 o un 1.

ejemplo de uso.

1. Asignamos a una variable el valor del botón.
        
         var1    =     PBRead(0);
    var2    =     PBRead(1);
    var3    =     PBRead(2);
2. Como condición para un proceso.
        if(PBRead(0) == HIGH)
        {
            Proceso();
        }
        else
        {
            Otro_Proceso();
        }

DigitalRead( unsigned int terminal).

Esta función debe de ser usada en conjunto con la función "pinMode(unsinged int terminal)" ya que esta función configura una terminal digital como entrada o salida, por lo tanto cuando se usa la función de "digitalRead(0" es necesario configurar la terminal a leer como una entrada (pinMode(<terminal>,INPUT) por ejemplo); la función devuelve el estado verdadero (denotado como 1) o falso (denotado como 0) según sea el nivel de voltaje que se detecte en la terminal, siendo 1 lógico identificado por un voltaje de 5 volt y un cero lógico (0) como un voltaje cercano a cero Volt o por debajo de 2.2V aproximadamente.

Parámetros de Entrada:
    Tenemos que asignar un número entero sin signo que corresponda a cualesquiera de los 24 GPIO que la placa Hormiga posee, cabe resaltar que si solo se posee un PIC16F877A, al usar el mismo proyecto, se conserva la  organización de terminales, (aquí puedes consultar el pinout de la Hormiga 877).

Parámetros de Salida:
    Devuelve el valor que se registre en el puerto dado por el botón o dispositivo, siendo un estado lógico "1", cuando se presente un voltaje de 5V en la terminal correspondiente, y un valor lógico "0" cuando se encuentre un voltaje cercano a cero en la terminal asignada.

ejemplo de uso:

1. Asignar Valor a una variable.
            void setup()
            {
                pinMode(5,INPUT);
            }
            void loop()
            {
                var1 = digitalRead(5);
            }

2. Condicionar la ejecución de un proceso.

            void setup()
            {
                    pinMode(5, INPUT);
            }           

            void loop()

            {

                    if(digitalRead(5) == HIGH)

                    {

                           proceso();

                    }

            }

  

Estos interruptores, además pueden conectarse de dos maneras o configuraciones, una se llama "pull-up" y la otra se llama "pull-dow" las cuales podemos verlas en la siguiente imagen.



Configuraciones de un interruptor normalmente abierto


Conociendo lo básico de estos dispositivos, hagamos un pequeño ejemplo de como encender un diodo LED utilizando los botones incorporados en la Hormiga 877 y utilizando también las terminales digitales; el código es el siguiente:

Ejemplo 1. PBread().

            #include "system.h"

            const int Boton = 0;

            const int Led = 13;

            void setup()

            {

                 pinMode(Led,OUTPUT);

             }

             void loop()

           {

                 if(PBRead(Boton) == HIGH)

                 {

                      digitalWrite(Led,HIGH);

                 }

                 else

                 {

                      digitalWrite(Led,LOW);

                 }

            }


Ejemplo 2. digitalRead().

            #include "system.h"

            const int Boton = 2;

            const int Led = 13;

            void setup()

            {

                 pinMode(Led,OUTPUT);

             }

 

            void loop()

           {

                 if(digitalRead(Boton) == HIGH)

                 {

                      digitalWrite(Led,HIGH);

                 }

                 else

                 {

                      digitalWrite(Led,LOW);

                 }

            }


Sobre como generar el archivo hexadecimal, existe una entrada en este blog, sobre como hacerlo, por si no lo recuerdan, de modo que poniendolo en la simulación, el proyecto quedaría de la siguiente forma:

Simulación de la placa Hormiga 877


Asi que ahi lo tienen, esperando que esto les sirve, y permita a cada uno de ustedes aprender mas, nos vemos en otra entradas, sigan curiosos, y sigan aprendiendo 😉.

Comentarios

Entradas más populares de este blog

Abriendo Proyectos con MPLAB X para PIC16F877A y Hormiga 877.

Electronica Basica : Encender y apagar un LED con Hormiga 877

Instalación del Entorno de Desarrollo Integrado MPLAB X.