注釈
こんにちは!FacebookのSunFounder Raspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Raspberry Pi、Arduino、ESP32について、同じ趣味を持つ仲間とともにさらに深く学びましょう。
なぜ参加するのか?
専門的サポート: コミュニティやチームからの支援を受けて、販売後の問題や技術的な課題を解決します。
学びと共有: ヒントやチュートリアルを交換し、スキルを向上させます。
独占プレビュー: 新製品の発表や先行情報をいち早く入手できます。
特別割引: 最新の製品をお得に購入できる割引を提供します。
祝祭プロモーションやギフト: ギフトや祝日のプロモーションに参加できます。
👉 一緒に探索して創造してみませんか?[ここ]をクリックして、今すぐ参加しましょう!
2.3 LEDのフェードイン・フェードアウト
このレッスンでは、Raspberry Pi Pico 2 Wを使用して、PWM(パルス幅変調)でLEDの明るさを制御する方法を学びます。これは、LEDやモーターなどのデバイスの強度を調整するための、電子回路における基本的な技術です。
PWMとは?
パルス幅変調(PWM) は、電子デバイスに供給される電力の量を高頻度でオン・オフすることによって制御する方法です。パルスの「幅」(オンの時間の長さ)がデバイスが受け取る電力の量を決定します。

デューティサイクル: 信号がアクティブな期間の割合です。100%のデューティサイクルは常にオン、0%は常にオフを意味します。
周波数: 信号がオンとオフを繰り返す回数(秒単位)です。
デューティサイクルを調整することによって、デジタル信号を使用してアナログ出力をシミュレートできます。例えば、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 |
Micro USBケーブル |
1 |
|
3 |
1 |
||
4 |
数本 |
||
5 |
1(220Ω) |
||
6 |
1 |
回路図

配線
コードの作成
注釈
ファイル
2.3_fading_led.inoをpico-2w-kit-main/arduino/2.3_fading_ledのパスで開くことができます。または、このコードを Arduino IDE にコピーしてください。
アップロードボタンをクリックする前に、Raspberry Pi Picoボードと正しいポートを選択してください。
const int ledPin = 15; // GPIOピン15に接続されたLED
void setup() {
pinMode(ledPin, OUTPUT); // GPIOピンを出力モードに設定
}
void loop() {
// 明るさを増加
for (int value = 0; value <= 255; value += 5) {
analogWrite(ledPin, value); // 明るさを設定
delay(30); // 30ミリ秒待機
}
// 明るさを減少
for (int value = 255; value >= 0; value -= 5) {
analogWrite(ledPin, value);
delay(30);
}
}
コードをアップロードした後、LEDは徐々に明るさが増し、その後フェードアウトすることで、スムーズなパルス効果が作成されます。
コードの理解
LEDピンの宣言:
定数整数
ledPinを宣言し、それを15に設定します。この値は、LEDが接続されているGPIOピン15に対応します。const int ledPin = 15;
ピンの設定:
setup()関数は、ボードが起動するたびに1回実行されます。ここでは、ledPinを出力として初期化するためにpinMode()を使用します。void setup() { pinMode(ledPin, OUTPUT); }
ループ関数:
loop()関数は繰り返し実行されます。この関数には2つのforループがあります。明るさを増加:
value = 0から始めて、5ずつ増加して255に達します。明るさを減少: value = 255 から始めて、5ずつ減少して0に達します。
analogWrite()関数は、指定したピンにPWM信号を書き込みます。値は0(常にオフ)から255(常にオン)までで、明るさの256段階を設定できます。delay(30);を追加することでループの速度が遅くなり、明るさの変化が徐々に見えるようになります。
void loop() { // 明るさを増加 for (int value = 0; value <= 255; value += 5) { analogWrite(ledPin, value); delay(30); } // 明るさを減少 for (int value = 255; value >= 0; value -= 5) { analogWrite(ledPin, value); delay(30); } }
追加のヒント
実験: 値の増加幅や遅延時間を変更して、フェードの速度にどう影響するかを確認してみましょう。
PWMの制限について理解する: PicoのすべてのGPIOピンはPWMをサポートしていますが、同じPWMスライスを共有するピンは、異なる周波数を持つことはできませんが、デューティサイクルは異なる値に設定できます。
安全第一: LEDが過剰な電流を引き込んで焼けないように、常にLEDには抵抗を使用してください。
結論
Raspberry Pi Pico 2 WでPWMを使用してLEDのフェードイン・フェードアウト効果を作成しました。このプロジェクトは、デジタル信号を使用してアナログ動作をシミュレートする方法を示しており、電子回路とマイクロコントローラのプログラミングにおける基本的な概念を学ぶことができます。
