JH7UBCブログ

アマチュア無線 電子工作 家庭菜園など趣味のブログです

micro:bit MicroPython エレキー

2019-11-14 15:22:09 | micro:bit

 micro:bit でエレキーを作ってみます。

 パドルをpin1とpin2に接続し、pin0に出力します。

 pin1とpin2は、micro:bitの設定でPULL UPします。

 pin0の出力は、2SC1815のオープンコレクタで出力します。(リグに接続します)

 

 スクリプトです。

 スピードは固定です。

 

パドルはコードウォリーJrを使用し、モニタ用にブザーを接続してテストしました。

 ちゃんとエレキーとして動作します。

 スクイーズ操作もできますが、メモリ機能がないので、切れが早いので、慣れるまで若干練習が必要かもしれません。


micro:bit MicroPython PULL UP,PULL DOWN

2019-11-12 13:12:13 | micro:bit

 micro:bitの入力ピンは、プログラムによって、pULLUP,PULL DOWNそしてそのどちらもしない状態NO PULLにセットすることができます。

 pin0を0.5秒(500ms)ごとに、PULL UP,PULL DOWN,NO PULLの状態にセットして、pin0の電圧を観察してみます。

 スクリプトです。

 picoscopeの画面です。

PULL UP で3.3V

PULL DOWN で0V

NO PULL で約0.3V でした。

必要に応じて、各入力端子をPULL UP,PULL DOWN,NO PULLにセットして使用します。

 


micro:bit MicroPython モールス符号練習機

2019-11-09 15:06:50 | micro:bit

 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
 
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)
 
def dash():
    music.pitch(700,600)
 
def space():
    sleep(200)
 
def ch_space():
    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:
    if button_a.is_pressed():
        morse()
---------------------------------------------------------------------------------------
 
 pin0にスピーカを接続して音を出します。練習にちょうど良い音量です。(イヤホンでは、音が大きすぎます)
 電池で動きますので、持ち運び可能です。
 
 速度を変えられるようにするなど、皆さんで改良してみてください。

 


micro:bit MicroPython analog OUTPUT テスト

2019-10-30 14:28:06 | micro:bit

 micro:bitのanalog出力のテストをします。

 analog出力といっても、実際はPWM(Pulse Width Modulation)出力です。

 pin0に50%のPWMを出力してみます。

 write_analog(value)で、value=0~1023で出力の値を決定します。

 value=511で50%出力になります。

 スクリプトです。

 

 出力された波形です。

 

 3.3Vで周期20ms、デューティ50%の矩形波が出力されました。

 周波数を測定してみると約50Hz(50Hz~55Hzで若干変動します)でした。

 pin0.write_analog(255)としたときの出力25%の出力波形です。

 

 pin0.write_analog(767)としたときの出力75%の出力波形です。

 

 set_analog_period(period)メソッドでPWMの周期を設定できます。(periodは、msの値)

 period=10(ms)、すなわち周波数100Hz、デューティ比50%のPWM信号を発生させてみます。

 スクリプトです。

実際の波形です。

周波数を測定してみました。

 100Hzです。


micro:bit MicroPython デジタル電圧計

2019-10-29 08:21:54 | micro:bit

 昨日の記事に書いたanalog入力を利用して、micro:bitでデジタル電圧計を作ることができます。

 micro:bitは、入力0~3.3Vを0~1023に変換して読み込みますので、0~1023を0~3.3に変換するプログラムを組み、LEDにスクロール表示します。

 スクリプトです。

 4行目で、0~1023を0~3.3の数値に変換します。

 5行目で、小数点以下2桁を切り捨て、小数点以下1桁の数値にします。

 pin0に電圧を加え、実際に電圧を表示させてみました。(micro:bitは表示の途中の様子です。)

 右側のパネルメータの数値とは0.1V程度の誤差がありますが、電圧がスクロール表示されました。