モールスの鳴動と同時に文字を表示している高輝度な 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 の点灯が無くなりちょっと寂しくなりますが、モールスを覚えた人には必要ないので。
・・・って、電池の持ちが良くなった方がいいんじゃないかな。