0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

NeoPixel制御ボードのサンプルプログラム④

Posted at
  • 商品概要

RP2040マイコンを使って、NeoPixelを制御して楽しもうというコンセプトです。
右のコネクタは、電池をつないでパソコンから離れても動くようにしています。
左のジャックから音声信号を入力してADコンバータに入力可能です。
ボタンが1つ or 2つ搭載しているので、外部入力または切り替えなどで使えます。

  • プログラム環境

ArduinoIDE バージョン:2.3.2
Adafruit NeoPixel Library 1.12.2(2024.8.1時点の最新版は1.12.3)

  • ハードウェアの主な仕様

 ①マイコン:PR2040-ZERO(RaspberryPiPico系)
 ②NeoPixel接続ピン  GPI08(R1でショート)
 ③プッシュスイッチ1:GPI07
 ④プッシュスイッチ2:GPI06(2個搭載しているボードのみ)
 ⑤音声入力:GP26

  • メインプログラム(ArduinoIDEのスケッチ)

カラーで徐々に色を変えてLEDを光らせるプログラムです。
カラーLEDでぱっと見映えるプログラムです。
動作チェックにも良いですね。

// カラーで徐々に色を変えてLEDを光らせるサンプルプログラム

#include <Adafruit_NeoPixel.h>  // NeoPixel制御用ライブラリのインクルード

// 定数の定義
#define LED_PIN      8          // NeoPixelの信号接続端子
#define LED_COUNT_X  6          // ドットマトリックスの横のLED数
#define LED_COUNT_Y  6          // ドットマトリックスの縦のLED数
#define BRIGHTNESS   24         // 明るさを24に設定

// NeoPixelオブジェクトの作成
Adafruit_NeoPixel strip(LED_COUNT_X * LED_COUNT_Y, LED_PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  strip.begin();                // NeoPixelの初期化
  strip.setBrightness(BRIGHTNESS); // 明るさを24に設定
  strip.show();                 // 全てのピクセルをオフに初期化
}

void loop() {
  // レインボーサイクルを全体に表示
  rainbowCycle(15);             // レインボーサイクルを表示する関数を呼び出し
}

// レインボーサイクルを表示する関数
void rainbowCycle(uint8_t wait) {
  uint16_t i, j;

  // すべての色を5サイクル表示
  for(j = 0; j < 256 * 5; j++) {
    for(i = 0; i < strip.numPixels(); i++) {
      // 各ピクセルに色を設定
      strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255));
    }
    strip.show();               // LEDマトリックスを更新
    delay(wait);                // 指定した時間待機
  }
}

// Wheel関数: 色相を取得
uint32_t Wheel(byte WheelPos) {
  if(WheelPos < 85) {
    return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0); // 赤から緑へのグラデーション
  } else if(WheelPos < 170) {
    WheelPos -= 85;
    return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3); // 緑から青へのグラデーション
  } else {
    WheelPos -= 170;
    return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3); // 青から赤へのグラデーション
  }
}

  • このプログラムを作成した時の考え方。

カラーLEDを光らせて一番見栄えがする光らせ方をさせたい!と思って光らせてみました。

  • 実行結果

スマホの動画だとスミアが出まくって見づらいですね。
実際のLEDはかなりきれいなんですけどね。

VID20240801_cnv2.gif

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?