プログラミング 小ネタ集 その5

2020.4.27

 私は松阪市に住んでいます。ドンドンコロナが発生して、出歩くことが出来ません。そこで、小学校(パソコンクラブ)~中学用のLEDを使った面白いActuatorを紹介します。Scratch2(RaspberryPai)やMicrobitでも可能と思います(ただし3*3*3になると2次元の配列が簡単に処理できないと難しそう!)。ここではIchigoJam(BASIC)を使います。IchigoJamにはGPIOが6本しかないので、LEDは3×3の格子平面です(写真1)。

小ネタ5-1.png

写真1 3*3のLED-Plane

  (縦が共通アノード1,2,3)

  (横が共通カソード下から4,5,6)

カソード同士、アノード同士を合わせて共通カソード(GPIO:4-6)と共通アノード(GPIO:1-3)とします。このActuatorはもちろんCR2032のようなボタン電池で動かすこともでき、プログラムが分からなくなったときはボタン電池3個を用意して確認できます(乾電池での使用も考えて簡易的にいずれかの極に200Ω程度の電流制限抵抗を1本ずつ入れておいてください)。簡単のために、配列は使用していないデモプログラム(図1)を載せておきます。このActuatorを使ったプログラムの特徴は、通常のLEDの点滅処理では;

10 '3*3-plane carried by LED
20 print "This is 3*3-plane made from LED"
30 ' important point: 1=HIGH,o=LOW,GPIPピンをON-OFFに利用、GNDは不使用
40 '----All LED OFF--------------------------
50 for x=1 to 6
60 out x,0
70 next
80 wait 120
90 '------ All LED ON-----------------------------------
100 out1,1:out2,1:out3,1
110 out4,0:out5,0:out6,0
120 wait 60
130 '------Stepwise LED ON------------------------------
140 for y=1 to 3
150 out y,1:out y+3,0
160 wait 60
170 next
180 '-------Stepwise LED OFF----------------------------
190 for z=1 to 3
200 out z,0
210 wait 60
220 next
230 '--------Pattern 2----------------------------------
240 out4,1:out5,1:out6,1
250 out1,1:out4,0:out2,0:out3,0
260 wait 60
270 out 1,0:out2,1:out3,0
280 out 4,1:out 5,0:out6,1
290 wait 60
300 out 1,0:out2,0:out3,1
310 out 4,1:out5,1:out6,0
320 wait 60
330 GOTO 40

図1

LEDのアノードをGPIOの1番に繋ぎ、カソードをGNDに落とし

   OUT 1,1 

   WAIT 60

   OUT 1,0

   WAIT 60

でチカチカさせます。しかし今回はGNDを使わないでこれをGPIO同士で行ってON-OFFを制御します。したがって

   OUT1,1 ⇔ OUT4,0  (点灯)

   OUT1,0 ⇔ OUT4,1  (消灯)

となることです。これを拡張して3×3×3の立体にLED(写真2)にするとプログラムの重複を避けるために、また複雑さを回避する意味で自然に配列変数LED(3,3)の必要性に迫られ、行列の重要性と便利さが分かってきます。実は日本の教育にはこれが無い。理科や技術・家庭と算数(数学)の連携が無い。したがっていつまでたっても"行列はわからない!"となるわけです。 

小ネタ5-2.png

写真2 3*3*3のLED-Cube for Arduino

 3×3の平面でも、

① 全部のLEDを点ける

② 1個ずつのLEDを点ける

③ LEDを斜め上に向かって点ける

④ 列のLEDを点ける

⑤ ・・・・

といろんな変化が楽しめます。写真の例は赤、黄、緑のLEDを使っています。同一色でもいいと思います。その場合は透明のLEDがお勧めです。Arduinoを使うとGPIOが13個あるので3×3×3のLED-Cubeでも楽に作れますが使用言語がBASICからC++になるので慣れないとちょっと難しい。今年は中学校の"技術・家庭科"の時間にこのActuatorを初デビューさせる予定です。みんなできるかな?