Pico Led Controller 1.0.3
A project to control LEDs using Raspberry Pi Pico W
light_state.h File Reference
#include <stdio.h>
#include <pico/stdlib.h>
#include "urgb.h"
#include "ws2812b.h"

Go to the source code of this file.

Data Structures

struct  light_state_t
 Light state struct. More...
 

Macros

#define NUM_PIXELS   120
 
#define NUM_LIGHT_MODES   8
 
#define NUM_LIGHT_COLORS   11
 

Enumerations

enum  light_modes {
  MODE_RAINBOW_WHEEL , MODE_RAINBOW_CYCLE , MODE_STATIC , MODE_BREATHING ,
  MODE_FLASHING , MODE_LOADING , MODE_WAVE , MODE_FADE
}
 Light modes enum. More...
 
enum  light_colors {
  COLOR_RED , COLOR_GREEN , COLOR_BLUE , COLOR_CYAN ,
  COLOR_YELLOW , COLOR_MAGENTA , COLOR_PURPLE , COLOR_ORANGE ,
  COLOR_TURQUOISE , COLOR_PINK , COLOR_WHITE
}
 Light colors enum. More...
 

Functions

void toggle_light_state ()
 Toggle light state. More...
 
void toggle_light_mode ()
 Toggle light mode. More...
 
void toggle_light_color ()
 Toggle light color. More...
 
void set_light_mode (enum light_modes mode)
 Set light mode. More...
 
void set_light_color (enum light_colors color)
 Set light color. More...
 
uint32_t get_current_color ()
 Get current color. More...
 

Variables

volatile struct light_state_t light_state
 Light state. More...
 

Macro Definition Documentation

◆ NUM_LIGHT_COLORS

#define NUM_LIGHT_COLORS   11

Definition at line 6 of file light_state.h.

◆ NUM_LIGHT_MODES

#define NUM_LIGHT_MODES   8

Definition at line 5 of file light_state.h.

◆ NUM_PIXELS

#define NUM_PIXELS   120

Definition at line 4 of file light_state.h.

Enumeration Type Documentation

◆ light_colors

Light colors enum.

Enum for the light colors.

Enumerator
COLOR_RED 
COLOR_GREEN 
COLOR_BLUE 
COLOR_CYAN 
COLOR_YELLOW 
COLOR_MAGENTA 
COLOR_PURPLE 
COLOR_ORANGE 
COLOR_TURQUOISE 
COLOR_PINK 
COLOR_WHITE 

Definition at line 32 of file light_state.h.

33 {
34  COLOR_RED,
36  COLOR_BLUE,
37  COLOR_CYAN,
43  COLOR_PINK,
45 };
@ COLOR_ORANGE
Definition: light_state.h:41
@ COLOR_BLUE
Definition: light_state.h:36
@ COLOR_PINK
Definition: light_state.h:43
@ COLOR_PURPLE
Definition: light_state.h:40
@ COLOR_TURQUOISE
Definition: light_state.h:42
@ COLOR_MAGENTA
Definition: light_state.h:39
@ COLOR_RED
Definition: light_state.h:34
@ COLOR_CYAN
Definition: light_state.h:37
@ COLOR_YELLOW
Definition: light_state.h:38
@ COLOR_GREEN
Definition: light_state.h:35
@ COLOR_WHITE
Definition: light_state.h:44

◆ light_modes

Light modes enum.

Enum for the light modes.

Enumerator
MODE_RAINBOW_WHEEL 
MODE_RAINBOW_CYCLE 
MODE_STATIC 
MODE_BREATHING 
MODE_FLASHING 
MODE_LOADING 
MODE_WAVE 
MODE_FADE 

Definition at line 17 of file light_state.h.

18 {
25  MODE_WAVE,
26  MODE_FADE
27 };
@ MODE_RAINBOW_CYCLE
Definition: light_state.h:20
@ MODE_FLASHING
Definition: light_state.h:23
@ MODE_LOADING
Definition: light_state.h:24
@ MODE_WAVE
Definition: light_state.h:25
@ MODE_BREATHING
Definition: light_state.h:22
@ MODE_STATIC
Definition: light_state.h:21
@ MODE_RAINBOW_WHEEL
Definition: light_state.h:19
@ MODE_FADE
Definition: light_state.h:26

Function Documentation

◆ get_current_color()

uint32_t get_current_color ( )

Get current color.

Function gets the current color.

Returns
current color in RGB format

Definition at line 116 of file light_state.c.

117 {
118  switch (light_state.color)
119  {
120  case COLOR_RED:
122  case COLOR_GREEN:
124  case COLOR_BLUE:
126  case COLOR_WHITE:
128  case COLOR_PURPLE:
130  case COLOR_YELLOW:
132  case COLOR_CYAN:
134  case COLOR_ORANGE:
136  case COLOR_PINK:
138  case COLOR_TURQUOISE:
140  case COLOR_MAGENTA:
142  default:
143  return 0;
144  }
145 }
volatile struct light_state_t light_state
Light state.
Definition: light_state.c:8
uint8_t brightness
Definition: light_state.h:59
enum light_colors color
Definition: light_state.h:62
uint32_t get_purple(uint8_t brightness)
Get purple color.
Definition: ws2812b.c:50
uint32_t get_yellow(uint8_t brightness)
Get yellow color.
Definition: ws2812b.c:55
uint32_t get_red(uint8_t brightness)
Get red color.
Definition: ws2812b.c:30
uint32_t get_white(uint8_t brightness)
Get white color.
Definition: ws2812b.c:45
uint32_t get_green(uint8_t brightness)
Get green color.
Definition: ws2812b.c:35
uint32_t get_pink(uint8_t brightness)
Get pink color.
Definition: ws2812b.c:70
uint32_t get_blue(uint8_t brightness)
Get blue color.
Definition: ws2812b.c:40
uint32_t get_cyan(uint8_t brightness)
Get cyan color.
Definition: ws2812b.c:60
uint32_t get_orange(uint8_t brightness)
Get orange color.
Definition: ws2812b.c:65
uint32_t get_magenta(uint8_t brightness)
Get magenta color.
Definition: ws2812b.c:80
uint32_t get_turquoise(uint8_t brightness)
Get turquoise color.
Definition: ws2812b.c:75

References light_state_t::brightness, light_state_t::color, COLOR_BLUE, COLOR_CYAN, COLOR_GREEN, COLOR_MAGENTA, COLOR_ORANGE, COLOR_PINK, COLOR_PURPLE, COLOR_RED, COLOR_TURQUOISE, COLOR_WHITE, COLOR_YELLOW, get_blue(), get_cyan(), get_green(), get_magenta(), get_orange(), get_pink(), get_purple(), get_red(), get_turquoise(), get_white(), get_yellow(), and light_state.

Referenced by run_loop().

◆ set_light_color()

void set_light_color ( enum light_colors  color)

Set light color.

Function sets the light mode to the specified color.

Parameters
colorcolor

Definition at line 68 of file light_state.c.

69 {
70  light_state.color = color;
72  return;
74  {
75  switch (color)
76  {
77  case COLOR_RED:
79  break;
80  case COLOR_GREEN:
82  break;
83  case COLOR_BLUE:
85  break;
86  case COLOR_WHITE:
88  break;
89  case COLOR_PURPLE:
91  break;
92  case COLOR_YELLOW:
94  break;
95  case COLOR_CYAN:
97  break;
98  case COLOR_ORANGE:
100  break;
101  case COLOR_PINK:
103  break;
104  case COLOR_TURQUOISE:
106  break;
107  case COLOR_MAGENTA:
109  break;
110  default:
111  break;
112  }
113  }
114 }
#define NUM_PIXELS
Definition: light_state.h:4
enum light_modes light_mode
Definition: light_state.h:61
void set_all_cyan(uint32_t len, uint8_t brightness)
Set all leds cyan.
Definition: ws2812b.c:121
void set_all_orange(uint32_t len, uint8_t brightness)
Set all leds orange.
Definition: ws2812b.c:127
void set_all_pink(uint32_t len, uint8_t brightness)
Set all leds pink.
Definition: ws2812b.c:133
void set_all_blue(uint32_t len, uint8_t brightness)
Set all leds to blue.
Definition: ws2812b.c:97
void set_all_turquoise(uint32_t len, uint8_t brightness)
Set all leds turquoise.
Definition: ws2812b.c:139
void set_all_magenta(uint32_t len, uint8_t brightness)
Set all leds magenta.
Definition: ws2812b.c:145
void set_all_white(uint32_t len, uint8_t brightness)
Set all leds to white.
Definition: ws2812b.c:103
void set_all_yellow(uint32_t len, uint8_t brightness)
Set all leds yellow.
Definition: ws2812b.c:115
void set_all_green(uint32_t len, uint8_t brightness)
Set all leds to green.
Definition: ws2812b.c:91
void set_all_red(uint32_t len, uint8_t brightness)
Set all leds to red.
Definition: ws2812b.c:85
void set_all_purple(uint32_t len, uint8_t brightness)
Set all leds purple.
Definition: ws2812b.c:109

References light_state_t::brightness, light_state_t::color, COLOR_BLUE, COLOR_CYAN, COLOR_GREEN, COLOR_MAGENTA, COLOR_ORANGE, COLOR_PINK, COLOR_PURPLE, COLOR_RED, COLOR_TURQUOISE, COLOR_WHITE, COLOR_YELLOW, light_state_t::light_mode, light_state, MODE_STATIC, NUM_PIXELS, set_all_blue(), set_all_cyan(), set_all_green(), set_all_magenta(), set_all_orange(), set_all_pink(), set_all_purple(), set_all_red(), set_all_turquoise(), set_all_white(), set_all_yellow(), and light_state_t::state.

Referenced by cgi_led_brightness_handler(), cgi_led_color_handler(), set_light_mode(), and toggle_light_color().

◆ set_light_mode()

void set_light_mode ( enum light_modes  mode)

Set light mode.

Function sets the light mode to the specified mode.

Parameters
modemode

Definition at line 31 of file light_state.c.

32 {
33  light_state.light_mode = mode;
35  return;
36  switch (mode)
37  {
38  case MODE_RAINBOW_WHEEL:
39  printf("Setting rainbow wheel mode\n");
40  break;
41  case MODE_RAINBOW_CYCLE:
42  printf("Setting rainbow cycle mode\n");
43  break;
44  case MODE_STATIC:
45  printf("Setting static mode\n");
47  break;
48  case MODE_BREATHING:
49  printf("Setting breathing mode\n");
50  break;
51  case MODE_FLASHING:
52  printf("Setting flashing mode\n");
53  break;
54  case MODE_LOADING:
55  printf("Setting loading mode\n");
56  break;
57  case MODE_WAVE:
58  printf("Setting wave mode\n");
59  break;
60  case MODE_FADE:
61  printf("Setting fade mode\n");
62  break;
63  default:
64  break;
65  }
66 }
void set_light_color(enum light_colors color)
Set light color.
Definition: light_state.c:68

References light_state_t::brightness, light_state_t::color, light_state_t::light_mode, light_state, MODE_BREATHING, MODE_FADE, MODE_FLASHING, MODE_LOADING, MODE_RAINBOW_CYCLE, MODE_RAINBOW_WHEEL, MODE_STATIC, MODE_WAVE, set_light_color(), and light_state_t::state.

Referenced by cgi_led_mode_handler(), toggle_light_mode(), and toggle_light_state().

◆ toggle_light_color()

void toggle_light_color ( )

Toggle light color.

Function toggles the light color iterating through the light colors.

Definition at line 25 of file light_state.c.

26 {
29 }
#define NUM_LIGHT_COLORS
Definition: light_state.h:6

References light_state_t::color, light_state, NUM_LIGHT_COLORS, and set_light_color().

◆ toggle_light_mode()

void toggle_light_mode ( )

Toggle light mode.

Function toggles the light mode iterating through the light modes.

Definition at line 19 of file light_state.c.

20 {
23 }
void set_light_mode(enum light_modes mode)
Set light mode.
Definition: light_state.c:31
#define NUM_LIGHT_MODES
Definition: light_state.h:5

References light_state_t::light_mode, light_state, NUM_LIGHT_MODES, and set_light_mode().

Referenced by run_loop().

◆ toggle_light_state()

void toggle_light_state ( )

Toggle light state.

Function toggles on/off the light state.

Definition at line 10 of file light_state.c.

11 {
15  else
17 }
void turn_off_all(uint32_t len)
Turn off all leds.
Definition: ws2812b.c:23

References light_state_t::brightness, light_state_t::light_mode, light_state, NUM_PIXELS, set_light_mode(), light_state_t::state, and turn_off_all().

Referenced by cgi_led_handler(), led_blink(), and run_loop().

Variable Documentation

◆ light_state