注釈

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) は、電子機器への電力供給量を制御する方法の一つで、高い周波数で電源をオン・オフし、パルスの「幅」(オンの時間の長さ)でデバイスが受け取る電力を決定します。

img_pwm_duty_cycle

  • デューティサイクル: 信号がアクティブな時間の割合。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出力を持っています。

pin_pwm

注釈

同じPWMスライスを共有するピン(例えば、GP0とGP16)は、異なる周波数を持つことはできませんが、デューティサイクルは異なる設定が可能です。

必要なコンポーネント

このプロジェクトで必要なコンポーネントは次のとおりです。

全セットを購入するのは便利です。リンクはこちら:

名前

セットに含まれるアイテム

リンク

Pico 2 Wスターターキット

450+

Pico 2 W Kit

個別に購入することもできます。以下のリンクから購入できます。

SN

コンポーネント

数量

リンク

1

Pico 2 Wの概要

1

2

マイクロUSBケーブル

1

3

ブレッドボード

1

買う

4

ジャンパーワイヤー

複数

買う

5

抵抗器

1(220Ω)

買う

6

LED

1

買う

回路図

sch_led

配線図

wiring_led

コードの作成

注釈

  • 2.3_fading_led.pypico-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の基本をマスターすれば、さらに進んだ電子工作プロジェクトを作成する準備が整います。

参考文献