Raspberry Pi Picoを使ったエレキーは、MicroPython + Mu IDE環境で既に試作しました。記事はこちら。
今回は、CircuitPython + Mu IDE環境でエレキーを作ってみます。アルゴリズムは同じですが、CircuitPythonでは割込みが使えないので、割込みを使わない方法に変更しました。
回路図です。MIcroPythonの時と同じです。
パドルは、GP0とGP1に接続します。(GP0とGP1は、ソフトでプルアップします)
スクリプトです。
--------------------------------------------------------------------------
"""
Raspberry Pi Pico CircuitPython Elekey
2022.5.28
JH7UBC Keiji Hata
"""
from board import *
import digitalio
import analogio
import time
import pwmio
#setup
Dot_key = digitalio.DigitalInOut(GP0)
Dot_key.direction = digitalio.Direction.INPUT
Dot_key.pull = digitalio.Pull.UP
Dash_key = digitalio.DigitalInOut(GP1)
Dash_key.direction = digitalio.Direction.INPUT
Dash_key.pull = digitalio.Pull.UP
LED = digitalio.DigitalInOut(GP16)
LED.direction = digitalio.Direction.OUTPUT
LED.value = False
TX = digitalio.DigitalInOut(GP13)
TX.direction = digitalio.Direction.OUTPUT
TX.value = False
Side_tone = pwmio.PWMOut(GP15,frequency = 700)
Side_tone.duty_cycle = 0
a = analogio.AnalogIn(A0)#速度調整用
Dot_flag = False
Dash_flag = False
def Space_out():
global dot_time
LED.value = False
TX.value = False
Side_tone.duty_cycle = 0
c = dot_time
while c:
c = c - 1
time.sleep(0.001)
def Dot_out():#dotとspaceを出力
global dot_time,Dash_flag
LED.value = True
TX.value = True
Side_tone.duty_cycle = 32768
c = dot_time
while c:
if Dash_key.value == False:
Dash_flag = True
c = c - 1
time.sleep(0.001)
Space_out()
def Dash_out():#dashとspaceを出力
global dash_time,Dot_flag
LED.value = True
TX.value = True
Side_tone.duty_cycle = 32768
c = dash_time
while c:
if Dot_key.value == False:
Dot_flag = True
c = c - 1
time.sleep(0.001)
Space_out()
#main loop
while True:
dot_time=a.value >> 8
if dot_time <= 40:
dot_time = 40 #最高速度を30wpm(150字/分)に制限
elif dot_time >=200:
dot_time = 200#最低速度を6wpm(30字/分)に制限
dash_time=dot_time+dot_time
dash_time=dash_time+dot_time #dash_time=dot_time * 3
#dot_key,dash_keyが押された時、またはflagが立った時の処理
if Dot_key.value == False or Dot_flag == True:
Dot_out()
Dot_flag = False
if Dash_key.value == False or Dash_flag == True:
Dash_out()
Dash_flag = False
--------------------------------------------------------------------------
ブレッドボードです。
送信時にLEDが点灯します。
パドル、スピーカ、テスターを接続してテストしました。
MicroPython エレキーと同様に問題なく動作しました。
※コメント投稿者のブログIDはブログ作成者のみに通知されます