Práctica 4 - Contador binario

 

INTRODUCCIÓN

 

En esta práctica se configura entradas y salidas digitales para implementar un contador binario que incrementa cada vez que se presiona un push button, el conteo se despliega a través de LEDs. Esta práctica utiliza el módulo XENSE de XIDE para facilitar componentes y conexiones.

 

Selecciona la plataforma y entorno de programación.

 

 

PYTHON
PROCESSING
PYTHON

Descripción

Esta práctica se implementa un contador binario usando los GPIOS de la Raspberry Pi, el contador se incrementará cada vez que se presione el push button el cual está conectado a la tarjeta Raspberry Pi configurado como entrada digital. Para visualizar el valor del contador se utilizan 8 LEDS del módulo XENSE a la vez se implementa una interfaz donde se despliega una etiqueta con un mensaje del valor del contador en forma decimal.

 

Muestra en forma decimal el numero binario.

 

Materiales:

1 x Raspberry Pi. Comprar

1 x Módulo XENSE. Comprar

1 x Juego de cable Dupont. Comprar

1 x Protoboard de 830 puntos. Comprar

1x Push button. Comprar


Software:

Raspbian. Descargar

Python. Descargar

 

Procedimiento

1.Instala la librería RPi.GPIO-0.7.0.tar.gz, para poder utilizar los GPIOs de la tarjeta Raspberry Pi. En el siguiente link encontrarás un manual para poder instalarla.

2.En el apartado de "Diagrama esquemático" que se encuentra a continuación selecciona tu Raspberry Pi y realiza las conexiones que se muestran en la imagen.

3.Descarga el código fuente al final de esta práctica en el apartado de "Descargas".

4.En el siguiente link encontrarás un manual para poder ejecutar el programa de Python desde la terminal de Raspberry Pi.

 

Diagrama esquemático

 

Raspberry Pi Zero W
Raspberry Pi 3 A+
Raspberry Pi 3 B+
Raspberry Pi Zero W

Raspberry Pi 3 A+

Raspberry Pi 3 B+

 

Código

Código

 

#AUTOR: MICROSIDE TECHNOLOGY S.A. DE C.V.

#FECHA: AGOSTO 2019

#Contador binario que incrementará cada vez que se presione un botón,

#este será configurado como entrada digital.

 

from Tkinter import *                                                            #Librería para poder realizar interfaz grafica
import RPi.GPIO as GPIO                                                    # librería para poder utilizar los GPIO de la raspberry pi
import threading                                                                   # librería para poder utilizar timers
import time                                                                              # librería de tiempo

RAIZ = Tk()                                                                       #se crea la variable RAIZ para toda la interfaz y se llama la clase TK()

RAIZ.title("Contador binario")                                            # Definimos el nombre de la interfaz
RAIZ.geometry('180x60')                                                    # Definimos el tamaño de la interfaz

GPIO.setmode(GPIO.BOARD)                                          #Definimos la manera en que utilizaremos los pines ya sea por numeración de pines o GPIO


PIN_LEDS = [40, 38, 36, 32,22,18,16,12]                        # definimos los GPIO a utilizar
for i in PIN_LEDS:                                                               #definimos los GPIO como salidas
               GPIO.setup(i, GPIO.OUT, initial=GPIO.LOW)
                PIN_BOTON = 10
               GPIO.setup(PIN_BOTON, GPIO.IN, pull_up_down=GPIO.PUD_UP)                                 # la variable como entrada digital

def binario(n):                                                                        # devuelve como lista el valor binario de n
         resultado = []
          for i in range(8):
           resultado.append(n & 1)
           n >>= 1
            return resultado

def fun1():
       contador = 0


     try:
      while True:
           if GPIO.input(PIN_BOTON) == GPIO.LOW:
                          contador = (contador + 1) % 255
                          etiqueta = Label(RAIZ, text=contador)
                          etiqueta.grid(column=5, row=5)
           for pin, bit in zip(PIN_LEDS, binario(contador)):
                          GPIO.output(pin, bit)
                           time.sleep(0.1) 


            finally:
                GPIO.cleanup()

etiqueta = Label(RAIZ, text="EL NUMERO DECIMAL ES:")                         #Etiqueta de tipo label que nos muestra el valor en su forma decimal
etiqueta.grid(column=4, row=5)                                                                         # Definimos la posición de la etiqueta en nuestras interfaz
timer = threading.Timer(0.1,fun1)                                                                       # Activa la función led en un tiempo de 0.5 segundos
timer.start()

RAIZ.mainloop()

 

Descargas

R4-PYTHON

Descargar código en Python de la práctica 4.

 

PROCESSING

Descripción

En esta práctica se implementa un contador binario usando los GPIOS de la Raspberry Pi, el contador se incrementa cada vez que se presione el push button conectado a la tarjeta Raspberry Pi configurado como entrada digital. Para visualizar el valor del contador se utilizan 8 LEDS del módulo XENSE a la vez se implementa una interfaz donde se desplegará un gráfico en forma de elipse que al presionarlo decrementa el contador binario.

 

Decremento de contador binario.

 

Materiales:

1 x Raspberry Pi. Comprar

1 x Módulo XENSE. Comprar

1 x Juego de cable Dupont. Comprar

1 x Protoboard de 830 puntos. Comprar

1 x Push button. Comprar

 

Software: 

Raspbian. Descargar

Processing. Descargar

 

Procedimiento

1.En el apartado de "Diagrama esquemático" que se encuentra a continuación selecciona tu Raspberry Pi y realiza las conexiones que se muestran en la imagen.

2.Al final de esta práctica en el apartado de “Descargas", puedes encontrar los archivos del código fuente o bien cópielo del apartado de "código”, que se encuentra más abajo.

3.Sí descargaste el archivo del paso 2, omite este paso. Si copiaste el código abrir el software Processing pega el código en un nuevo proyecto.

4.En el siguiente link encontrarás un manual para poder ejecutar el programa en Processing.

 

Diagrama esquemático

 

Raspberry Pi Zero W
Raspberry Pi 3 A+
Raspberry Pi 3 B+
Raspberry Pi Zero W

Raspberry Pi 3 A+

Raspberry Pi 3 B+

 

Código

Código

/*

AUTOR: MICROSIDE TECHNOLOGY S.A. DE C.V.

FECHA: AGOSTO 2019

*/

/**************************************************************************

 Contador binario que incrementará cada vez que se presione un botón,

este será configurado como entrada digital. A vez una interfaz la cual decrementara el contador cada vez que se presione el gráfico

**************************************************************************/

import processing.io.*;                                           //importamos la librería para poder utilizar los GPIO de la Raspberry Pi
int led[]={21,20,16,12,25,24,23,18};                    // Declaramos un los GPIO a utilizar
int numero=0;
int k;
int boton=15;
void setup() {
size(200,200);                                                                                         //Declaramos el tamaño de la interfaz
GPIO.pinMode(boton, GPIO.INPUT_PULLUP);                                 //Inicializamos la variable botón como entrada
for(int i=0;i<8;i++){                                                                                //Inicializamos los GPIO como salida
GPIO.pinMode(led[i], GPIO.OUTPUT);
fill(0,250,0);
ellipse(95,95,50,50);                                                                                //Dibujamos un elipse

}
}

void draw() {
fill(0,0,0);
text("Click en circulo",10,25);
text("Decrementar contador",10,40);
if (GPIO.digitalRead(boton)==GPIO.LOW){                                                  //Si se presiona el pulsador incrementa el contador
numero++;
if (numero>255){                                                                                              //Si el contador llega a 255 8 bits 8 LEDs vuelve a cero
numero=0;
}
while (GPIO.digitalRead(boton)==GPIO.LOW){}
}

k=numero;
for(int i=0; i<8; i++){                                                                                       //ciclo para observar que LED se enciende
GPIO.digitalWrite(led[i], k%2);                                                                      // salida y división para ver si el LED se encendió o se apago
k=k/2;                                                                                                             //se divide el cociente entre 2 por cada ciclo
}
}
void mousePressed(){                                                                                   // método para utilizar MOUSE para poder decrementar el contador
numero --;
if(numero<0){
numero=255;
}
}

Descargas

R4-PROCESSING

Descargar código en Processing de la práctica 4.

Fecha

agosto 4, 2019

Categoría

Prácticas Raspberry Pi

× WhatsApp