Menu
CoddyTech

NeoPixel-Helligkeit

Teil des Abschnitts Displays und Sensoren der Arduino-Journey von Coddy. Lektion 16 von 24.

NeoPixels sind hell. ring.setBrightness(level) dimmt sie alle gleichzeitig: 0 bedeutet aus, 255 volle Helligkeit.

Das funktioniert, indem die im Speicher des Boards gespeicherten Farben skaliert werden. Bei Helligkeit 64, also etwa einem Viertel, wird ein Rotwert von 255 als 64 gespeichert. Der Haken: Durch die Skalierung gehen Details verloren. Drehst du die Helligkeit auf 0 herunter, wird jede gespeicherte Farbe zu 0. Wenn du sie dann wieder erhöhst, gibt es nichts mehr zu skalieren, und der Ring bleibt dunkel.

Setze die Farben daher immer erneut, nachdem sich die Helligkeit geändert hat:

ring.setBrightness(level);
ring.fill(white);   // mit der neuen Helligkeit gespeichert
ring.show();

Farben, die nach setBrightness() gesetzt werden, werden beim Speichern skaliert.

challenge icon

Aufgabe

Mittel

Der Drehknopf an A0 dient als Dimmer für den Ring:

  • Wandle den Messwert mit map() in eine Helligkeit von 0 bis 255 um
  • Setze sie mit ring.setBrightness()
  • Fülle dann den Ring bei jedem Durchlauf von loop() weiß und zeige ihn an

Drücke Run und drehe am Knopf, dann Check.

Probier es selbst

#include <Adafruit_NeoPixel.h>

// 16 Pixel, Daten an Pin 6
Adafruit_NeoPixel ring(16, 6, NEO_GRB + NEO_KHZ800);

uint32_t white = ring.Color(255, 255, 255);

void setup() {
  ring.begin();
}

void loop() {
  int reading = analogRead(A0);
  // stelle die Helligkeit mit dem Drehknopf ein und lass dann den gesamten Ring weiß leuchten
  delay(50);
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Displays und Sensoren

Übe selbstständig: Arduino-Playground