前回のプログラムを少し改修して、「CW コールサイン・トレーナ」を作ってみました。
圧電スピーカは、A0 と GND 端子に接続してください。
電源投入でランダムで構成されたコールサインが連続で流れます。
CW の速度は A、B ボタンで変更可能です。
A ボタンで速く(「+」表示)、Bボタンで遅く(「ー」表示)なります。
あと、LED のドット表示で多少見にくいですが、アルファベットも表示するようにしておきました。
micro:bit :MicroPython で morse Callsign Trainer
# by JH1LHV from microbit import * from random import randrange dot_speed = 60 pin0.set_analog_period_microseconds(1500) morsetab = { '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': '--..', '0': '-----', '1': '.----', '2': '..---', '3': '...--', '4': '....-', '5': '.....', '6': '-....', '7': '--...', '8': '---..', '9': '----.', ' ': ' ', '?': '..--..', ';': '-.-.-.', ':': '---...', '-': '-....-', '/': '-..-.', '(': '-.--.-', ')': '-.--.-', '_': '..--.-', } prefix = ["JA", "JH", "JR", "JE", "JF", "JG", "JI", "JJ", "JK", "JL", "JM", "JN", "JO", "JP", "JQ", "JS", "7J", "7K", "7L", "7M", "7N", "JD", "8J"] def dot(): pin0.write_analog(500) sleep(dot_speed) pin0.write_analog(0) def dash(): pin0.write_analog(500) sleep(dot_speed * 3) pin0.write_analog(0) while True: r = randrange(len(prefix)-1) suffix ="" for c in range(3): suffix = suffix + chr(ord('a') + randrange(26)) call = prefix[r] + str(randrange(10)) + suffix for m in call.upper(): if button_a.is_pressed(): display.scroll("+") dot_speed -= 3 elif button_b.is_pressed(): display.scroll("-") dot_speed += 3 for c in morsetab[m]: if c == '.': dot() elif c == '-': dash() sleep(dot_speed) sleep(dot_speed * 3) display.show(m) sleep(dot_speed * 7)
こんな感じに聞こえます。
プログラムも短く、難しいことは何もやってません。。。
このプログラムでチャンと動いているので、このままコピペして大丈夫です。
この micro:bit の CW トレーナ企画ですが・・・もう少し続くと思います。
皆さんも、購入して遊んでみるのは如何でしょうか。