Initial commit
This commit is contained in:
commit
b49984b9c0
32 changed files with 2394 additions and 0 deletions
30
src/hal/ws2812.h
Normal file
30
src/hal/ws2812.h
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
// ws2812.h
|
||||
// Thin HAL-Wrapper um Adafruit NeoPixel (bit-bang, kein SERCOM).
|
||||
//
|
||||
// Dirty-Flag-Pattern:
|
||||
// ws2812_set() schreibt nur in den internen NeoPixel-Buffer (RAM).
|
||||
// ws2812_show() überträgt den gesamten Buffer an die LEDs (~600µs, blockierend
|
||||
// via noInterrupts()). Nie aus einer ISR aufrufen!
|
||||
// CButton::render_led() ruft nur ws2812_set() auf; ws2812_show() wird
|
||||
// einmalig von CMainController::updateLEDs() aufgerufen wenn mindestens
|
||||
// ein Button dirty war oder eine Animation läuft.
|
||||
|
||||
#pragma once
|
||||
#include <stdint.h>
|
||||
|
||||
#define WS2812_COUNT 20
|
||||
#define WS2812_PIN 18 // D18 = PB22 = LED_DATA_PIN
|
||||
|
||||
void ws2812_init();
|
||||
|
||||
// Einzelne LED im Buffer setzen (sofort, kein HW-Transfer)
|
||||
void ws2812_set(uint8_t idx, uint8_t r, uint8_t g, uint8_t b);
|
||||
|
||||
// Alle LEDs im Buffer auf dieselbe Farbe setzen (kein HW-Transfer)
|
||||
void ws2812_fill(uint8_t r, uint8_t g, uint8_t b);
|
||||
|
||||
// Buffer an Hardware übertragen (~600µs, blockierend via noInterrupts())
|
||||
void ws2812_show();
|
||||
|
||||
// Buffer löschen und sofort anzeigen (LEDs aus)
|
||||
void ws2812_clear();
|
||||
Loading…
Add table
Add a link
Reference in a new issue