注釈
SunFounderのRaspberry Pi & Arduino & ESP32愛好者コミュニティへようこそ!Raspberry Pi、Arduino、ESP32について、他の愛好者とともにさらに深く学んでいきましょう。
参加する理由は?
専門的なサポート: 購入後の問題や技術的な課題を、コミュニティやチームのサポートで解決できます。
学びと共有: ヒントやチュートリアルを交換してスキルを向上させましょう。
限定プレビュー: 新製品の発表や先行公開に早期アクセスできます。
特別割引: 最新製品に対する独占的な割引を楽しめます。
フェスティブプロモーションやプレゼント: プレゼント企画やホリデープロモーションに参加できます。
👉 一緒に探求し、創造してみませんか?[ここ]をクリックして、今すぐ参加しましょう!
2.3 LEDのフェード
このレッスンでは、Raspberry Pi Pico 2 Wを使用して、Pulse Width Modulation(PWM)を利用してLEDの明るさを制御する方法を学びます。これは、LEDやモーターなどのデバイスをさまざまな強度で制御するための基本的な技術です。
PWMとは何か?
Pulse Width Modulation(PWM) は、電子機器への電力供給量を制御する方法の一つで、高い周波数で電源をオン・オフし、パルスの「幅」(オンの時間の長さ)でデバイスが受け取る電力を決定します。

デューティサイクル: 信号がアクティブな時間の割合。100%のデューティサイクルは常にオン、0%は常にオフを意味します。
周波数: 信号が1秒間にオン・オフする回数。
デューティサイクルを調整することで、デジタル信号を使用してアナログ出力をシミュレートできます。たとえば、LEDを高速でオン・オフすると、LEDが各サイクル中にどれだけ長くオンの状態にあるかによって、明るさが変化します。
PWMを使用する理由
LEDの明るさ制御: LEDの明るさを滑らかに調整できます。
モーターの速度制御: DCモーターの速度を制御できます。
効率性: PWMは可変抵抗を使用するよりも効率的で、熱として失われるエネルギーを減らします。
Raspberry Pi Pico 2 WにおけるPWMの理解
Raspberry Pi Pico 2 Wは、すべてのGPIOピンにPWM機能を備えていますが、実際には8つのPWMスライス(PWM0からPWM7)と、それぞれに2つのチャンネル(AとB)があり、合計16個の独立したPWM出力を持っています。

注釈
同じPWMスライスを共有するピン(例えば、GP0とGP16)は、異なる周波数を持つことはできませんが、デューティサイクルは異なる設定が可能です。
必要なコンポーネント
このプロジェクトで必要なコンポーネントは次のとおりです。
全セットを購入するのは便利です。リンクはこちら:
名前 |
セットに含まれるアイテム |
リンク |
|---|---|---|
Pico 2 Wスターターキット |
450+ |
個別に購入することもできます。以下のリンクから購入できます。
SN |
コンポーネント |
数量 |
リンク |
|---|---|---|---|
1 |
1 |
||
2 |
マイクロUSBケーブル |
1 |
|
3 |
1 |
||
4 |
複数 |
||
5 |
1(220Ω) |
||
6 |
1 |
回路図

配線図
コードの作成
注釈
2.3_fading_led.pyをpico-2w-kit-main/micropythonから開くか、コードをThonnyにコピーし、「実行」をクリックするか、F5を押してください。正しいインタープリタが選択されていることを確認してください:MicroPython(Raspberry Pi Pico)。COMxx。
import machine
import utime
# GP15ピンでPWMをセットアップ
led = machine.PWM(machine.Pin(15))
led.freq(1000) # 周波数を1000Hzに設定
# 明るさを徐々に増加
for duty in range(0, 65536, 64):
led.duty_u16(duty) # デューティサイクル(16ビット値)を設定
utime.sleep(0.01) # 10ms待機
# LEDをオフにする
led.duty_u16(0)
コードが実行されると、GP15ピンに接続されたLEDは、オフから最大の明るさまで徐々に明るくなります。
コードの理解
ライブラリのインポート:
machine: ハードウェアコンポーネントにアクセスするためのライブラリ。utime: 遅延を加えるための時間関連の関数。
PWMの設定:
machine.PWM(machine.Pin(15)): GP15でPWMを初期化します。led.freq(1000): PWM周波数を1000Hz(1サイクルあたり1ms)に設定します。
デューティサイクルの調整:
for duty in range(0, 65536, 64): 0から65535まで64のステップでループします。led.duty_u16(duty): デューティサイクルを設定します。duty_u16関数は16ビット値(0から65535)を受け付け、0は0%、65535は100%のデューティサイクルを意味します。utime.sleep(0.01): 明るさの変化を視覚的に感じられるように、少しの遅延を加えます。
LEDをオフにする:
led.duty_u16(0): デューティサイクルを0%に設定して、LEDをオフにします。
さらに実験してみましょう
フェードインとフェードアウト: LEDがフェードインした後、フェードアウトするようにコードを変更します。
スピードの変更:
utime.sleep()の値を調整して、明るさの変化速度を変更します。異なる周波数:
led.freq()を使って異なるPWM周波数を試し、LEDに与える影響を確認します。
結論
PWMは、デジタル出力を使ってアナログのような入力を制御するための強力な技術です。PWMを理解することで、モーター制御、音声信号生成などのより複雑なプロジェクトに挑戦することができます。
Raspberry Pi Pico 2 WでPWMの基本をマスターすれば、さらに進んだ電子工作プロジェクトを作成する準備が整います。
参考文献
