パーソナルブログメモリ

a = [1, 1]
for _ in "*" * 999: a += [sum(a[-2:])]
print(a)

0.56インチダイナミック接続4桁アノードコモン表示器で99までカウント(4桁セグメントの2桁利用)

2018-11-12 | Raspberry Pi 2 or 3 or Pico
Raspberry Pi3 raspbianで電子工作2日目

4桁のアノードコモン表示器でカウントアップさせてみました。
しかし使い方がなかなかわからず試行錯誤しています。



利用したパーツ
(秋月電子)
ブレッドボード1枚 200円
ジャンパーワイヤ オスオスセット60本以上 220円
ジャンパーワイヤ メスメスセット10本 330円
カーボン抵抗1kΩセット100本 100円
4桁アノードコモン表示器(OSL40562-IR) 200円

(2桁しか作っていないのはジャンパーワイヤ メスメスの本数が10本で足りなかったからです。)

結果的にこんな感じにしています。
つけたい桁のアノードにGPIOのHIGHを設定しています。(これは普通)あと接続の際にここに1KΩの抵抗を直列で接続しています。
アノードコモンだと、桁のアノードはコモン(共通)でひと桁1入力です。
かわりに出力のほうが8あります。ここをGPIOにして表示させないLEDにHIGHを設定させています。

この方法で負荷的にいいのか正直わからないので実験は自己責任ありきでおねがいします。
実験中2、30分動かした間は異常は特にありませんでした。



画像は本家のドキュメントのものです。
参考資料
GPIOドキュメント


ダイナミック接続4桁高輝度赤色7セグメントLED表示器 アノードコモン アノード共通接続


この2つを接続していきます。
ちなみにLED側のピンは表からみて
12 11 10 9 8 7
1 2 3 4 5 6 となっています。

GPIOとの接続はこんな感じです
GPIO 14 - 1KΩ抵抗器 - LEDsの12(DIG.1)
GPIO 15 - 1KΩ抵抗器 - LEDsの9(DIG.2)

GPIO 10 - LEDsの11(A out)
GPIO 9 - LEDsの7(B out)
GPIO 11 - LEDsの4(C out)
GPIO 5 - LEDsの2(D out)
GPIO 6 - LEDsの1(E out)
GPIO 13 - LEDsの10(F out)
GPIO 19 - LEDsの15(G out)
GPIO 26 - LEDsの3(DP out)



プログラムは0から99の数字を順に表示
表示はひと桁とふた桁を10回ほど交互に表示しています。

pinSetは今回利用するGPIOの番号に対してHIGH、LOWを設定します。

numberSetは数字を表示するためのLEDsのout側の設定をします。
(表示させない方にHighを設定)

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)

def pinSet(pin_num,sw):
#  if pin_num in [14,15,18,23,10,9,11,5,6,13,19,26]
  if pin_num in [14,15,10,9,11,5,6,13,19,26]:
    if sw==0:
      GPIO.setup(pin_num, GPIO.OUT) 
      GPIO.output(pin_num, GPIO.LOW)
    if sw==1:
      GPIO.setup(pin_num, GPIO.OUT) 
      GPIO.output(pin_num, GPIO.HIGH)   

def numberSet(num):
  if 9>=num and num>=0:
    offSeg= [ "ABCDEF","BC","ABDEG","ABCDG","BCFG","ACDFG","ACDEFG","ABCF","ABCDEFG","ABCDFG"]
    segPin=[10,9,11,5,6,13,19,26]
    seg="ABCDEFG."
    for i in range(8):
      if seg[i] in offSeg[num]:
        pinSet(segPin[i],0)
      else:
        pinSet(segPin[i],1)

def main():
  pinSet(14,0)
  pinSet(15,0)
  for i in range(100):
    for j in range(10):
      pinSet(15,0)
      numberSet(int(i/10))
      pinSet(14,1)
      time.sleep(0.005)     
      pinSet(14,0)
      numberSet(i%10)
      pinSet(15,1)
      time.sleep(0.005)    
  GPIO.cleanup()                      

main()


最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。