【Seeeduino xiao】PWM制御でLEDの明るさ調整

pwm-icon2 Seeeduino xiao

本記事の内容

Seeeduino xiao RP2040を使用して、PWM制御でLEDの明るさを調整する方法の紹介になります。

LEDの出力を通常の0か1ではなく、MicroPythonで微細にコントロールして試してみました。

PWM制御とは

PWM(Pulse Width Modulation)とは、電子回路における電力制御方式の1つです。通常では0(オフ)か1(オン)のどちらかしか出力できないところを、0と1の繰り返しスイッチングによって、出力値を細かく制御します。

非常に早い周期でスイッチングを行うことで、オンのパルス幅に比例した任意の出力が得られた状態に等しくなります。そのため、うっすらと明るいLEDや低速回転のモータが実現できます。

必要なもの

  • Seeeduino xiao RP2040
  • LEDと抵抗

配線

wired-pwm2

LEDと抵抗をP1ピンにつなげるだけです。

プログラムコード

PWM制御で指定する値は、周期”Led.freq(1000)”と、Duty比”Led.duty_u16(65535)”の二つです。

周期”Led.freq(1000)”は値を小さくすると、人間の目でもチカチカ見えるようになります。Duty比”Led.duty_u16(65535)”は、16bitの0~65535段階から指定できます。

from machine import PWM
from time import sleep

Led  = PWM(machine.Pin(1, machine.Pin.OUT))
Led.freq(1000)#周期

Led.duty_u16(65535)#Duty比
sleep(2)
Led.duty_u16(55535)
sleep(2)
Led.duty_u16(45535)
sleep(2)
Led.duty_u16(35535)
sleep(2)
Led.duty_u16(25535)
sleep(2)
Led.duty_u16(15535)
sleep(2)
Led.duty_u16(5535)
sleep(2)
Led.duty_u16(0)
sleep(2)

実行結果とまとめ

PWM制御により、プログラムコードからLEDの明るさを自在に調整することができました。LEDだけでなく、他のいろいろな電子回路にもPWM制御は応用できます。

コメント