質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Q&A

解決済

1回答

2047閲覧

7セグメントLEDをRaspberrypi-zeroで動かしたい

oinari03

総合スコア59

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

0グッド

0クリップ

投稿2020/05/18 13:43

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)

まとめ

非常に知識に疎いため自信のないところばかりですが、ぜひともこちらのコードが動くような間違いを見つけていただけると幸いです。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

thkana

2020/05/18 22:41

> うまく動いてくれません ではなく、「実際にどうなったのか、何が起こったのか」を記して下さい。 > 最後のfor分が動いているだけです。 逆に言えば、他が動いていないということですか? どういうことから判断しましたか? それ以外の部分が動いていなければプログラムとして実行することが出来ないと思いますが。 > if条件分岐を結構いじってました 具体的に何をどう変えたのかを示さない限り「結構いじった」といわれてもなんの情報にもなりません。「頑張っている」というアピールだけでは状況の解析、対応の役には立ちません。
thkana

2020/05/18 23:00

> 回路側はあっているような気がしている 気がしているだけではどうにもならないので、ここを確かにしましょう。 抵抗の使い方が間違っているのは既に指摘されていますが、現状ままでも以下のチェックは出来るはず。 ポートに繋がっている線を一本引っこ抜いて、GNDに直結したら(つまりLEDのカソードをGNDに落とす)LEDは光りますか? 点灯するなら次の手段を考えますが、点灯しないようなら、LEDの配線が間違っています。LEDの型番を勘違いして実はカソードコモンのものじゃないのか、ということまで含めて確認して下さい。(正常に動作しない場合、全てを疑って一つ一つ確認していくしかないです)
guest

回答1

0

ベストアンサー

まず回路図
アノード側に1本だけ抵抗つないでるようですが、これではダメです。
アノードは直接電源つないで、セグメント側に抵抗(7本)つなぎましょう。

そのうえで、セグメント側の各ポートをON/OFFして、ついたり消えたりするのを確認しましょう。
はなしはそれからです。

投稿2020/05/18 13:49

y_waiwai

総合スコア88042

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問