2016年4月24日日曜日

BBC micro:bit互換のLEDマトリックスを作ってみる

@va009039が投稿した動画 -



BBC micro:bitは5行5列のLEDマトリックスを持っているが、内部的には9行3列でダイナミック表示をしているようです。

回路図を見つけれなかったのでソースコードから調べて配線してみました。

mbedライブラリでのピン名称
mbed/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/TARGET_NRF51_MICROBIT/PinNames.h
と、
ランライムのLEDマトリックスドライバの変換配列(MICROBITMICROBIT_DISPLAY_TYPE == MICROBIT_SB2)
microbit-dal/inc/drivers/MicroBitMatrixMaps.h
を参考にしてLEDへ接続するピン番号を割り当てると次のようになります。
LED(X,Y)X=0X=1X=2X=3X=4
Y=0p13,p4p14,p7p13,p5p14,p8p13,p6
Y=1p15,p7p15,p8p15,p9p15,p10p15,p11
Y=2p14,p5p13,p12p14,p6p15,p12p14,p4
Y=3p13,p11p13,p10p13,p9p13,p8p13,p7
Y=4p15,p6p14,p10p15,p4p14,p9p15,p5

ピン番号からLED位置への変換
Pin to LED(X,Y)COL1(p4)COL2(p5)COL3(p6)COL4(p7)COL5(p8)COL6(p9)COL7(p10)COL8(p11)COL9(p12)
ROW1(p13)(0,0)(2,0)(4,0)(4,3)(3,3)(2,3)(1,3)(0,3)(1,2)
ROW2(p14)(4,2)(0,2)(2,2)(1,0)(3,0)(3,4)(1,4)NCNC
ROW3(p15)(2,4)(4,4)(0,4)(0,1)(1,1)(2,1)(3,1)(4,1)(3,2)

適当なnRF51822なマイコンに、このLEDマトリックスを接続して、mbedインターフェイスからドラッグアンドドロップ書き込めるようにしました。

ブロックエディタを使ってプログラミングしてLEDマトリックスに表示できるようになります。

@va009039が投稿した動画 -



参考

mbed HRM1017 互換機を安価に作成する方法
http://qiita.com/EsseiK/items/debaff7c2f2e4f6ae668

(2016/4/24)

補足

Micro:bitは16MHzクリスタル搭載、32.768kHzクリスタル非搭載です。
32.768kHzクリスタル搭載ではP0_26が使われてしまうので、ボタンB(BUTTON_B P0_26)は使えなくなります。

Block Editor等で使うピン名称とnRF51822でのピン名称とは違います。
microbit-dal/inc/drivers/MicroBitPin.h
で定義されています。まとめると次のようになります。
Block EditorP0P1P2P8P12P16AB
nRF51822
mbed
P0_3
PAD1
P0_2
PAD2
P0_1
PAD3
P0_18P0_20P0_16P0_17
BUTTON_A
P0_26
BUTTON_B
※32.768kHzクリスタル非搭載のみ使用可

(2016/4/26追加)
---



0 件のコメント: