Foro de elhacker.net

Informática => Electrónica => Mensaje iniciado por: crazykenny en 4 Julio 2016, 23:24 pm



Título: Raspberry pi - representar numeros binarios con leds
Publicado por: crazykenny en 4 Julio 2016, 23:24 pm
Hola, vereis, el caso es que hace un rato he acabado un pequeño proyecto usando una Raspberry Pi b+, y, bueno, quisiera aprovechar para compartir almenos el codigo que he utilizado.

Por otra parte, y, en relacion al proyecto, la idea basica es, utilizando una Raspberry Pi, ejecutar un script en Python para representar valores binarios mediante el uso de leds.
Dicho sea de paso, quisiera añadir algunas notas con respecto a las conexiones, si no es molestia, claro esta, ademas de informar sobre posibles errores dado el caso:

Como primera nota, y, sobre el pin 18 lo he preparado para conectar un interruptor de modo que, si esta activado, se ejecutara el programa, ademas de estar conectado a uno de los pines de voltaje de la Raspberry Pi (en mi caso, ha sido el numero 17, de 3,3 V).

Sobre la segunda nota, los pines he conectado para encender las leds son los siguientes; "11", "13", "15" y "19"; obviamente a toda conexion que he mencionado se le ha añadido una resistencia, ademas de conectar cada led a su respectiva conexion a tierra.

Por ultimo, hay una ultima conexion en el pin numero  "23"; en mi caso, he usado un zumbador para, digamos, "notificar/avisar" cuando se va a mostrar un nuevo numero (o su orden); por ejemplo, si suena una vez, significa que es el primer numero en ser mostrado; si suena 3, es el tercero.


Código:
import RPi.GPIO as GPIO
from time import sleep
GPIO.setmode(GPIO.BOARD)
pins_set=23
pin_ins=18
pin_set=0
GPIO.setup(pins_set, GPIO.OUT)
GPIO.setup(pin_ins, GPIO.IN)
matriz=range(4)
pin_sets=range(0,4)
pin_sets[0]=11
pin_sets[1]=13
pin_sets[2]=15
pin_sets[3]=19
matriz[0]=1
matriz[1]=3
matriz[2]=4
matriz[3]=7
m=4
n=matriz[3]
o=0
for i in range(0,4):
pin_set=pin_sets[o]
GPIO.setup(pin_set, GPIO.OUT)
o+=1
o=1
try:
while True:
inputvalue=GPIO.input(pin_ins)
o=1
if (inputvalue==True):
for i in range(0,4):
for f in range(0,o):
GPIO.output(pins_set,True)
sleep(0.75)
GPIO.output(pins_set,False)
sleep(0.5)
o-=1
n=matriz[o]
if n==0:
pin_set=pin_sets[0]
GPIO.output(pin_set,False)
pin_set=pin_sets[1]
GPIO.output(pin_set,False)
pin_set=pin_sets[2]
GPIO.output(pin_set,False)
pin_set=pin_sets[3]
GPIO.output(pin_set,False)
if n==1:
pin_set=pin_sets[0]
GPIO.output(pin_set,True)
pin_set=pin_sets[1]
GPIO.output(pin_set,False)
pin_set=pin_sets[2]
GPIO.output(pin_set,False)
pin_set=pin_sets[3]
GPIO.output(pin_set,False)
if n==2:
pin_set=pin_sets[0]
GPIO.output(pin_set,False)
pin_set=pin_sets[1]
GPIO.output(pin_set,True)
pin_set=pin_sets[2]
GPIO.output(pin_set,False)
pin_set=pin_sets[3]
GPIO.output(pin_set,False)
if n==3:
pin_set=pin_sets[0]
GPIO.output(pin_set,True)
pin_set=pin_sets[1]
GPIO.output(pin_set,True)
pin_set=pin_sets[2]
GPIO.output(pin_set,False)
pin_set=pin_sets[3]
GPIO.output(pin_set,False)
if n==4:
pin_set=pin_sets[0]
GPIO.output(pin_set,False)
pin_set=pin_sets[1]
GPIO.output(pin_set,False)
pin_set=pin_sets[2]
GPIO.output(pin_set,True)
pin_set=pin_sets[3]
GPIO.output(pin_set,False)
if n==5:
pin_set=pin_sets[0]
GPIO.output(pin_set,True)
pin_set=pin_sets[1]
GPIO.output(pin_set,False)
pin_set=pin_sets[2]
GPIO.output(pin_set,True)
pin_set=pin_sets[3]
GPIO.output(pin_set,False)
if n==6:
pin_set=pin_sets[0]
GPIO.output(pin_set,False)
pin_set=pin_sets[1]
GPIO.output(pin_set,True)
pin_set=pin_sets[2]
GPIO.output(pin_set,True)
pin_set=pin_sets[3]
GPIO.output(pin_set,False)
if n==7:
pin_set=pin_sets[0]
GPIO.output(pin_set,True)
pin_set=pin_sets[1]
GPIO.output(pin_set,True)
pin_set=pin_sets[2]
GPIO.output(pin_set,True)
pin_set=pin_sets[3]
GPIO.output(pin_set,False)
if n==8:
pin_set=pin_sets[0]
GPIO.output(pin_set,False)
pin_set=pin_sets[1]
GPIO.output(pin_set,False)
pin_set=pin_sets[2]
GPIO.output(pin_set,False)
pin_set=pin_sets[3]
GPIO.output(pin_set,True)
if n==9:
pin_set=pin_sets[0]
GPIO.output(pin_set,True)
pin_set=pin_sets[1]
GPIO.output(pin_set,False)
pin_set=pin_sets[2]
GPIO.output(pin_set,False)
pin_set=pin_sets[3]
GPIO.output(pin_set,True)
sleep(7.33)
o+=2
pin_set=pin_sets[0]
GPIO.output(pin_set,False)
pin_set=pin_sets[1]
GPIO.output(pin_set,False)
pin_set=pin_sets[2]
GPIO.output(pin_set,False)
pin_set=pin_sets[3]
GPIO.output(pin_set,False)
except KeyboardInterrupt:
GPIO.cleanup()


Bueno, pues, aunque se que esto que he preparado es una especie de "juguete" que podeis modificar como querais, espero que os guste.

Muchas gracias por vuestra atencion, y, bueno, saludos.