LED Amtrix Flackert

Hallo zusammen,

ich habe eine LED Matrix und möchte darauf die Zahlen 0-99 anzeigen lassen. Dazu verwende ich 2 potis (jeweils 0-9). Zur Einstellung der Helligkeit verwende ich ein weiteres poti.

Das ganze funktioniert auch sehr gut!

Nur leider flackert die Matrix dann fürchterlich.
Was mach ich da denn falsch?

Kann mir bitte jemand helfen?

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
#define PIN 11
int bright      = 0;
int pot1        = A0;



int pot6 = A6; //hier legen wir unseren Pin zur Messung fest
int p = 0; //wir setzen den Wert vor der Messung auf 0

int pot7 = A8; //hier legen wir unseren Pin zur Messung fest
int p2 = 0;

Adafruit_NeoPixel strip = Adafruit_NeoPixel(256, PIN, NEO_GRB + NEO_KHZ800);
void setup() {

  strip.begin();

  strip.show();
}

void loop() {

  bright    = analogRead(pot1); // wir legen fest, dass die Variable pot1_wert für uns den Wert des Potis speichert
  bright    = map(bright, 0, 1023, 0, 250);


  p = analogRead(pot6);
  p = map(p, 0, 1023, 0, 10);


  p2 = analogRead(pot7);
  p2 = map(p2, 0, 1023, 0, 10);

  Serial.print("P8 = ");
  Serial.println(p);
  strip.clear();
  strip.setPixelColor(81, (strip.Color(255, 255, 255))); strip.setPixelColor(82, (strip.Color(255, 255, 255))); strip.setPixelColor(83, (strip.Color(255, 255, 255))); strip.setPixelColor(84, (strip.Color(255, 255, 255))); strip.setPixelColor(107, (strip.Color(255, 255, 255))); strip.setPixelColor(110, (strip.Color(255, 255, 255))); strip.setPixelColor(113, (strip.Color(255, 255, 255))); strip.setPixelColor(114, (strip.Color(255, 255, 255))); strip.setPixelColor(115, (strip.Color(255, 255, 255))); strip.setPixelColor(116, (strip.Color(255, 255, 255))); strip.setPixelColor(142, (strip.Color(255, 255, 255))); strip.setPixelColor(145, (strip.Color(255, 255, 255)));
  strip.setBrightness(bright);
  strip.show();


  if (p == 0 )
  {
    strip.setPixelColor(86, (strip.Color(255, 255, 255))); strip.setPixelColor(87, (strip.Color(255, 255, 255))); strip.setPixelColor(88, (strip.Color(255, 255, 255))); strip.setPixelColor(89, (strip.Color(255, 255, 255))); strip.setPixelColor(102, (strip.Color(255, 255, 255))); strip.setPixelColor(105, (strip.Color(255, 255, 255))); strip.setPixelColor(118, (strip.Color(255, 255, 255))); strip.setPixelColor(121, (strip.Color(255, 255, 255))); strip.setPixelColor(137, (strip.Color(255, 255, 255))); strip.setPixelColor(134, (strip.Color(255, 255, 255))); strip.setPixelColor(150, (strip.Color(255, 255, 255))); strip.setPixelColor(151, (strip.Color(255, 255, 255))); strip.setPixelColor(152, (strip.Color(255, 255, 255))); strip.setPixelColor(153, (strip.Color(255, 255, 255)));
    strip.setBrightness(bright);
    strip.show();
  }


  if (p == 1 )
  {

    strip.setPixelColor(88, (strip.Color(255, 255, 255))); strip.setPixelColor(103, (strip.Color(255, 255, 255))); strip.setPixelColor(120, (strip.Color(255, 255, 255))); strip.setPixelColor(135, (strip.Color(255, 255, 255))); strip.setPixelColor(152, (strip.Color(255, 255, 255)));  strip.setBrightness(bright);
    strip.show();
  }


  if (p == 2 )
  {
    strip.setPixelColor(86, (strip.Color(255, 255, 255))); strip.setPixelColor(87, (strip.Color(255, 255, 255))); strip.setPixelColor(88, (strip.Color(255, 255, 255))); strip.setPixelColor(89, (strip.Color(255, 255, 255))); strip.setPixelColor(102, (strip.Color(255, 255, 255))); strip.setPixelColor(118, (strip.Color(255, 255, 255))); strip.setPixelColor(119, (strip.Color(255, 255, 255))); strip.setPixelColor(120, (strip.Color(255, 255, 255))); strip.setPixelColor(121, (strip.Color(255, 255, 255))); strip.setPixelColor(137, (strip.Color(255, 255, 255))); strip.setPixelColor(150, (strip.Color(255, 255, 255))); strip.setPixelColor(151, (strip.Color(255, 255, 255))); strip.setPixelColor(152, (strip.Color(255, 255, 255))); strip.setPixelColor(153, (strip.Color(255, 255, 255)));
    strip.setBrightness(bright);
    strip.show();
  }


  if (p == 3 )
  {
    strip.setPixelColor(86, (strip.Color(255, 255, 255))); strip.setPixelColor(87, (strip.Color(255, 255, 255))); strip.setPixelColor(88, (strip.Color(255, 255, 255))); strip.setPixelColor(89, (strip.Color(255, 255, 255))); strip.setPixelColor(102, (strip.Color(255, 255, 255))); strip.setPixelColor(118, (strip.Color(255, 255, 255))); strip.setPixelColor(119, (strip.Color(255, 255, 255))); strip.setPixelColor(120, (strip.Color(255, 255, 255))); strip.setPixelColor(121, (strip.Color(255, 255, 255))); strip.setPixelColor(134, (strip.Color(255, 255, 255))); strip.setPixelColor(150, (strip.Color(255, 255, 255))); strip.setPixelColor(151, (strip.Color(255, 255, 255))); strip.setPixelColor(152, (strip.Color(255, 255, 255))); strip.setPixelColor(153, (strip.Color(255, 255, 255)));
    strip.setBrightness(bright);
    strip.show();
  }


  if (p == 4 )
  {
    strip.setPixelColor(86, (strip.Color(255, 255, 255))); strip.setPixelColor(89, (strip.Color(255, 255, 255))); strip.setPixelColor(102, (strip.Color(255, 255, 255))); strip.setPixelColor(105, (strip.Color(255, 255, 255))); strip.setPixelColor(118, (strip.Color(255, 255, 255))); strip.setPixelColor(119, (strip.Color(255, 255, 255))); strip.setPixelColor(120, (strip.Color(255, 255, 255))); strip.setPixelColor(121, (strip.Color(255, 255, 255))); strip.setPixelColor(134, (strip.Color(255, 255, 255))); strip.setPixelColor(153, (strip.Color(255, 255, 255)));
    strip.setBrightness(bright);
    strip.show();
  }


  if (p == 5 )
  {
    strip.setPixelColor(86, (strip.Color(255, 255, 255))); strip.setPixelColor(87, (strip.Color(255, 255, 255))); strip.setPixelColor(88, (strip.Color(255, 255, 255))); strip.setPixelColor(89, (strip.Color(255, 255, 255))); strip.setPixelColor(105, (strip.Color(255, 255, 255))); strip.setPixelColor(118, (strip.Color(255, 255, 255))); strip.setPixelColor(119, (strip.Color(255, 255, 255))); strip.setPixelColor(120, (strip.Color(255, 255, 255))); strip.setPixelColor(121, (strip.Color(255, 255, 255))); strip.setPixelColor(134, (strip.Color(255, 255, 255))); strip.setPixelColor(150, (strip.Color(255, 255, 255))); strip.setPixelColor(151, (strip.Color(255, 255, 255))); strip.setPixelColor(152, (strip.Color(255, 255, 255))); strip.setPixelColor(153, (strip.Color(255, 255, 255)));
    strip.setBrightness(bright);
    strip.show();
  }


  if (p == 6 )
  { strip.setPixelColor(86, (strip.Color(255, 255, 255))); strip.setPixelColor(87, (strip.Color(255, 255, 255))); strip.setPixelColor(88, (strip.Color(255, 255, 255))); strip.setPixelColor(89, (strip.Color(255, 255, 255))); strip.setPixelColor(105, (strip.Color(255, 255, 255))); strip.setPixelColor(118, (strip.Color(255, 255, 255))); strip.setPixelColor(119, (strip.Color(255, 255, 255))); strip.setPixelColor(120, (strip.Color(255, 255, 255))); strip.setPixelColor(121, (strip.Color(255, 255, 255))); strip.setPixelColor(137, (strip.Color(255, 255, 255))); strip.setPixelColor(134, (strip.Color(255, 255, 255))); strip.setPixelColor(150, (strip.Color(255, 255, 255))); strip.setPixelColor(151, (strip.Color(255, 255, 255))); strip.setPixelColor(152, (strip.Color(255, 255, 255))); strip.setPixelColor(153, (strip.Color(255, 255, 255)));
    strip.setBrightness(bright);
    strip.show();
  }

  if (p == 7 )
  {
    strip.setPixelColor(86, (strip.Color(255, 255, 255))); strip.setPixelColor(87, (strip.Color(255, 255, 255))); strip.setPixelColor(88, (strip.Color(255, 255, 255))); strip.setPixelColor(89, (strip.Color(255, 255, 255))); strip.setPixelColor(102, (strip.Color(255, 255, 255))); strip.setPixelColor(121, (strip.Color(255, 255, 255))); strip.setPixelColor(134, (strip.Color(255, 255, 255))); strip.setPixelColor(153, (strip.Color(255, 255, 255)));
    strip.setBrightness(bright);
    strip.show();
  }

  if (p == 8 )
  { strip.setPixelColor(86, (strip.Color(255, 255, 255))); strip.setPixelColor(87, (strip.Color(255, 255, 255))); strip.setPixelColor(88, (strip.Color(255, 255, 255))); strip.setPixelColor(89, (strip.Color(255, 255, 255))); strip.setPixelColor(102, (strip.Color(255, 255, 255))); strip.setPixelColor(105, (strip.Color(255, 255, 255))); strip.setPixelColor(118, (strip.Color(255, 255, 255))); strip.setPixelColor(119, (strip.Color(255, 255, 255))); strip.setPixelColor(120, (strip.Color(255, 255, 255))); strip.setPixelColor(121, (strip.Color(255, 255, 255))); strip.setPixelColor(137, (strip.Color(255, 255, 255))); strip.setPixelColor(134, (strip.Color(255, 255, 255))); strip.setPixelColor(150, (strip.Color(255, 255, 255))); strip.setPixelColor(151, (strip.Color(255, 255, 255))); strip.setPixelColor(152, (strip.Color(255, 255, 255))); strip.setPixelColor(153, (strip.Color(255, 255, 255)));
    strip.setBrightness(bright);
    strip.show();
  }


  if (p == 9 )
  {
    strip.setPixelColor(86, (strip.Color(255, 255, 255))); strip.setPixelColor(87, (strip.Color(255, 255, 255))); strip.setPixelColor(88, (strip.Color(255, 255, 255))); strip.setPixelColor(89, (strip.Color(255, 255, 255))); strip.setPixelColor(102, (strip.Color(255, 255, 255))); strip.setPixelColor(105, (strip.Color(255, 255, 255))); strip.setPixelColor(118, (strip.Color(255, 255, 255))); strip.setPixelColor(119, (strip.Color(255, 255, 255))); strip.setPixelColor(120, (strip.Color(255, 255, 255))); strip.setPixelColor(121, (strip.Color(255, 255, 255))); strip.setPixelColor(134, (strip.Color(255, 255, 255))); strip.setPixelColor(150, (strip.Color(255, 255, 255))); strip.setPixelColor(151, (strip.Color(255, 255, 255))); strip.setPixelColor(152, (strip.Color(255, 255, 255))); strip.setPixelColor(153, (strip.Color(255, 255, 255)));
    strip.setBrightness(bright);
    strip.show();
  }


  if (p2 == 0 )
  {
    strip.setPixelColor(91, (strip.Color(255, 255, 255))); strip.setPixelColor(92, (strip.Color(255, 255, 255))); strip.setPixelColor(93, (strip.Color(255, 255, 255))); strip.setPixelColor(94, (strip.Color(255, 255, 255))); strip.setPixelColor(100, (strip.Color(255, 255, 255))); strip.setPixelColor(97, (strip.Color(255, 255, 255))); strip.setPixelColor(123, (strip.Color(255, 255, 255))); strip.setPixelColor(126, (strip.Color(255, 255, 255))); strip.setPixelColor(129, (strip.Color(255, 255, 255))); strip.setPixelColor(132, (strip.Color(255, 255, 255))); strip.setPixelColor(155, (strip.Color(255, 255, 255))); strip.setPixelColor(156, (strip.Color(255, 255, 255))); strip.setPixelColor(157, (strip.Color(255, 255, 255))); strip.setPixelColor(158, (strip.Color(255, 255, 255)));
    strip.setBrightness(bright);
    strip.show();
  }


  if (p2 == 1 )
  {
    strip.setPixelColor(92, (strip.Color(255, 255, 255))); strip.setPixelColor(99, (strip.Color(255, 255, 255))); strip.setPixelColor(124, (strip.Color(255, 255, 255))); strip.setPixelColor(131, (strip.Color(255, 255, 255))); strip.setPixelColor(156, (strip.Color(255, 255, 255)));
    strip.setBrightness(bright);
    strip.show();
  }


  if (p2 == 2)
  {
    strip.setPixelColor(91, (strip.Color(255, 255, 255))); strip.setPixelColor(92, (strip.Color(255, 255, 255))); strip.setPixelColor(93, (strip.Color(255, 255, 255))); strip.setPixelColor(94, (strip.Color(255, 255, 255))); strip.setPixelColor(97, (strip.Color(255, 255, 255))); strip.setPixelColor(123, (strip.Color(255, 255, 255))); strip.setPixelColor(124, (strip.Color(255, 255, 255))); strip.setPixelColor(125, (strip.Color(255, 255, 255))); strip.setPixelColor(126, (strip.Color(255, 255, 255))); strip.setPixelColor(132, (strip.Color(255, 255, 255))); strip.setPixelColor(155, (strip.Color(255, 255, 255))); strip.setPixelColor(156, (strip.Color(255, 255, 255))); strip.setPixelColor(157, (strip.Color(255, 255, 255))); strip.setPixelColor(158, (strip.Color(255, 255, 255)));
    strip.setBrightness(bright);
    strip.show();
  }


  if (p2 == 3 )
  {
    strip.setPixelColor(91, (strip.Color(255, 255, 255))); strip.setPixelColor(92, (strip.Color(255, 255, 255))); strip.setPixelColor(93, (strip.Color(255, 255, 255))); strip.setPixelColor(94, (strip.Color(255, 255, 255))); strip.setPixelColor(97, (strip.Color(255, 255, 255))); strip.setPixelColor(123, (strip.Color(255, 255, 255))); strip.setPixelColor(124, (strip.Color(255, 255, 255))); strip.setPixelColor(125, (strip.Color(255, 255, 255))); strip.setPixelColor(126, (strip.Color(255, 255, 255))); strip.setPixelColor(129, (strip.Color(255, 255, 255))); strip.setPixelColor(155, (strip.Color(255, 255, 255))); strip.setPixelColor(156, (strip.Color(255, 255, 255))); strip.setPixelColor(157, (strip.Color(255, 255, 255))); strip.setPixelColor(158, (strip.Color(255, 255, 255)));
    strip.setBrightness(bright);
    strip.show();
  }


  if (p2 == 4 )
  {
    strip.setPixelColor(91, (strip.Color(255, 255, 255))); strip.setPixelColor(94, (strip.Color(255, 255, 255))); strip.setPixelColor(97, (strip.Color(255, 255, 255))); strip.setPixelColor(100, (strip.Color(255, 255, 255))); strip.setPixelColor(123, (strip.Color(255, 255, 255))); strip.setPixelColor(124, (strip.Color(255, 255, 255))); strip.setPixelColor(125, (strip.Color(255, 255, 255))); strip.setPixelColor(126, (strip.Color(255, 255, 255))); strip.setPixelColor(129, (strip.Color(255, 255, 255))); strip.setPixelColor(158, (strip.Color(255, 255, 255)));
    strip.setBrightness(bright);
    strip.show();
  }


  if (p2 == 5 )
  {
    strip.setPixelColor(91, (strip.Color(255, 255, 255))); strip.setPixelColor(92, (strip.Color(255, 255, 255))); strip.setPixelColor(93, (strip.Color(255, 255, 255))); strip.setPixelColor(94, (strip.Color(255, 255, 255))); strip.setPixelColor(100, (strip.Color(255, 255, 255))); strip.setPixelColor(123, (strip.Color(255, 255, 255))); strip.setPixelColor(124, (strip.Color(255, 255, 255))); strip.setPixelColor(125, (strip.Color(255, 255, 255))); strip.setPixelColor(126, (strip.Color(255, 255, 255))); strip.setPixelColor(129, (strip.Color(255, 255, 255))); strip.setPixelColor(155, (strip.Color(255, 255, 255))); strip.setPixelColor(156, (strip.Color(255, 255, 255))); strip.setPixelColor(157, (strip.Color(255, 255, 255))); strip.setPixelColor(158, (strip.Color(255, 255, 255)));
    strip.setBrightness(bright);
    strip.show();
  }


  if (p2 == 6 )
  { strip.clear();
    strip.setPixelColor(91, (strip.Color(255, 255, 255))); strip.setPixelColor(92, (strip.Color(255, 255, 255))); strip.setPixelColor(93, (strip.Color(255, 255, 255))); strip.setPixelColor(94, (strip.Color(255, 255, 255))); strip.setPixelColor(100, (strip.Color(255, 255, 255))); strip.setPixelColor(123, (strip.Color(255, 255, 255))); strip.setPixelColor(124, (strip.Color(255, 255, 255))); strip.setPixelColor(125, (strip.Color(255, 255, 255))); strip.setPixelColor(126, (strip.Color(255, 255, 255))); strip.setPixelColor(129, (strip.Color(255, 255, 255))); strip.setPixelColor(132, (strip.Color(255, 255, 255))); strip.setPixelColor(155, (strip.Color(255, 255, 255))); strip.setPixelColor(156, (strip.Color(255, 255, 255))); strip.setPixelColor(157, (strip.Color(255, 255, 255))); strip.setPixelColor(158, (strip.Color(255, 255, 255)));
    strip.setBrightness(bright);
    strip.show();
  }


  if (p2 == 7 )
  {
    strip.setPixelColor(91, (strip.Color(255, 255, 255))); strip.setPixelColor(92, (strip.Color(255, 255, 255))); strip.setPixelColor(93, (strip.Color(255, 255, 255))); strip.setPixelColor(94, (strip.Color(255, 255, 255))); strip.setPixelColor(97, (strip.Color(255, 255, 255))); strip.setPixelColor(126, (strip.Color(255, 255, 255))); strip.setPixelColor(129, (strip.Color(255, 255, 255))); strip.setPixelColor(158, (strip.Color(255, 255, 255)));
    strip.setBrightness(bright);
    strip.show();
  }


  if (p2 == 8 )
  {
    strip.setPixelColor(91, (strip.Color(255, 255, 255))); strip.setPixelColor(92, (strip.Color(255, 255, 255))); strip.setPixelColor(93, (strip.Color(255, 255, 255))); strip.setPixelColor(94, (strip.Color(255, 255, 255))); strip.setPixelColor(100, (strip.Color(255, 255, 255))); strip.setPixelColor(97, (strip.Color(255, 255, 255))); strip.setPixelColor(123, (strip.Color(255, 255, 255))); strip.setPixelColor(124, (strip.Color(255, 255, 255))); strip.setPixelColor(125, (strip.Color(255, 255, 255))); strip.setPixelColor(126, (strip.Color(255, 255, 255))); strip.setPixelColor(129, (strip.Color(255, 255, 255))); strip.setPixelColor(132, (strip.Color(255, 255, 255))); strip.setPixelColor(155, (strip.Color(255, 255, 255))); strip.setPixelColor(156, (strip.Color(255, 255, 255))); strip.setPixelColor(157, (strip.Color(255, 255, 255))); strip.setPixelColor(158, (strip.Color(255, 255, 255)));
    strip.setBrightness(bright);
    strip.show();
  }


  if (p2 == 9 )
  {
    strip.setPixelColor(91, (strip.Color(255, 255, 255))); strip.setPixelColor(92, (strip.Color(255, 255, 255))); strip.setPixelColor(93, (strip.Color(255, 255, 255))); strip.setPixelColor(94, (strip.Color(255, 255, 255))); strip.setPixelColor(100, (strip.Color(255, 255, 255))); strip.setPixelColor(97, (strip.Color(255, 255, 255))); strip.setPixelColor(123, (strip.Color(255, 255, 255))); strip.setPixelColor(124, (strip.Color(255, 255, 255))); strip.setPixelColor(125, (strip.Color(255, 255, 255))); strip.setPixelColor(126, (strip.Color(255, 255, 255))); strip.setPixelColor(129, (strip.Color(255, 255, 255))); strip.setPixelColor(155, (strip.Color(255, 255, 255))); strip.setPixelColor(156, (strip.Color(255, 255, 255))); strip.setPixelColor(157, (strip.Color(255, 255, 255))); strip.setPixelColor(158, (strip.Color(255, 255, 255)));
    strip.setBrightness(bright);
    strip.show();
  }

  else
  {
    strip.clear();
    strip.show();

  }
}

Grüße

Weedling

Nur ausgeben, wenn sich wirklich was geändert hat.

Gruß Tommy

Wenn p2 != 9 ist, löscht Du den Stripe. also erst schreibst Du mit p2 == 1 und dann löscht Du und schreibst beim nächsten Umlauf neu und löscht ....

Las das else mal ganz weg.

Wieso mußt Du löschen?
Du überträgst 3 mal Daten an die Matrix.
Zuerst immer etwas Konstantes, dann die Erste Zahl und dann die zweite Zahl. Jedesmal dazwischen löscht Du die Matrix.
Es ist nicht notwendig dazwischen zu löschen.
Die 3 Teile können / müssen gleichzeitig angezeigt werden.
Außerdem mußt Du die Matrix nicht löschen falls P2 nicht 9 ist (else Teil des letzten if). Entferne den else Teil.
Grüße Uwe

Wie hier schon vorgeschlagen wurde, die Matrix nur aktualisieren wenn sich wirklich etwas geändert hat.

Man kann die loop() Schleife aber auch etwas kürzer halten:

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif

constexpr uint8_t MATRIX_DATAPIN {2};
constexpr uint8_t POTI_BRIGHTNESS {A0};
constexpr uint8_t POTI_ONES {A7};
constexpr uint8_t POTI_TENS {A6};
constexpr uint8_t OFFSET_ONES {91};
// constexpr uint8_t OFFSET_ONES {123};
constexpr uint8_t OFFSET_TENS {86};
// constexpr uint8_t OFFSET_TENS {118}

const uint8_t zero[14] {0, 1, 2, 3, 16, 19, 32, 35, 48, 51, 64, 65, 66, 67};
const uint8_t one[6]   {2, 17, 18, 34, 50, 66};
const uint8_t two[14]  {0, 1, 2, 3, 19, 32, 33, 34, 35, 48, 64, 65, 66, 67};
const uint8_t three[14] {0, 1, 2, 3, 19, 32, 33, 34, 35, 51, 64, 65, 66, 67};
const uint8_t four[10] {0, 3, 16, 19, 32, 33, 34, 35, 51, 67};
const uint8_t five[14] {0, 1, 2, 3, 16, 32, 33, 34, 35, 51, 64, 65, 66, 67};
const uint8_t six[15]  {0, 1, 2, 3, 16, 32, 33, 34, 35, 48, 51, 64, 65, 66, 67};
const uint8_t seven[8] {0, 1, 2, 3, 19, 35, 51, 67};
const uint8_t eight[16] {0, 1, 2, 3, 16, 19, 32, 33, 34, 35, 48, 51, 64, 65, 66, 67};
const uint8_t nine[15] {0, 1, 2, 3, 16, 19, 32, 33, 34, 35, 51, 64, 65, 66, 67};

struct Digits {
  uint8_t offset {0};
  const uint8_t dotCount[10] {
    sizeof(zero), sizeof(one), sizeof(two), sizeof(three),
    sizeof(four), sizeof(five), sizeof(six), sizeof(seven),
    sizeof(eight), sizeof(nine)
  }; // Anzahl Elemente der zuvor definierten Arrays. Funktioniert so aber nur mit 1Byte Typen!
  const uint8_t *digits[10] {zero, one, two, three, four, five, six, seven, eight, nine};
} digit;

struct Bright {
  uint8_t bright{0};
  uint8_t prevBright{1};
} brightness;


struct Decimal {
  uint8_t ones{1};
  uint8_t prevOnes{0};
  uint8_t tens{1};
  uint8_t prevTens{0};
} decimal;

Adafruit_NeoPixel strip = Adafruit_NeoPixel(256, MATRIX_DATAPIN, NEO_GRB + NEO_KHZ800);
void setup() {
  Serial.begin(115200);
  Serial.println(sizeof(zero));
  strip.begin();
  strip.clear();
  strip.show();
}

void loop() {
  static bool refresh {true};

  brightness.bright = map(analogRead(POTI_BRIGHTNESS), 0, 1023, 0, 250);
  decimal.ones = map(analogRead(POTI_ONES), 0, 1023, 0, 9);
  decimal.tens = map(analogRead(POTI_TENS), 0, 1023, 0, 9);

  if (brightness.bright != brightness.prevBright) {
    brightness.prevBright = brightness.bright;
    Serial.print("Helligkeit = "); Serial.println(brightness.bright);
    refresh = true;
  }
  if (decimal.ones !=  decimal.prevOnes) {
    decimal.prevOnes = decimal.ones;
    Serial.print("Einer = "); Serial.println(decimal.ones);
    refresh = true;
  }
  if (decimal.tens !=  decimal.prevTens) {
    decimal.prevTens = decimal.tens;
    Serial.print("Zehner = "); Serial.println(decimal.tens);
    refresh = true;
  }

  if (refresh) {
    strip.clear();
    printDigit(decimal.ones, OFFSET_ONES);
    printDigit(decimal.tens, OFFSET_TENS);
    strip.setBrightness(brightness.bright);
    strip.show();
    refresh = false;
  }

}

void printDigit(uint8_t nr, uint8_t offset) {
  digit.offset = offset;
  for (uint8_t i = 0; i < digit.dotCount[nr]; ++i) {
    uint8_t dot = digit.digits[nr][i] + digit.offset;
    strip.setPixelColor(dot, (strip.Color(255, 255, 255)));
  }
}

Ich weiß nicht ob es 100%ig in "Echt" so klappt, ich habe das nur im Simulator ausprobiert:

Da flackert nix.

1 Like

danke für deine antwort!

Ich werde es morgen wenn ich wieder zuahuse bin ausprobieren.

Ui der simulator gefällt mir!!! Vielen lieben dank dafür! das ist ja super praktisch!

Lg

Weedling

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.