注釈

こんにちは。 Facebook の SunFounder Raspberry Pi & Arduino & ESP32 愛好者 コミュニティ へ ようこそ! 仲間 の 愛好者 と 一緒 に Raspberry Pi、 Arduino、 ESP32 を さらに 深く 探求 しましょう。

なぜ 参加 する の です か?

  • 専門的 な サポート : コミュニティ と チーム の 支援 に より、 購入 後 の 問題 や 技術的 な 課題 を 解決 できます。

  • 学習 と 共有 : ヒント や チュートリアル を 共有 し、 スキル を 向上 させましょう。

  • 限定 プレビュー : 新製品 の 発表 や 先行 情報 に いち早く アクセス できます。

  • 特別 割引 : 最新 製品 を 対象 に した 限定 割引 を 利用 できます。

  • イベント プロモーション と プレゼント : プレゼント 企画 や 祝日 キャンペーン に 参加 できます。

👉 私たち と 一緒 に 探索 と 創作 を 始める 準備 は できました か? [here] を クリック して、 今すぐ 参加 しましょう!

NeoPixel LED ストリップ

はじめに

この プロジェクト では、 Raspberry Pi 上 で SPI 通信 を 使用 して アドレス 可能 な RGB LED ストリップ( NeoPixel )を 制御 する 方法 を 学びます。 NeoPixel は 内部 に ドライバ を 持つ インテリジェント な RGB LED で、 チェーン 内 の 各 LED を 個別 に 制御 できます。 本 プロジェクト では、 基本 的 な 色 制御 と、 ストリップ 全体 を 異なる 色 で 点灯 させる 方法 を 実演 します。


配線 図

../_images/1.9_ws2812_bb.png

セットアップ

  1. コード を 実行 する 前 に、 必要 な ライブラリ を インストール する 必要 が あります:

    この ライブラリ は、 SPI 通信 を 使用 して NeoPixel LED を 制御 する ため の 必要 な 機能 を 提供 します。

    sudo pip install git+https://github.com/sunfounder/sunfounder-imu-python.git --break-system-packages
    

コード

以下 の Python コード は、 NeoPixel LED ストリップ を 制御 し、 さまざま な 色 を 順番 に 切り替え ます:

import time               # Used for delays
import board              # Provides board-specific pin definitions
import neopixel_spi as neopixel   # NeoPixel SPI driver

# Create an SPI object using the default SPI bus of the board
spi = board.SPI()

LED_COUNT = 12  # Number of LED pixels in the strip
PIXEL_ORDER = neopixel.GRB  # Color order used by the LEDs (Green, Red, Blue)

# Create a NeoPixel strip object over SPI
# auto_write=False means we must call strip.show() to update the LEDs
strip = neopixel.NeoPixel_SPI(spi, LED_COUNT, pixel_order=PIXEL_ORDER, auto_write=False)

time.sleep(0.01)   # Short delay to ensure the strip is ready

strip.fill(0)      # Turn all pixels off (color value 0 = off)
strip.show()       # Send the data to the LED strip

try:
   while True:
      print("RGB test")

      # Display red on all LEDs
      print("Red")
      strip.fill((255, 0, 0))  # Full red, no green, no blue
      strip.show()
      time.sleep(1)

      # Display green on all LEDs
      print("Green")
      strip.fill((0, 255, 0))  # Full green
      strip.show()
      time.sleep(1)

      # Display blue on all LEDs
      print("Blue")
      strip.fill((0, 0, 255))  # Full blue
      strip.show()
      time.sleep(1)

      # Turn all LEDs off
      # print("Off for 10 seconds")
      strip.fill((0, 0, 0))    # All channels 0 = off
      strip.show()
      time.sleep(1)

# Gracefully handle script termination (e.g., via KeyboardInterrupt)
except KeyboardInterrupt:
   pass

この Python スクリプト は、 NeoPixel SPI ドライバ を 使用 して 12 個 の LED を 持つ WS2812 リング の 基本 的 な 制御 を 実演 します。 実行 すると:

  1. スクリプト は SPI インターフェース を 初期化 し、 WS2812 LED リング を 準備 します。

  2. すべて の LED は、 1 秒 間隔 で 赤、 緑、 青 に 順番 に 切り替わり ます。

  3. 各 色 の 切り替え は、 デバッグ 用 に コンソール に 表示 されます。

  4. 各 サイクル の 間 に、 LED は 一時 的 に 消灯 します。

  5. この プログラム は、 Ctrl+C で 中断 される まで 連続 して 実行 されます。

トラブルシューティング

  • LED リング が 正しく 点灯 しない

    • 原因: 配線 ミス、 または 電源 不足

    • 解決策: VCC が 5V で ある こと、 GND が 共通 で ある こと、 および データ 線 が DIN( 場合 に よって は RGB と 表記 )に 接続 されて いる こと を 確認 してください。

  • 色 が 正しく 表示 されない

    • 原因: LED の 色 順序 の 不一致

    • 解決策: neopixel.RGBneopixel.GRBW など、 異なる ピクセル 順序 を 試して ください。

  • SPI が 動作 しない

    • 原因: SPI が 無効、 または ハードウェア の 競合

    • 解決策: sudo raspi-config を 使用 して SPI を 有効 化 してください。

  • ライブラリ の インポート に 失敗 する

    • 原因: 依存 関係 の 不足

    • 解決策:

    sudo pip3 install adafruit-circuitpython-neopixel-spi --break