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=0 | X=1 | X=2 | X=3 | X=4 |
Y=0 | p13,p4 | p14,p7 | p13,p5 | p14,p8 | p13,p6 |
Y=1 | p15,p7 | p15,p8 | p15,p9 | p15,p10 | p15,p11 |
Y=2 | p14,p5 | p13,p12 | p14,p6 | p15,p12 | p14,p4 |
Y=3 | p13,p11 | p13,p10 | p13,p9 | p13,p8 | p13,p7 |
Y=4 | p15,p6 | p14,p10 | p15,p4 | p14,p9 | p15,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) | NC | NC |
ROW3(p15) | (2,4) | (4,4) | (0,4) | (0,1) | (1,1) | (2,1) | (3,1) | (4,1) | (3,2) |
適当なnRF51822なマイコンに、このLEDマトリックスを接続して、mbedインターフェイスからドラッグアンドドロップ書き込めるようにしました。
ブロックエディタを使ってプログラミングしてLEDマトリックスに表示できるようになります。
参考
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 Editor | P0 | P1 | P2 | P8 | P12 | P16 | A | B |
nRF51822 mbed | P0_3 PAD1 | P0_2 PAD2 | P0_1 PAD3 | P0_18 | P0_20 | P0_16 | P0_17 BUTTON_A | P0_26 BUTTON_B ※32.768kHzクリスタル非搭載のみ使用可 |
(2016/4/26追加)
---
0 件のコメント:
コメントを投稿