micro:bit MicroPythonの組み合わせで、モールス符号練習機を作ってみました。
micro:bitで音を出すメソッドは、music.pitch(frequency,duration,pin,wait)です。
pinとwaitを省略するとpin0にfrequency(Hz),でduration(ms)間pin0に矩形波を出力します。
AからZまでのモールス符号をランダムに出力させます。
ボタンAを押すとスタートし、ボタンBでストップさせます。
モールスの速度は、最初のバージョンなので固定として、JARLのモールス電信技能認定の3級より少し早い程度(30字/分)に設定します。(これは後で変更可能です)
つまり、短点とスペースの時間を200ms、長点と文字間のスペースの時間を短点の時間の3倍の600msとします。
スクリプトです。
音の周波数は、700Hzにしています。(好みで変更してください)
モールス符号は、A~Zの順に.と-で表し、morseというリストにしておきます。
また、A~Zの文字は、mojiというリストにしておきます。
0~25の乱数を発生させ、数字に対応した文字を表示し、モールス符号を送出します。
-------------------------------------------------------------------
from microbit import *
import music
import random
import music
import random
morse_code = ['.-','-...','-.-.','-..','.','..-.','--.','....','..','.---',
'-.-','.-..','--','-.','---','.--.','--.-','.-.','...','-',
'..-','...-','.--','-..-','-.--','--..']
'-.-','.-..','--','-.','---','.--.','--.-','.-.','...','-',
'..-','...-','.--','-..-','-.--','--..']
moji = ['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']
def dot():
music.pitch(700,200)
music.pitch(700,200)
def dash():
music.pitch(700,600)
music.pitch(700,600)
def space():
sleep(200)
sleep(200)
def ch_space():
sleep(600)
sleep(600)
def morse():
while True:
n = random.randint(0,25)
m = morse_code[n]
l = len(m)
display.show(moji[n])
for i in range(0,l):
s = m[i]
if s == '.':
dot()
else:
dash()
space()
ch_space()
if button_b.is_pressed():
break
while True:
n = random.randint(0,25)
m = morse_code[n]
l = len(m)
display.show(moji[n])
for i in range(0,l):
s = m[i]
if s == '.':
dot()
else:
dash()
space()
ch_space()
if button_b.is_pressed():
break
while True:
if button_a.is_pressed():
morse()
if button_a.is_pressed():
morse()
---------------------------------------------------------------------------------------
pin0にスピーカを接続して音を出します。練習にちょうど良い音量です。(イヤホンでは、音が大きすぎます)
電池で動きますので、持ち運び可能です。
速度を変えられるようにするなど、皆さんで改良してみてください。
※コメント投稿者のブログIDはブログ作成者のみに通知されます