ラズベリーパイとpythonで12×32 LEDマトリクスに画像を表示する
ケーブル接続は次のように行います。 GPIO.NO 17 = R1 GPIO.NO 18 = G1 GPIO.NO 22 = B1 GPIO.NO 23 = R2 GPIO.NO 24 = G2 GPIO.NO 25 = B2 GPIO.NO 3 = CLK GPIO.NO 7 = A GPIO.NO 8 = B GPIO.NO 9 = C GPIO.NO 4 = LAT GPIO.NO 2 = OE
Pythonのサンプルプログラム 12×32 LEDマトリクスディスプレイ
import RPi.GPIO as GPIO import timedelay = 0.000001 // GPIOピン番号と、それぞれのケーブル線を結びつけます。 GPIO.setmode(GPIO.BCM) red1_pin = 17 green1_pin = 18 blue1_pin = 22 red2_pin = 23 green2_pin = 24 blue2_pin = 25 clock_pin = 3 a_pin = 7 b_pin = 8 c_pin = 9 latch_pin = 4 oe_pin = 2
GPIO.setup(red1_pin, GPIO.OUT) GPIO.setup(green1_pin, GPIO.OUT) GPIO.setup(blue1_pin, GPIO.OUT) GPIO.setup(red2_pin, GPIO.OUT) GPIO.setup(green2_pin, GPIO.OUT) GPIO.setup(blue2_pin, GPIO.OUT) GPIO.setup(clock_pin, GPIO.OUT) GPIO.setup(a_pin, GPIO.OUT) GPIO.setup(b_pin, GPIO.OUT) GPIO.setup(c_pin, GPIO.OUT) GPIO.setup(latch_pin, GPIO.OUT) GPIO.setup(oe_pin, GPIO.OUT)
screen = [[0 for x in xrange(32)] for x in xrange(16)]
def clock(): GPIO.output(clock_pin, 1) GPIO.output(clock_pin, 0)
def latch(): GPIO.output(latch_pin, 1) GPIO.output(latch_pin, 0)
def bits_from_int(x): a_bit = x & 1 b_bit = x & 2 c_bit = x & 4 return (a_bit, b_bit, c_bit)
def set_row(row): #time.sleep(delay) a_bit, b_bit, c_bit = bits_from_int(row) GPIO.output(a_pin, a_bit) GPIO.output(b_pin, b_bit) GPIO.output(c_pin, c_bit) #time0.sleep(delay)
def set_color_top(color): #time.sleep(delay) red, green, blue = bits_from_int(color) GPIO.output(red1_pin, red) GPIO.output(green1_pin, green) GPIO.output(blue1_pin, blue) #time.sleep(delay)
def set_color_bottom(color): #time.sleep(delay) red, green, blue = bits_from_int(color) GPIO.output(red2_pin, red) GPIO.output(green2_pin, green) GPIO.output(blue2_pin, blue) #time.sleep(delay)
def refresh(): for row in range(8): GPIO.output(oe_pin, 1) set_color_top(0) set_row(row) #time.sleep(delay) for col in range(32): set_color_top(screen
[row]
[col]) set_color_bottom(screen
[row+8]
[col]) clock() #GPIO.output(oe_pin, 0) latch() GPIO.output(oe_pin, 0) time.sleep(delay)
def fill_rectangle(x1, y1, x2, y2, color): for x in range(x1, x2): for y in range(y1, y2): screen[y][x] = color
def set_pixel(x, y, color): screen[y][x] = color
fill_rectangle(0, 2, 10, 14, 1) fill_rectangle(15, 0, 19, 7, 4) fill_rectangle(20, 4, 30, 14, 2)
while True: refresh()
打ち込みが完了したら、適当な名称を付けて保存しておきましょう。
保存後「RUN」メニューから「RUN」をクリックします。F5キーを押しても同様の作業になります。
実行すると、LEDマトリクスが以下のように表示されます。
ソースコードの値を変えて、表示される四角の色などを変更してみよう。
コード内の以下の部分を見てみましょう。
fill_rectangle(0, 2, 10, 14, 1) fill_rectangle(15, 0, 19, 7, 4) fill_rectangle(20, 4, 30, 14, 2)この3行で、3つの四角形を書いています。最初の2つが、マトリクスの書き出しの座標になります。サンプルでは、0 ,2 .. となっていますが、これは、X方向が0番目、Y方向が2番目のLEDから始まるという事を示しています。写真の右下角が0,0という位置になり、X軸は左に行くほど数字が大きくなり、Y軸は上に行くほど数字が大きくなります。
サンプルソースコードは数字の「0」から始まっていて、1個目のLEDの番号は「0」です。赤い四角形は最初の1個目から始まり、下から3番目のLEDからスタートしています。3番目は、0,1,2 なので数値上は「2」という事になります。次に下の赤い文字10 ,14 … の部分です。ここは、何個点滅させるかを表しています。
fill_rectangle(0, 2, 10, 14 , 1)
fill_rectangle(0, 2, 10, 14, 1) #fill_rectangle(15, 0, 19, 7, 4) #fill_rectangle(20, 4, 30, 14, 21) set_pixel(x, y, color): 関連記事同じ著者から Raspberry Pi5 Kernelのpage. Raspberry PiのKernelのPages. 最適なSDカードの選び方とその種類 ようこそ! アカウントにログインしてください パスワードをリカバーする パスワードはEメールで送られます カテゴリー Recent Posts プログラミング未経験OK!MicroPythonの. Raspberry Pi Pico/Pico Wの. Raspberry Pi Pico/Pico Wの. POPULAR POSTS Raspberry Pi のIPアドレスを固定にす. ラズベリーパイでWEBサーバーを構築しよう!<Ap. ラズベリーパイ+Retro Pieでゲーム機を作ろ. POPULAR CATEGORY- Raspberry Pi 295
- Fabshop 135
- プログラミング 130
- 電子工作 117
- スターターキット 112
- Raspberry Pi セットアップ 90
- RaspPi電子工作 87
- Scratch 71