2025-02-25 15:06:27 +01:00

63 lines
1.5 KiB
C

#include "led_bar.h"
#ifdef PICO
#include <hardware/pwm.h>
#include <pico/stdlib.h>
#define GPIO_02 2
#endif
void init_gpio(void) {
#ifdef PICO
#ifdef PICO_DEFAULT_LED_PIN
gpio_init(PICO_DEFAULT_LED_PIN);
gpio_set_dir(PICO_DEFAULT_LED_PIN, GPIO_OUT);
#endif
gpio_init(GPIO_02);
gpio_set_dir(GPIO_02, GPIO_OUT);
gpio_set_function(GPIO_02, GPIO_FUNC_PWM);
uint slice_num = pwm_gpio_to_slice_num(GPIO_02);
pwm_set_enabled(slice_num, true);
for (int i = 0; i < NB_LED_BAR_GPIO; i++) {
gpio_init(LED_BAR_GPIO[i]);
gpio_set_dir(LED_BAR_GPIO[i], GPIO_OUT);
gpio_set_function(LED_BAR_GPIO[i], GPIO_FUNC_PWM);
uint slice_num = pwm_gpio_to_slice_num(LED_BAR_GPIO[i]);
pwm_set_enabled(slice_num, true);
pwm_set_wrap(slice_num, MAX_DUTY_STEPS);
}
#endif
}
/**
* A program to play with the LED bar (10 leds).
* You have three main functions:
* - run_wave: simulate waves like propagating along the LED bar.
* - breath_led: one LED breathing (for manu use FreeRTOS tasks).
* - run_meteor: back and forth meteor flow like.
*
* NOTE: for easy dev/debug you can use the following command:
* `make run-debug name=beathing_led`
*
* It will run the program directly on your machine, displaying
* a LED bar simulator on the terminal stdout.
*/
int main() {
#ifdef PICO
stdio_init_all();
init_gpio();
#endif
leds l;
init_leds(&l);
run_wave(&l, 100);
breath_led(&l, 5, 100, 1);
for(;;) {
run_meteor(&l, 100);
switch_direction(&l);
}
}