JH1LHVの雑記帳

和文電信好きなアマチュア無線家の雑記帳

スポンサーリンク

micro:bit で morse を鳴らす ~その5~

モールスの鳴動と同時に文字を表示している高輝度な LED ドットマトリクス。
けっこうな明るさなので電池の消耗が気になります。
ボタン電池ということもあり、消費電流は小さい方がベストなんだけどね。。。

ということで、
トータルの鳴動時間を延命するため、LED ドットマトリクスの文字表示を止められるようにしました。

<改修点>
A ボタンを押しながら電源を入れると文字は表示しません。
(普通に電源を入れればこれまで通り LED マトリクスに文字を表示します。)


micro:bit :MicroPython で morse Callsign Trainer v.1.6

# by JH1LHV
# morse Callsign Trainer v.1.6 
from microbit import *
from random import randrange

dot_speed = 60
tone_freq = 1500
pin0.set_analog_period_microseconds(tone_freq)
F = False #mode change flag
DISP = True # LED matrix flag

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)

if button_a.is_pressed():
    DISP = False

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

    if (F is True):
        dot_speed = randrange(50) + 35
        tone_freq = randrange(100) * 10 + 1000   
        pin0.set_analog_period_microseconds(tone_freq)

    for m in call.upper():
        
        if button_a.is_pressed() and button_b.is_pressed():
            if (F is False):
                display.scroll("R") #random
                F = not F
            elif (F is True):
                display.scroll("N") #normal
                dot_speed = 60
                tone_freq = 1500
                pin0.set_analog_period_microseconds(tone_freq)
                F = not F
        elif button_a.is_pressed() and (F is False):
            display.scroll("+")
            dot_speed -= 3
        elif button_b.is_pressed() and (F is False):
            display.scroll("-")
            dot_speed += 3
       
        for c in morsetab[m]: 
            if c == '.': 
                dot() 
            elif c == '-': 
                dash()
            sleep(dot_speed)

        sleep(dot_speed * 3) 
        if DISP == True:
            display.show(m)

    sleep(dot_speed * 7)

 

LED ドットマトリクスの文字表示オン/オフの消費電流の違いを調査すべく「USB 電流電圧チェッカ」で測定を試みましたが、流れている電流が微弱すぎて測定不能でした。。。

まぁ、LED の点灯が無くなりちょっと寂しくなりますが、モールスを覚えた人には必要ないので。
・・・って、電池の持ちが良くなった方がいいんじゃないかな。