Samples_PWM - gfd-dennou-club/mrubyc-esp32 GitHub Wiki
はじめに
PWM クラスのメソッドについては,Class_PWM を参照されたい.
PWM の基礎
電圧の HIGH と LOW を繰り返すことで, 実効的な電圧を変化させることができる.デューティー比が実効的な電圧比に対応する.
本ライブラリはデューティー比は比率 (%) で与える.
圧電ブザー
圧電ブザーを鳴らすプログラムの例.
# インスタンスの作成. スピーカの接続されているピン (GPIO 15) を使う設定に.
pwm15 = PWM.new( 15, timer:0, frequency:1000, duty:0 )
pwm15.frequency(440) # 周波数の設定.440Hz に
pwm15.duty(50) # デューティー比を 50% に
sleep 5 # 5 秒鳴らし続ける
pwm15.duty(0) # デューティー比を 0% に = 消音
LED の明るさ変化
LED (GPIO 13) の明るさを 10 秒間隔で変化させる
#インスタンスの作成. LED の接続されているピン (GPIO 13) を PWM で利用.
pwm13 = PWM.new( 13, timer:0, frequency:1000, duty:0 )
loop do
i = 0
10.times do
pwm13.duty( 10 * i )
sleep(1)
end
sleep(0.1)
end
サーボモータ
サーボモーターからは3本の端子が出ており,赤は電源のプラス,黒あるいは茶色はグランド(電源のマイナス)に接続する.オレンジあるいは黄色には制御信号を接続する.
サーボモータを制御するためには周期を 20 ms (周波数 50 Hz) にするのが基本だが,50 ~ 100 Hz 程度は許容される.またパルス幅は 1 ms から2 ms の間で変化させ,パルス幅が 1 ms の時にサーボモーターの軸の角度が 0 度となる.また 2 ms の時にサーボモーターの軸の角度は 180 度となる.半分の 1.5 ms の時は 90 度となる.この様にパルス幅を微妙に変えることによって,サーボモーターの軸の角度を 0 度から 180 度の間で制御することができる.
pwm27 = PWM.new(27, timer:2, frequency:50, duty:0) # 周波数は 50 に.timer はオプション
loop do
pwm27.pulse_width_us( 1000 )
sleep 1
pwm27.pulse_width_us( 1500 )
sleep 1
pwm27.pulse_width_us( 2000 )
sleep 1
end