6.5 カラーグラデーション

色彩の世界を体験する準備はできていますか?このプロジェクトでは、RGB LEDを制御し、滑らかな色の遷移を実現することができます。自宅の装飾に色を加えたい方や、楽しいプログラミングプロジェクトを探している方にもぴったりです。さあ、このカラフルな世界に一緒に飛び込みましょう!

必要な部品

このプロジェクトには以下のコンポーネントが必要です。

キットを一式購入すると便利です。こちらがリンクです:

名前

このキットのアイテム

リンク

ESP32 Starter Kit

320+

ESP32 Starter Kit

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

コンポーネントの紹介

購入リンク

ESP32 WROOM 32E

BUY

ESP32カメラ拡張ボード

-

ブレッドボード

BUY

ジャンパーワイヤ

BUY

ポテンショメータ

BUY

RGB LED

BUY

回路図

../../_images/circuit_6.5_color_gradient_ar.png

配線図

../../_images/rgb_pin.jpg

RGB LEDには4本のピンがあります。一番長いピンが共通カソードピンで、通常はGNDに接続されます。最も長いピンの隣の左ピンが赤、右側の2ピンが緑と青です。

../../_images/6.5_color_rgb_bb.png

コード

注釈

  • ファイル 6.5_color_gradient.ino をパス esp32-starter-kit-main\c\codes\6.5_color_gradient から開いてください。

  • ボード(ESP32 Dev Module)と適切なポートを選択した後、 アップロード ボタンをクリックします。

  • "Unknown COMxx"が常に表示されますか?

このプロジェクトでは、RGB LEDとポテンショメータを使用して色混合効果を作り出します。ポテンショメータはLEDの色相値を調整するために使用され、その色相値は色変換関数を使用してRGB値に変換されます。そして、RGB値を使用してLEDの色を更新します。

どのように動作するのか?

このプロジェクトは、 2.3 カラフルライト プロジェクトに基づいており、LEDの色相値を調整するためのポテンショメータを追加しています。色相値は色変換関数を使用してRGB値に変換されます。

  1. ループ関数内で、ポテンショメータの値を読み取り、色相値(0-360)に変換します。

    int knobValue = analogRead(KNOB_PIN);
    float hueValue = (float) knobValue / 4095.0;
    int hue = (int) (hueValue * 360);
    
  2. HUEtoRGB() 関数を使用して色相値をRGB値に変換し、新しい色値でLEDを更新します。

    int red, green, blue;
    HUEtoRGB(hue, &red, &green, &blue);
    setColor(red, green, blue);
    
  3. setColor() 関数は LEDC ライブラリを使用して赤、緑、青チャンネルの値を設定します。

    void setColor(int red, int green, int blue) {
        ledcWrite(redChannel, red);
        ledcWrite(greenChannel, green);
        ledcWrite(blueChannel, blue);
    }
    
  4. HUEtoRGB 関数は、HSLカラーモデルを使用して色相値をRGB値に変換します。

    void HUEtoRGB(int hue, int* red, int* green, int* blue) {
        float h = (float) hue / 60.0;
        float c = 1.0;
        float x = c * (1.0 - fabs(fmod(h, 2.0) - 1.0));
        float r, g, b;
        if (h < 1.0) {
            r = c;
            g = x;
            b = 0;
    ...