Helligkeitsänderung mit LDR

Hallo, ich habe mir heute die NeoPixel LED Strips (W2812B) angeschaut und versucht diese durch einen LDR (GL5528) zu dimmen. Das hat soweit funktioniert. Leider werden die LED Strips in "Stufen" gedimmt, sprich es wird Stufenweiße heller bzw. Dunkler und es entsteht kein smoother Übergang.

Vielleicht kann mir einer von euch weiterhelfen.

Mein Programm so weit:

#include <Adafruit_NeoPixel.h>
#define PIN 6
#define LED_COUNT 11

int ldr = A0;
int sensorWert;
int lastsensorWert;
int test;

Adafruit_NeoPixel pixels = Adafruit_NeoPixel(LED_COUNT, PIN, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel strip(LED_COUNT, PIN, NEO_GRB + NEO_KHZ800);

void setup()
{
  Serial.begin(9600);
  pixels.begin();
}

void loop()
{
  colorWipe(strip.Color(  0,   0, 255), 50);

  sensorWert = analogRead(ldr);
  test = (sensorWert - 100) / 4;        // Mit 5k Widerstand // LDR Wert auf 0 bis 255 festhalten

  if(test < 0)                          // Negative Werte vermeiden
  {
    test = 1;
  }

  strip.setBrightness(test);

  Serial.print("LDR: ");
  Serial.println(sensorWert);
  Serial.println(test);
  //delay(500);
}

void colorWipe(uint32_t color, int wait) 
{
  for(int i=0; i<strip.numPixels(); i++) 
  {
    strip.setPixelColor(i, color);
    strip.show();
    delay(100);
  }
}

LG

Kannst Du uns mal die Ausgabe auf der seriellen Schnittstelle geben?

Dein Code geht davon aus, dass der LDR Werte über fast den ganzen ADC-Bereich liefert. Welche Schaltung hast Du dafür genommen?

@max21031 Wie ist der LDR angeklemmt ?

Widerstandswert habe ich ein bisschen rumprobiert und ein 5kOhm hat am besten gepasst.

Das wollte ich wissen Danke

Ich komm mit Deinem Code nicht klar.
Wenn ich Dein Bild in #4 interpretiere, hast Du einen Widerstand von 5K zwischen GND und dem Analog-PIN und den Foto-Widerstand zwischen 5V und dem Pin.
Also ein klassischer Spannungsteiler.

Nehme ich jetzt das Datenblatt, bekommst Du bei 10lx Lichteinstrahlung einen R zwischen 8 und 20K am Foto-Widerstand.
Bei 8K sind am AnalogIn knapp 2V und bei 20K ca. 1V.
Das kommt etwa auf Werte für Sensorwert von ca. 400 bis ca. 200.
Bei 100 lx sind das 2-4K was etwa 3,5 bis etwas unter 3V macht und die am ADC dann mit einem Rückgabewert von etwas über 700 bis etwas unter 600 kommen.

Was und warum willst Du da 100 abziehen und dann durch 4 teilen?
Mach da ein

test=map(sensorwert, 50, 1024 , 0, 255);

draus und schon bist Du irgendwo in der richtigen Richtung.

Da der Sensor bei Dunkelheit einen R von 10Mohm hat, wird der Analogin nie ganz auf 0 gehen. Ich habe dafür die 50 vorgegeben, die dann den Stripe dunkel werden lassen soll.
Mit dem map kannst Du spielen. Auch, um die Grenzen auszutesten.

Zeig mal was im SM kommt.