Bemerkung

Hallo, willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Community auf Facebook! Tauche gemeinsam mit anderen Enthusiasten tiefer in Raspberry Pi, Arduino und ESP32 ein.

Warum beitreten?

  • Experten-Support: Löse After-Sales-Probleme und technische Herausforderungen mit Hilfe unserer Community und unseres Teams.

  • Lernen & Teilen: Tausche Tipps und Tutorials aus, um deine Fähigkeiten zu verbessern.

  • Exklusive Vorschauen: Erhalte frühzeitig Zugang zu neuen Produktankündigungen und Sneak Peeks.

  • Spezielle Rabatte: Genieße exklusive Rabatte auf unsere neuesten Produkte.

  • Festliche Aktionen und Gewinnspiele: Nimm an Gewinnspielen und Feiertagsaktionen teil.

👉 Bereit, mit uns zu entdecken und zu erschaffen? Klicke [here] und tritt noch heute bei!

NeoPixel LED-Streifen

Einführung

In diesem Projekt lernen wir, wie man einen adressierbaren RGB-LED-Streifen (NeoPixel) über die SPI-Kommunikation auf einem Raspberry Pi steuert. NeoPixels sind intelligente RGB-LEDs mit eigenen Treibern, die eine individuelle Steuerung jeder LED in einer Kette ermöglichen. Dieses Projekt демонстрiert die grundlegende Farbsteuerung und das Füllen des gesamten Streifens mit verschiedenen Farben.


Verdrahtungsdiagramm

../_images/1.9_ws2812_bb.png

Einrichtung

  1. Bevor du den Code ausführst, musst du die erforderliche Bibliothek installieren:

    Diese Bibliothek stellt die erforderlichen Funktionen bereit, um NeoPixel-LEDs über die SPI-Kommunikation zu steuern.

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

Code

Der folgende Python-Code steuert einen NeoPixel-LED-Streifen und wechselt zyklisch zwischen verschiedenen Farben:

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

Dieses Python-Skript demonstriert die grundlegende Steuerung eines 12-LED-WS2812-Rings mit dem NeoPixel-SPI-Treiber. Bei der Ausführung:

  1. initialisiert das Skript die SPI-Schnittstelle und bereitet den WS2812-LED-Ring vor.

  2. Alle LEDs wechseln im Abstand von einer Sekunde zwischen Rot, Grün und Blau.

  3. Jeder Farbwechsel wird zur Fehlersuche in der Konsole ausgegeben.

  4. Die LEDs schalten sich zwischen den Zyklen kurz aus.

  5. Das Programm läuft kontinuierlich, bis es mit Ctrl+C unterbrochen wird.

Fehlerbehebung

  • LED-Ring leuchtet nicht korrekt

    • Ursache: Falsche Verdrahtung oder unzureichende Stromversorgung

    • Lösung: Stelle sicher, dass VCC 5 V beträgt, GND gemeinsam ist und die Datenleitung mit DIN (manchmal als RGB bezeichnet) verbunden ist

  • Falsche Farben

    • Ursache: Nicht übereinstimmende LED-Farbfolge

    • Lösung: Probiere verschiedene Pixel-Reihenfolgen wie neopixel.RGB oder neopixel.GRBW

  • SPI funktioniert nicht

    • Ursache: SPI deaktiviert oder Hardwarekonflikt

    • Lösung: Aktiviere SPI über sudo raspi-config

  • Bibliotheksimport fehlgeschlagen

    • Ursache: Fehlende Abhängigkeit

    • Lösung:

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