Neopixel - Mit drei Potis steuern


Bastelseite Display + Antriebe Sensoren C++


Neopixel

... und hier der Sketch mit drei Potis!

Drei Potis

Der "Strandtest" verlief einwandfrei zur vollsten Zufriedenheit. Mich lies es nicht locker die Farben selbst einstellen zu können.

Nach einigem Suchen wurde ich fündig: Ansteuern eines LED-Rings. Ein einfacher Sketch, der sich leicht umschreiben ließ.

Ein Band aus Neopixel


Start vom Strandtest

Im Sketch müssen am Anfang noch zwei Sachen geändert werden: PIN-Ausgang des Arduino und die Anzahl der LEDs.

An A0, A1 und A2 habe ich jeweils den mittleren Anschluß der Potis gesetzt. Die anderen Anschlüsse habe ich je auf Plus und Minus gesetzt. So kann ich nun über den Poti von 0 bis 5 Volt regeln und mit dem Arduino abnehmen und messen. Dies passiert mit analogRead(PinX) für jede Farbe separat.

Mittels der map-Funktion map(analogRead(PinR), 0, 1023, 0, 255); wird der eingelesene Wert von 0 bis 1023 umgerechnet auf 0 bis 255. Der maximale einstellbare Wert am Poti ist 1023. Umgerechnet kommt dann am WertX der Betrag von nur 255 raus. Dies alles wird an WertX übergeben durch WertX =

Aufschlüsselung von: WertR = map(analogRead(PinR), 0, 1023, 0, 255);

WertR =   Übergabe an WertR von
map   Umrechnen
(analogRead(PinR)   Einlesen von Pin R (A0)
0,1023,   Einlesewert
0,255)   Ausgabewert

Hier der Sketch mit 3 Potis:



// Neopixel - Farben mit 3 Potis steuern

#include   Adafruit_NeoPixel.h>
#ifdef   __AVR__
#include  
#endif

#define
   PIN 8
#define   NUMPIXELS 16
Adafruit_NeoPixel pixels = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

int  i, z;

int  PinR = 0;
int  PinG = 1;
int  PinB = 2;
int  WertR, WertG, WertB = 0;

void  setup() {
pixels.begin(); // Initialisierung der NeoPixel Bibliothek
Serial.begin(9600);
}

void  loop() {

WertR = map(analogRead(PinR), 0, 1023, 0, 255);
WertG = map(analogRead(PinG), 0, 1023, 0, 255);
WertB = map(analogRead(PinB), 0, 1023, 0, 255);

Serial.print("R: " );
Serial.print(WertR);
Serial.print(" " );
Serial.print("G: " );
Serial.print(WertG);
Serial.print(" " );
Serial.print("B: " );
Serial.print(WertB);
Serial.println(" " );

for  (int  i = 0; i < NUMPIXELS; i++) {

// pixels.Color übernimmt die RGB-Werte, von 0,0,0 bis zu 255,255,255
pixels.setPixelColor(i, pixels.Color(WertR, WertG, WertB, 50)); // Helligkeit: 50 von 255
pixels.show(); // Dies sendet den Werteschlüssel an die Neopixel

delay(10); // Wartezeit (in milliseconds).
  }
}


Ausgabe über Serieller Monitor

Anfangs habe ich natürlich drehen können - alles hat sich farblich geändert! Aber die eigentliche Auslesung der einzelnen Werte war noch nicht da!

Also nahm ich den Ausgang Serieller Monitor, der am Bildschirm angezeigt wird. In den Sketch eingebunden zeigte er mir gleich die eingestellten Werte in R, G und B mit den jeweils dazu gehörigen Zahlen an! Und das noch fortlaufend!


Mini-Maker-Faire 2018

Alles auf eine Holzplatte aufgebaut, drei Potis auf einem Aluwinkel montiert, war es nun soweit fertig. In dieser Ausführung nahm ich die Schaltung mit auf die Mini-Maker-Faire in Sindelfingen. Erst traute man sich nicht hinzulangen und drehen, aber die Scheu verflog sehr schnell und die 16 Neopixel mit ihrem Farbenspiel brachten alle Kinderaugen zum Leuchten. Auch viele Erwachsene ertappten sich dabei, wie sie fasziniert an den drei Potiknöpfen drehten und die Neopixel beim bunten Treiben beobachteten.


Übersicht Anfang


brixelweb.de