domingo, 27 de enero de 2013

Controlar 4 LEDs con los GPIOs de la Raspberry Pi

Controlar 4 LEDs con los GPIOs de la Raspberry Pi


Ahora que ya supimos como Controlar un LED con los GPIOs de la Raspberry Pi en este proyecto aumentaremos un poco la complejidad al controlar 4 LEDs en una secuencia que nos permitira contar en binario del cero al nueve y ademas rutear esa salida hacia un circuito integrado 7447 para poder desplegar los dígitos en un display de 7 segmentos.


Material necesario


- 4 LEDs
- 1 IC 7447
- Protoboard
- Display de 7 segmentos con cátodo común

En este proyecto manipularemos 4 GPIOs, uno para cada uno de los LEDs, ademas de ahi conectaremos tambien las entradas de IC 7447 tal como se muestra en el diagrama a continuación:

Lo que haremos basicamente en el código sera inicializar los GPIOs como salidas, después crearemos  una lista de 10 elementos, cada elemento será a su vez una lista que contendrá los valores binarios ordenados para generar la secuencia que necesitamos.

Recorreremos cada uno de los elementos de la lista de listas para identificar que LEDs deberemos de encender, haremos una pausa de un segundo y después continuaremos.
El código en Python se muestra a continuación:



#!/usr/bin/env python

# Import required libraries
import time
import math
import RPi.GPIO as GPIO

# Set up the GPIO mode
GPIO.setmode(GPIO.BCM)

#Initialize a list with the GPIO pin numbers we are going to use
gpiopins = [14,15,18,23]

# Set up pins listed as outputs
for p in gpiopins :
 print "Setup GPIO" + str(p) + " for OUTPUT"
 GPIO.setup(p, GPIO.OUT)
 GPIO.setup(p, GPIO.LOW)
print "Setup completed."


#Initialize a list with the binary values for the first 10 deciimal values
binary = [ [0,0,0,0],[0,0,0,1],[0,0,1,0],[0,0,1,1],[0,1,0,0],[0,1,0,1],[0,1,1,0],[0,1,1,1],[1,0,0,0],[1,0,0,1] ]

print "Start loop"
while True :
 digit = 0
 while digit < 10 :
  print "Decimal: " + str(digit) + " Binary: " + str(binary[digit])
  for x in range(0,4) :
   GPIO.output(gpiopins[x], binary[digit][x])
   print "pin = " + str(gpiopins[x]) + " valor = " + str(binary[digit][x])
  time.sleep(1)
  digit = digit + 1

El resultado es mostrado en el siguiente video:



Si tienes cual duda comentario, corrección o sugerencia, por favor házmelo saber en los comentarios de este blog.

3 comentarios:

  1. Buen tutorial. ¿Con que programa haces los diagramas de la raspberry?

    ResponderBorrar
    Respuestas
    1. Hola! Gracias por visitar el blog. Los diagramas los hago con Fritzing http://fritzing.org/download/

      Borrar