WS2812 RGB LED und Helligkeit

Hallo,

ich stolper gerade über den Parameter „Helligkeit“ der WS2812 RGB LED und der Blockly Programmierung.

Dieser wird einmalig in der Setup()-Loop gesetzt, und zwar auf den niedrigsten aller in der Endlosschleife() vorkommenden Werte. Damit kann man die Helligkeit im späteren Ablauf nicht mehr verändern, ist das gewollt so? Dann wäre der Block mit dem Parameter irreführend.
Siehe auch angehängten Screenshot.

Hi @swenp,

ja das ist so gewollt bzw. hat folgenden Hintergrund
Ein kleiner Auszug aus der Beschreibung der verwendeten Software Library

The overall brightness of all the LEDs can be adjusted using setBrightness(). This takes a single argument, a number in the range 0 (off) to 255 (max brightness). For example, to set a strip to 1/4 brightness:

  1. strip.setBrightness(64);

Just like setPixel(), this does not have an immediate effect. You need to follow this with a call to show().

setBrightness() was intended to be called once, in setup(), to limit the current/brightness of the LEDs throughout the life of the sketch. It is not intended as an animation effect itself! The operation of this function is “lossy” — it modifies the current pixel data in RAM, not in the show() call — in order to meet NeoPixels’ strict timing requirements. Certain animation effects are better served by leaving the brightness setting at the default maximum, modulating pixel brightness in your own sketch logic and redrawing the full strip with setPixel().

Die alternative wäre einen Block zu erstellen der ins Setup() kommt und dort werden alle Parameter für die RGB-Led(s) festgelegt.

Beste Grüße

Mario

Hi @mario,

die Erklärung leuchtet mir ein, aber für die beabsichtigte Zielgruppe dürfte es schwer zu verstehen sein, wieso ein Parameter, der in der Main()-Loop gesetzt werden kann, keine Auswirkung zeigt.

Bricht imho auch mit dem Konzept, das beim OLED Display angewendet wird. Da wird ja auch einmal in Setup() eine Initialisierung aufgerufen, und alles andere in Main() hat dann auch einen Effekt.

Grüße,
Swen

Ja die Idee es nicht in mehrere Blöcke zu unterteilen war es, das Arbeiten mit der RGB LED möglichst einfach zu gestalten. Aber du hast recht, das es etwas mit dem generellen Konzept bricht.

Ich überlege mir mal was und baue es evtl. um, sodass man im Setup die RGB-LEDs initialisiert und Parameter wie die Helligkeit, die Anzahl der Pixel einer Kette und den Anschluss dort übergibt.
Ein zweiter Block wird dann sehr ähnlich zu dem Aussehen wie es bisher gelöst ist.

Beste Grüße

Mario

1 Like

Hi @swenp,

ich habe gerade das ganze umgebaut und ein Preview Deployed: https://deploy-preview-188--sensebox-blockly.netlify.app/ardublockly/?board=sensebox-mcu

Ich denke so könnte es funktionieren oder was meinst du? :slight_smile:

Beste Grüße

Mario

1 Like

Find ich super, danke!