(2)お囃子機能追加「Pico オルゴール」

Raspberry PI Pico オルゴール(2)お囃子機能追加

お囃子機能

Raspberry PI Pico (以下、Pico)のオルゴールに、
お囃子機能 を追加しました。
「なんのこった?」と思うと思うのですが、
見てもらった方が早いです。

動画
画像クリックで、YouTube動画が開きます。

「くだらねぇ~」(言われると悔しいので、言われる前に、言っておくやつww)

主な追加部品

  • 透明アクリルケース
    100均で売ってたもの、たたいた時に音が響くものがいいです。
  • サーボモーター
    MiniS RB50 何年か前に買って使ってなかったもの、
    1000円くらいで、今も買えます。
  • 鈴 2個
    100均で、10個入りで売ってたもの
  • 鈴付け用の針金 2本
    • サーボモーターのホーン(モーターの回転部につけてる白い部品)に付ける(抵抗で代替)
    • ケースに鈴をぶら下げるもの(手元にあったビニタイを使用)
  • コンデンサ 0.1μF
    パスコン(手元にあったもの、気休めに近いですがある方がいいです)

打音・鈴音

試行錯誤の結果

  • ケースを鈴でたたく音(以下、打音)
  • 鈴と鈴をぶつける音(以下、鈴音)

がよさげでした。

サーボモーターで、この音を出すには、ホーンの位置 2個所を設定してトグルさせるだけで、実装できます。
ただ、鈴音、打音を交互で出すことしかできません(^^;

お囃子用の固有問題(って大げさな)

Beep音と同時に、打音・鈴音のモーターを動かすと
Beep音が鳴り始めてから、打音・鈴音がするので、
「酔っぱらって、手拍子が合わせられないおっさん」
みたいになります。

それを避けるため、(いい加減ですが)Beep音の
約0.1秒前に、モーターを動かすことで、
「ちょっとリズム感が弱いおっさん」くらいになってます。

サーボモーター制御について

MiniS RB50 の仕様 によると、信号周期 15-20mS とあるので、 周波数表現だと、50-66.7Hzくらいになりそうなので、 PWMの周波数を 60Hz(約 16.6mS)にしました。

あとは、実際に動かしてみて、よさげな値に設定します。
この値は、おそらく個体差があるので、実際に使う
モーターで、設定値を変えなければいけないはずです。

Pythonソースの要部は、こんな感じです。
初期設定

from machine import Pin, PWM

bell_pos1 = 2200 # 鈴音位置(これは、モーター固有値)
bell_pos2 = 3600 # 打音位置

bell_pos = bell_pos2

motor1 = PWM(Pin(18, Pin.OUT))   # PWM 1A ch
motor1.freq(60)
motor1.duty_u16(bell_pos)

def bell_exec():
    global bell_pos
    if bell_pos == bell_pos1:
        bell_pos = bell_pos2
    else:
        bell_pos = bell_pos1
    motor1.duty_u16(bell_pos)

で、Beep音を出す 0.1秒ほど前に bell_exec() を実行します。

ごめんなさい、まだ改良の余地がありそうなので、
現時点では、ソースは公開しないでおきます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です