小林@筑波技大/福祉工学やら支援技術やら

月: 2023年2月

パラメトリックスピーカー

2008年発売の秋月のキット、2012年くらいに一つ作っていましたが、10年ぶりにもうひとつ組んでいます。半田づけ作業中、眼鏡を外した方が楽になってしまいましたが…

合計100個の超音波素子をつける作業も終わりました。

組みあがったパラメトリックスピーカーキット

前回↓はエネループ10本の電池ボックスをグリップにしてハンドガンぽくプラ板で仕上げましたが、今回はどういう筐体にするか思案中です。

10年前のパラメトリックスピーカー、ハンドガン仕様前面
10年前のパラメトリックスピーカー、ハンドガン仕様背面

ラズパイPicoで2サーボ

これまでArduinoやESPだけしか触ってきませんでしたが、Micropythonで動くので学生受けもよさそうかな…と思ってRaspberry Pi Picoに手を出してみることにしました。

とりあえずサーボです。「Raspberry pi Pico servo/サーボ」などと検索すれば1つ動かすサンプルはいくつも出てくるのですが、スレッドで2つ動かしたいので適当に書いてみます。

ブレッドボード上のRaspberry PI Picoとサーボ・電池ボックス
from machine import PWM, Pin
from time import sleep
import _thread

servo_1 = PWM(Pin(0))
servo_1.freq(50)
servo_2 = PWM(Pin(1))
servo_2.freq(50)

angle_0 = int(2.5 / 20 * 65536)
angle_90 = int(1.5 / 20 * 65536)
angle_180 = int(0.5 / 20 * 65536)

def Move_1():
    while True:
        servo_1.duty_u16(angle_0)
        sleep(0.5)
        servo_1.duty_u16(angle_90)
        sleep(0.5)
        servo_1.duty_u16(angle_180)
        sleep(0.5)

def Move_2():
    while True:
        servo_2.duty_u16(angle_0)
        sleep(1)
        servo_2.duty_u16(angle_90)
        sleep(1)
        servo_2.duty_u16(angle_180)
        sleep(1)

_thread.start_new_thread(Move_1, ())
Move_2()

無事それっぽいリズムを刻む動きをしてくれました。

最初、2つともスレッドにしていて少しハマりました。
(最終行を「_thread.start_new_thread(Move_2, ())」と書いていた)
PicoはPWMを2系統しか出せないようなので、3つ以上のサーボを動かすには別途コントローラが必要ですね。