Hi,
nachdem die ersten light_ws2812 bastelein funktionieren würde ich gerne
Led's ein/aus faden.
Ein ganz stupider Ansatz wie der hier:
1
#include <util/delay.h>
2
#include <avr/io.h>
3
#include <avr/interrupt.h>
4
#include "light_ws2812.h"
5
6
7
//const uint8_t NUM_LEDS = 24; // Anzahl Leds
8
#define NUM_LEDS 1
9
struct cRGB leds[NUM_LEDS];
10
11
int main(void)
12
{
13
while(1)
14
{
15
for(uint8_t step = 0; step < 255; step++)
16
{
17
// Led einschalten
18
leds[0].r = 0;
19
leds[0].g = 0;
20
leds[0].b = step;
21
ws2812_setleds(leds, NUM_LEDS);
22
23
_delay_ms(100);
24
25
}
26
}
27
}
funktioniert natürlich nich.
In diesem Artikel:
https://www.mikrocontroller.net/articles/LED-Fading
wird beschrieben wie man Leds vernünftig ein/aus faded.
Funktioniert auch für eine Led ganz toll, da aber der ws2812 controller
die Leuchtdauer/Intensität der Led kontrolliert kann man nicht einfach
+5v des Led Streifens kontrollieren.
Eine Idee wäre in der Funktion:
ws2812_setleds(leds, NUM_LEDS);
einzubauen, und damit die Led komplett ein/auszuschalten.
bin mir hier aber nicht ganz sicher wie man den festen PWM Pin mit dem
Pin der für ws2812 definiert wird kombinieren kann?
Die Leds des WS2812 haben zwar 256 Stufen, aber sind nicht
Gamma-korrigiert. Effektiv bedeutet das, du hast nur 32 Stufen zur
Verfügung. Eventuell auch 48, aber der Flaschenhals sind nun mal die für
das menschliche Auge "großen" Unterschiede in den dunklen Stufen.
Hatte den pwmtable der 16bit pwm aus dem oben genanntem Led fade Artikel
getestet, das funktionierte aber nicht weil die Werte bis 1024 laufen.
Die Led aber nur bis 255 geht.
Werde deins mal kompilieren.