温度の通信ができたので気をよくして、他に何か通信したくて、なんと無謀にもモールス信号に挑戦しようと考えた。
今回のルール
- 通信文字はアルファベット(A - Z)
- 2 つのボタンでトン・ツーを表現する (A ボタン - トン、B ボタン - ツー)
- 文字と文字の間は振る
- AB ボタンを両方押したら単語の終了、送信
むむ、配列の初期値設定は
変数の定義と、配列の値設定で 2 要素の設定はできるのだが、アルファベットの 26 個分設定したい。
結局ベースをブロックで作って、Javascript 側に変換して、コードを記述する方法で対応した。

アルファベットとモールス信号の対応表
2 つの配列を作って、それぞれに文字を設定して、要素の番号で同期させるようにする
| モールス符号 | アルファベット |
|---|---|
| AB | A |
| BAAA | B |
| BABA | C |
| BAA | D |
| A | E |
| AABA | F |
| BBA | G |
| AAAA | H |
| AA | I |
| ABBB | J |
| BAB | K |
| ABAA | L |
| BB | M |
| BA | N |
| BBB | O |
| ABBA | P |
| BBAB | Q |
| ABA | R |
| AAA | S |
| B | T |
| AAB | U |
| AAAB | V |
| ABB | W |
| BAAB | X |
| BABB | Y |
| BBAA | Z |
コードはこうなった
let mWord: string[] = []
let mList = ""
let mAlpha: string[] = []
let mCount = 0
let mInWord = ""
input.onButtonPressed(Button.A, () => {
mList = "" + mList + "A"
})
input.onButtonPressed(Button.B, () => {
mList = "" + mList + "B"
})
input.onButtonPressed(Button.AB, () => {
basic.showString(mInWord)
radio.sendString(mInWord)
mInWord = ""
mList = ""
})
radio.onDataPacketReceived( ({ receivedString: mInWord }) => {
basic.showString(mInWord)
})
input.onGesture(Gesture.Shake, () => {
basic.showString(mList)
for (let mCount = 0; mCount <= 25; mCount++) {
if (mList == mWord[mCount]) {
mInWord = "" + mInWord + mAlpha[mCount] + ""
}
}
mList = ""
})
mAlpha = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]
mWord = ["AB", "BAAA", "BABA", "BAA", "A", "AABA", "BBA", "AAAA", "AA", "ABBB", "BAB", "ABAA", "BB", "BA", "BBB", "ABBA", "BBAB", "ABA", "AAA", "B", "AAB", "AAAB", "ABB", "BAAB", "BABB", "BBAA"]
mList = ""
mInWord = ""
mCount = 0
radio.setGroup(1)
basic.forever(() => {
})
ブロックエディタ側だと結構複雑っぽかったが、コードはなんかシンプル
動かしてみた
先に、H(AAAA) シェイク E(A) シェイク L(ABAA) シェイク L(ABAA) シェイク O(BBB) シェイク で HELLO の単語は作ってあり、最後に ABボタンを押して転送するところだけ動画になっています。
余談
もくもく会で作っていたら、同じ無線グループ番号を使っていて、意図しない通信が発生するというハプニングが発生した
が、怪我の功名で、同じ無線グループ番号送信用 micro:bit を複数用意すれば、いろんなコントロールもできるんじゃね?的な発想に発展し、たぶんこれで micro:bit リモコンタンクを作ってくれるだろうと期待 ( 他力本願 )
なお、次回のもくもく会は 2018年1月30日 です!
