JH7UBCブログ

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

Raspberry Pi Pico CircuitPython エレキー

2022-05-28 22:11:37 | Raspberry Pi Pico
 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 エレキーと同様に問題なく動作しました。

最新の画像もっと見る

コメントを投稿