7セグメントをraspberrypi zeroで動かしたい
アノード型(上にピンがついている)やつをつかってます。ですのでシンク電流型で回路を組んでいます。
7セグメントで0~9でカウントをし、その数字に対応するように光るように実装をしたいのですが、pythonのコードがうまく動いてくれません。
個人的には回路側はあっているような気がしているのでpythonのコードをレビューしていただけないでしょうか?
回路もプログラムも初心者なので自信ないです
回路図
回路図とはいえ、きちんとしたものはかけないのでブレッドボード図のような形になりますが、よろしくお願いします。見づらくてすみません。
こちらのpythonプログラム
python
1import RPi.GPIO as GPIO 2from time import sleep 3 4GPIO.setmode(GPIO.BOARD) 5ports = [ 6 # a,b,c,d,f,g,DP 7 35,37,38,36,32,33,31,40 8] 9 10 11GPIO.setup(ports, GPIO.OUT) # initialize 12 13numbers = [ 14 #a,b,c,d,e,f,g,p 15 [1,1,1,1,1,1,0,0],#0 16 [0,1,1,0,0,0,0,0],#1 17 [1,1,0,1,1,0,1,0],#2 18 [1,1,1,1,1,1,0,0],#3 19 [1,1,1,1,1,1,0,0],#4 20 [1,1,1,1,1,1,0,0],#5 21 [1,0,1,1,1,1,1,0],#6 22 [1,1,1,0,0,1,0,0],#7 23 [1,1,1,1,1,1,1,0],#8 24 [1,1,1,0,0,1,1,0],#9 25 # [0,0,0,0,0,0,0,0],#none 26] 27 28#on off 29def show_num(no, dot=False): 30 ns = numbers[no] 31 for i, n in enumerate(ns): 32 if n == 0: 33 GPIO.output(ports[i],1) 34 else: 35 GPIO.output(ports[i],0) 36 # DP 37 if dot: 38 GPIO.output(ports[7],GPIO.HIGH) 39 else: 40 GPIO.output(ports[7],GPIO.LOW) 41 42try: 43 # 0~9 44 for i in range(0,10): 45 print(i) 46 show_num(i, True) 47 sleep(1) 48 49except KeyboardInterrupt: 50 pass 51 52GPIO.cleanup() 53 54
結果
最後のfor分が動いているだけです。
0 1 2 3 4 5 6 7 8 9
試したこと
pythonの関数を使っているところでif条件分岐を結構いじってましたが、実行されるのは
0~9のカウントだけです。
補足情報
・python3
・7セグメントLED(A-551SRD)
まとめ
非常に知識に疎いため自信のないところばかりですが、ぜひともこちらのコードが動くような間違いを見つけていただけると幸いです。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー