Brick Groove Machine 0.9.3
Firmware embarqué pour contrôleur/synthé Brick
 
Chargement...
Recherche...
Aucune correspondance
Référence du fichier drv_leds_addr.h

Interface du driver pour LEDs adressables SK6812 / WS2812. Plus de détails...

#include "ch.h"
#include "brick_config.h"
#include "hal.h"
#include <stdint.h>

Aller au code source de ce fichier.

Structures de données

struct  led_color_t
 Structure de couleur GRB (format natif WS2812/SK6812). Plus de détails...
 
struct  led_state_t
 Structure d’état logique d’une LED. Plus de détails...
 

Macros

#define COLOR_RED   (led_color_t){0, 255, 0}
 
#define COLOR_GREEN   (led_color_t){255, 0, 0}
 
#define COLOR_BLUE   (led_color_t){0, 0, 255}
 
#define COLOR_YELLOW   (led_color_t){255, 255, 0}
 
#define COLOR_CYAN   (led_color_t){255, 0, 255}
 
#define COLOR_MAGENTA   (led_color_t){0, 255, 255}
 
#define COLOR_WHITE   (led_color_t){255, 255, 255}
 
#define COLOR_ORANGE   (led_color_t){128, 255, 0}
 
#define COLOR_PINK   (led_color_t){20, 255, 127}
 
#define COLOR_PURPLE   (led_color_t){0, 128, 255}
 
#define COLOR_TURQUOISE   (led_color_t){255, 64, 128}
 
#define COLOR_OFF   (led_color_t){0, 0, 0}
 
#define LED_REC   0
 
#define LED_SEQ8   1
 
#define LED_SEQ7   2
 
#define LED_SEQ6   3
 
#define LED_SEQ5   4
 
#define LED_SEQ4   5
 
#define LED_SEQ3   6
 
#define LED_SEQ2   7
 
#define LED_SEQ1   8
 
#define LED_SEQ9   9
 
#define LED_SEQ10   10
 
#define LED_SEQ11   11
 
#define LED_SEQ12   12
 
#define LED_SEQ13   13
 
#define LED_SEQ14   14
 
#define LED_SEQ15   15
 
#define LED_SEQ16   16
 

Énumérations

enum  led_mode_t { LED_MODE_OFF , LED_MODE_ON , LED_MODE_BLINK , LED_MODE_PLAYHEAD }
 Mode d’affichage d’une LED. Plus de détails...
 

Fonctions

void drv_leds_addr_init (void)
 Initialise la ligne de sortie et réinitialise les LEDs.
 
void drv_leds_addr_update (void)
 Envoie le contenu du buffer vers les LEDs (protocole GRB 800 kHz).
 
void drv_leds_addr_set_rgb (int index, uint8_t r, uint8_t g, uint8_t b)
 Définit la couleur d’une LED en composantes RGB.
 
void drv_leds_addr_set_color (int index, led_color_t color)
 Définit la couleur d’une LED via une structure led_color_t.
 
void drv_leds_addr_clear (void)
 Éteint toutes les LEDs (buffer uniquement, sans envoi).
 
void drv_leds_addr_set (int index, led_color_t color, led_mode_t mode)
 Définit l’état logique d’une LED (couleur + mode).
 
void drv_leds_addr_render (void)
 Met à jour le buffer physique selon les états logiques (drv_leds_addr_state[]).
 

Variables

CCM_DATA led_state_t drv_leds_addr_state [NUM_ADRESS_LEDS]
 État logique global de chaque LED.
 

Description détaillée

Interface du driver pour LEDs adressables SK6812 / WS2812.

Ce module gère un ruban ou une matrice de LEDs RGB adressables connectées sur une seule ligne de sortie (WS2812-like).

Fonctionnalités principales :

  • Gestion logicielle du protocole 800 kHz GRB
  • Définition d’un buffer mémoire led_buffer[] pour le rendu
  • Couleurs prédéfinies (RGB standard + teintes utiles)
  • Modes logiques (ON, OFF, BLINK, PLAYHEAD)
  • Fonction drv_leds_addr_render() pour le rendu automatique
Note
Compatible avec les modèles WS2812B, SK6812 et compatibles.

Documentation des macros

◆ COLOR_BLUE

#define COLOR_BLUE   (led_color_t){0, 0, 255}

◆ COLOR_CYAN

#define COLOR_CYAN   (led_color_t){255, 0, 255}

◆ COLOR_GREEN

#define COLOR_GREEN   (led_color_t){255, 0, 0}

◆ COLOR_MAGENTA

#define COLOR_MAGENTA   (led_color_t){0, 255, 255}

◆ COLOR_OFF

#define COLOR_OFF   (led_color_t){0, 0, 0}

◆ COLOR_ORANGE

#define COLOR_ORANGE   (led_color_t){128, 255, 0}

◆ COLOR_PINK

#define COLOR_PINK   (led_color_t){20, 255, 127}

◆ COLOR_PURPLE

#define COLOR_PURPLE   (led_color_t){0, 128, 255}

◆ COLOR_RED

#define COLOR_RED   (led_color_t){0, 255, 0}

◆ COLOR_TURQUOISE

#define COLOR_TURQUOISE   (led_color_t){255, 64, 128}

◆ COLOR_WHITE

#define COLOR_WHITE   (led_color_t){255, 255, 255}

◆ COLOR_YELLOW

#define COLOR_YELLOW   (led_color_t){255, 255, 0}

◆ LED_REC

#define LED_REC   0

◆ LED_SEQ1

#define LED_SEQ1   8

◆ LED_SEQ10

#define LED_SEQ10   10

◆ LED_SEQ11

#define LED_SEQ11   11

◆ LED_SEQ12

#define LED_SEQ12   12

◆ LED_SEQ13

#define LED_SEQ13   13

◆ LED_SEQ14

#define LED_SEQ14   14

◆ LED_SEQ15

#define LED_SEQ15   15

◆ LED_SEQ16

#define LED_SEQ16   16

◆ LED_SEQ2

#define LED_SEQ2   7

◆ LED_SEQ3

#define LED_SEQ3   6

◆ LED_SEQ4

#define LED_SEQ4   5

◆ LED_SEQ5

#define LED_SEQ5   4

◆ LED_SEQ6

#define LED_SEQ6   3

◆ LED_SEQ7

#define LED_SEQ7   2

◆ LED_SEQ8

#define LED_SEQ8   1

◆ LED_SEQ9

#define LED_SEQ9   9

Documentation du type de l'énumération

◆ led_mode_t

enum led_mode_t

Mode d’affichage d’une LED.

Valeurs énumérées
LED_MODE_OFF 

Éteinte

LED_MODE_ON 

Allumée en continu

LED_MODE_BLINK 

Clignotement périodique (~2 Hz)

LED_MODE_PLAYHEAD 

Effet pulsé (utilisé pour repère de lecture)

Documentation des fonctions

◆ drv_leds_addr_clear()

void drv_leds_addr_clear ( void  )

Éteint toutes les LEDs (buffer uniquement, sans envoi).

◆ drv_leds_addr_init()

void drv_leds_addr_init ( void  )

Initialise la ligne de sortie et réinitialise les LEDs.

◆ drv_leds_addr_render()

void drv_leds_addr_render ( void  )

Met à jour le buffer physique selon les états logiques (drv_leds_addr_state[]).

Doit être appelée périodiquement (~30–60 Hz) pour actualiser les effets.

Met à jour le buffer physique selon les états logiques (drv_leds_addr_state[]).

Gère les effets visuels simples :

  • LED_MODE_ON → Couleur constante
  • LED_MODE_OFF → LED éteinte
  • LED_MODE_BLINK → Clignotement 2 Hz
  • LED_MODE_PLAYHEAD→ Effet pulsé

◆ drv_leds_addr_set()

void drv_leds_addr_set ( int  index,
led_color_t  color,
led_mode_t  mode 
)

Définit l’état logique d’une LED (couleur + mode).

◆ drv_leds_addr_set_color()

void drv_leds_addr_set_color ( int  index,
led_color_t  color 
)

Définit la couleur d’une LED via une structure led_color_t.

◆ drv_leds_addr_set_rgb()

void drv_leds_addr_set_rgb ( int  index,
uint8_t  r,
uint8_t  g,
uint8_t  b 
)

Définit la couleur d’une LED en composantes RGB.

Paramètres
indexIndice de la LED [0–NUM_ADRESS_LEDS-1]
rRouge (0–255)
gVert (0–255)
bBleu (0–255)

◆ drv_leds_addr_update()

void drv_leds_addr_update ( void  )

Envoie le contenu du buffer vers les LEDs (protocole GRB 800 kHz).

Documentation des variables

◆ drv_leds_addr_state

CCM_DATA led_state_t drv_leds_addr_state[NUM_ADRESS_LEDS]
extern

État logique global de chaque LED.