Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Gartenautomation
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Deutsch
  • English
Menu

RGB Beleuchtung einfach steuern: NeoPixel Ring mit Arduino

Posted on 19. Juli 202418. Juli 2024 by Stefan Draeger

In diesem Beitrag möchte ich dir ein kleines Projekt mit einem 12bit NeoPixel Ring und einem Arduino Nano V3 präsentieren. Die Idee zu diesem Projekt kommt von einem Leser meines Blogs, bei welchem ich mich zunächst bedanken möchte.

RGB Beleuchtung einfach steuern: NeoPixel Ring mit Arduino
Dieses Video auf YouTube ansehen.

Hast du selber Ideen und benötigst Hilfe? Dann melde dich doch einfach per E-Mail an mich und wir können gemeinsam darauf schauen.

Inhaltsverzeichnis

  • Ziel des Projektes
  • Benötigte Ressourcen für dieses Projekt
  • Vorbereiten des Mikrocontrollers
  • Aufbau der Schaltung zum steuern eines NeoPixel Ring am Arduino
  • Einrichten der Arduino IDE
  • Schritt-für-Schritt-Anleitung zum Programmieren des Projektes
    • Schritt 1: Anzeigen von Farben auf dem 12bit NeoPixel Ring
    • Schritt 2: Auswerten eines Tasters am Arduino Nano V3
    • Schritt 3: Anzeigen von Farben bei Tastendruck
  • Fazit zum Projekt – Arduino, NeoPixel Ring mit Taster steuern

Ziel des Projektes

Das Ziel ist es, eine kleine Schaltung am Arduino Nano V3 mit einem 12bit NeoPixel Ring und einem Taster aufzubauen. Mit dem Taster sollen dann verschiedene Farben auf dem Ring angezeigt werden.

Benötigte Ressourcen für dieses Projekt

Für den Aufbau der Schaltung benötigst du:

  • einen Arduino Nano V3*
  • ein USB-Datenkabel*
  • ein 12bit NeoPixel Ring*
  • ein Printtaster*, 12 x 12 mm
  • ein paar Breadboardkabel*, 10 cm, männlich-männlich
  • ein 400 Pin Breadboard*

Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!

Vorbereiten des Mikrocontrollers

Wenn du wie ich die Mikrocontroller öfters und für verschiedene Projekte verwendest, dann empfehle ich dir vor dem Aufbau der Schaltung ein leeres Sketch / Programm auf diesen zu laden. Damit stellst du sicher, dass alle Pins den korrekten Status haben und du nicht versehentlich deinen Mikrocontroller oder ein angeschlossenes Bauteil zerstörst!

void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}

Aufbau der Schaltung zum steuern eines NeoPixel Ring am Arduino

Bevor wir mit der Programmierung starten, bauen wir die Schaltung auf.

Schaltung - Arduino Nano V3 mit 12bit NeoPixel Ring und Taster
Schaltung – Arduino Nano V3 mit 12bit NeoPixel Ring und Taster

Einrichten der Arduino IDE

Für die Programmierung verwende ich die Arduino IDE, das gute ist, dass du hier lediglich die benötigten Bibliotheken einbinden musst. Zum einen ist es die Adafruit NeoPixel für den NeoPixel Ring und für den Taster verwende ich Bounce2.

Schritt-für-Schritt-Anleitung zum Programmieren des Projektes

Nachdem die Bibliotheken installiert wurden, kann jetzt mit der Programmierung begonnen werden. Dieses möchte ich dir Schritt-für-Schritt zeigen.

Projekt – Arduino Nano V3 mit 12bit NeoPixel Ring & TasterHerunterladen

Schritt 1: Anzeigen von Farben auf dem 12bit NeoPixel Ring

Im ersten Schritt zeigen wir eine Farbe auf dem NeoPixel Ring an.

//Adafruit Bibliothek zum ansteuern
//der NeoPixel
#include <Adafruit_NeoPixel.h>

//NeoPixel Ring am digitalen Pin D4 angeschlossen
#define neoPixelPin 4
//insgesamt 12 NeoPixel auf dem Ring
#define numPixels 12

//Objektinstanz erzeugen
Adafruit_NeoPixel pixels(numPixels, neoPixelPin, NEO_GRB + NEO_KHZ800);

void setup() {
  //Beginn der Kommunikation mit dem Ring
  pixels.begin();
  //eine Schleife von 0 bis 11 zum ansteuern der einzelnen NeoPixel
  for (int i = 0; i < 12; i++) {
    //setzen der Farbe Rot an jedem Pixel
    pixels.setPixelColor(i, pixels.Color(255, 0, 0));
    //anzeigen der Farbe
    pixels.show();
  }
}

void loop() {}

Der Code bewirkt, dass alle NeoPixel in der Farbe Rot angezeigt werden.

Schritt 2: Auswerten eines Tasters am Arduino Nano V3

Für das Auswerten des Tasters verwende ich zusätzlich die Bibliothek Bounce2. Diese wird benötigt um den Taster zu entprellen.

//Adafruit Bibliothek zum ansteuern
//der NeoPixel
#include <Adafruit_NeoPixel.h>

//Bounce2 Bibliothek zum entprellen des Tasters
#include <Bounce2.h>

//NeoPixel Ring am digitalen Pin D4 angeschlossen
#define neoPixelPin 4
//insgesamt 12 NeoPixel auf dem Ring
#define numPixels 12

//Taster am digitalen Pin D11 angeschlossen
#define buttonPin 11

//Objektinstanzen erzeugen
Adafruit_NeoPixel pixels(numPixels, neoPixelPin, NEO_GRB + NEO_KHZ800);
Bounce2::Button button = Bounce2::Button();

//Index für das hochzählen der Tastenbetätigungen
int index = 0;

void setup() {
  //Beginn der seriellen Kommunikation mit 9600 baud
  Serial.begin(9600);
  //Beginn der Kommunikation mit dem Ring
  pixels.begin();

  //Verbinden des Pins des Buttons mit dem
  //Objekt vom Typ Bounce2,
  //Der Taster wird über den
  //internen 10kOhm PullUp Widerstand verbunden!
  button.attach(buttonPin, INPUT_PULLUP);
  //Interval für das entprellen auf 5 Millisekunden
  button.interval(5);
  //Wenn der Taster betätigt wird, wird dieses als
  //LOW interpretiert.
  button.setPressedState(LOW);

  //eine Schleife von 0 bis 11 zum ansteuern der einzelnen NeoPixel
  for (int i = 0; i < 12; i++) {
    //setzen der Farbe Rot an jedem Pixel
    pixels.setPixelColor(i, pixels.Color(255, 0, 0));
    //anzeigen der Farbe
    pixels.show();
  }
}

void loop() {
  //aktualisieren des Status des Buttons
  button.update();
  //Wenn der Taster betätigt wurde, dann...
  if (button.pressed()) {
    //Variable index um 1 erhöhen
    index = index + 1;
    //Ausgeben des Inhalts der Variable auf
    //der seriellen Schnittstelle
    Serial.println(index);
  }
}
}

Wenn man jetzt auf den Taster drückt, dann wird über die serielle Schnittstelle der Inhalt der Variable index ausgegeben.

Schritt 3: Anzeigen von Farben bei Tastendruck

Im letzten Schritt wollen wir jetzt die verschiedenen Farben auf dem NeoPixel Ring anzeigen lassen.

Dazu benötigen wir die RGB Codes der Farben, diese können wir über die Seite https://www.rapidtables.com/web/color/RGB_Color.html sehr einfach ermitteln. Jedoch lassen sich nicht alle Farben so gut anzeigen, hier muss man etwas experimentieren.

//Adafruit Bibliothek zum ansteuern
//der NeoPixel
#include <Adafruit_NeoPixel.h>

//Bounce2 Bibliothek zum entprellen des Tasters
#include <Bounce2.h>

//NeoPixel Ring am digitalen Pin D4 angeschlossen
#define neoPixelPin 4
//insgesamt 12 NeoPixel auf dem Ring
#define numPixels 12

//Taster am digitalen Pin D11 angeschlossen
#define buttonPin 11

//Objektinstanzen erzeugen
Adafruit_NeoPixel pixels(numPixels, neoPixelPin, NEO_GRB + NEO_KHZ800);
Bounce2::Button button = Bounce2::Button();

//Index für das hochzählen der Tastenbetätigungen
int index = 0;

//maximale Anzahl der Farben
const int MAX_COLORS = 12;

//ein Array mit den Farbwerten für den Ring
uint32_t colors[] = {
  pixels.Color(255, 255, 255),  //weiss
  pixels.Color(255, 0, 0),      //rot
  pixels.Color(0, 255, 0),      //gruen
  pixels.Color(0, 0, 255),      //blau
  pixels.Color(255, 255, 0),    //gelb
  pixels.Color(255, 0, 255),    //pink
  pixels.Color(255, 102, 102),  //hellrot
  pixels.Color(255, 153, 51),   //orange
  pixels.Color(0, 255, 255),    //tuerkis
  pixels.Color(0, 0, 153),      //dunkel Blau
  pixels.Color(102, 0, 204),    //dunkel lila
  pixels.Color(153, 255, 51),   //hell gruen
};

void setup() {
  //Beginn der seriellen Kommunikation mit 9600 baud
  Serial.begin(9600);
  //Beginn der Kommunikation mit dem Ring
  pixels.begin();

  //Verbinden des Pins des Buttons mit dem
  //Objekt vom Typ Bounce2,
  //Der Taster wird über den
  //internen 10kOhm PullUp Widerstand verbunden!
  button.attach(buttonPin, INPUT_PULLUP);
  //Interval für das entprellen auf 5 Millisekunden
  button.interval(5);
  //Wenn der Taster betätigt wird, wird dieses als
  //LOW interpretiert.
  button.setPressedState(LOW);

  updateNeoPixel();
}

//Funktion zum anzeigen einer Farbe am NeoPixel Ring
void updateNeoPixel() {
  //löschen aller gesetzen Farben
  pixels.clear();
  
  //eine Schleife von 0 bis 11 zum ansteuern der einzelnen NeoPixel
  for (int i = 0; i < numPixels; i++) {
    //setzen der Farbe aus dem Array mit dem Index
    pixels.setPixelColor(i, colors[index]);
    //anzeigen der Farbe
    pixels.show();
  }
}

void loop() {
  //aktualisieren des Status des Buttons
  button.update();
  //Wenn der Taster betätigt wurde, dann...
  if (button.pressed()) {
    //Wenn die maximale Anzahl der Farben erreicht wurde, dann...
    if (index == (MAX_COLORS-1)){
      //Index auf 0 setzen
      index = 0;
    } else { //andernfalls...
      //Variable index um 1 erhöhen
      index = index + 1;
      //Ausgeben des Inhalts der Variable auf
      //der seriellen Schnittstelle
      Serial.println(index);
    }
    //Aufrufen der Funktion zum anzeigen der Farben auf dem Ring
    updateNeoPixel();
  }
}

Fazit zum Projekt – Arduino, NeoPixel Ring mit Taster steuern

Das kleine Projekt ist recht schnell umgesetzt und durch die sehr einfache Adafruit Bibliothek ebenso einfach zu programmieren.

Im nächsten Schritt könnte man nun eine kleine Platine entwickeln, um diese Schaltung fest zu verbauen.

1 thought on “RGB Beleuchtung einfach steuern: NeoPixel Ring mit Arduino”

  1. Pingback: ESP32-S3-Matrix von Waveshare: Kompaktes Board mit 8x8 RGB-LED-Matrix im Test - Technik Blog

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen

Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}