pwm = PWM.new( machine dependent parameters )
なし?
# PWM(dest, *, freq, duty_u16, duty_ns)
pwm = PWM(pin) # 指定のピンの PWM オブジェクトを作成
なし。
他のクラスと同じように、コンストラクタで初期のパラメータを指定できた方が良いかもしれない。
pwm.frequency( 440 ) # 440Hz
pwm.period_us( 2273 ) # 周期を指定する方法 1/2273us = 440Hz
pwm.freq(5000)
# 200us の周期、デューティ比を 5us で再初期化
pwm.init(freq=5000, duty_ns=5000)
なし?
周波数とデューティーを両方同時に変更できるメソッドもあった方が良いとは思うが、両方同時に変更が必要なアプリケーションには何があるだろうか?
pwm.duty( 512 ) # 50%
pwm.duty_u16([value]) # PWM 出力の現在のパルス幅を、0〜65535 の範囲の符号なし16ビット値として取得または設定します。
pwm.duty_ns([value]) # PWM 出力の現在のパルス幅をナノ秒単位の値として取得または設定します。
# Writes an analog value (PWM wave) to a pin.
analogWrite(pin, value) # value 0 to 255
Arduinoの、「PWMはアナログ値」の割り切りがすごい。
mruby/c の、1024を最大値(100%)にするルールは、何かを真似たものだったはずだけれど、何だったっか忘れた。
MicroPythonの真似がよさそうに思う。