RGB Beleuchtung einfach steuern: NeoPixel Ring mit Arduino
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.
https://youtu.be/CX-Rkm5ZVK0
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.
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
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
//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
//Bounce2 Bibliothek zum entprellen des Tasters
#include
//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
//Bounce2 Bibliothek zum entprellen des Tasters
#include
//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);
//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.
Read the full article
0 notes
Concept definitief
We hebben het concept nog net wat aangepast voor het definitieve product.
Een slim object wat ouderen stimuleerd meer te bewegen en sociaal contact te onderhouden. Bewegen is goed om het aftakelende lichaam nog fris en jong te houden, maar maakt ook een stofje aan waardoor je vrolijker wordt en dus de depressies tegen kunnen gaan. Het apparaat bestaat uit één knop met een Neopixelring eromheen.
Ouderen kunnen deze knop indrukken om zo te laten weten dat zij een ommetje gaan maken. Vanaf dat moment licht de Walkly blauw op en wordt de beweging opgeslagen. Dit is te zien in een app. Familieleden en/of verzorgers kunnen zie wanneer en waar de ouderen gelopen hebben.
Tijdens de wandeling kan het voorkomen dat er een andere gebruiker dicht in de buurt ook een rondje aan het lopen is. Op dit moment wordt de Walkly oranje. De gebruiker kan nu kiezen of hij/zij de andere gebruiker wilt zoeken of niet. Is deze persoon nóg dichter in de buurt kleurt de Walkly groen en kunnen zij ervoor kiezen om samen verder te lopen o.i.d.
Steeds als de knop ingedrukt is om te gaan wandelen wordt de beweging van de oudere opgeslagen.
Ook wordt er bij elke wandeling met een ander persoon “punten” gespaard. Hiermee kunnen ouderen als ze (lang) genoeg gewandeld hebben sparen voor versnaperingen bij een café in de buurt om hier nog even samen te kletsen.
0 notes