50 lines
1.2 KiB
C
50 lines
1.2 KiB
C
#include <stdio.h>
|
|
#include "pico/stdlib.h"
|
|
#include "pico/cyw43_arch.h"
|
|
#include "pwm.h"
|
|
|
|
// Alle 21 Kanaele synchron:
|
|
// 500 ms Ramp-Up, 500 ms voll an, 500 ms Ramp-Down, 500 ms aus.
|
|
static void set_all(uint16_t level) {
|
|
for (unsigned ch = 0; ch < PWM_TOTAL_COUNT; ch++) {
|
|
pwm_ch_set(ch, level);
|
|
}
|
|
}
|
|
|
|
int main(void) {
|
|
stdio_init_all();
|
|
|
|
if (cyw43_arch_init()) {
|
|
printf("cyw43_arch_init fehlgeschlagen\n");
|
|
return -1;
|
|
}
|
|
|
|
pwm_all_init();
|
|
|
|
printf("ampel: alle %u Kanaele synchron Ramp-Up / An / Ramp-Down / Aus\n",
|
|
PWM_TOTAL_COUNT);
|
|
|
|
const int ramp_steps = 50;
|
|
const int step_ms = 500 / ramp_steps;
|
|
|
|
while (true) {
|
|
cyw43_arch_gpio_put(CYW43_WL_GPIO_LED_PIN, true);
|
|
for (int i = 0; i <= ramp_steps; i++) {
|
|
set_all((uint16_t)((i * PWM_MAX_LEVEL) / ramp_steps));
|
|
sleep_ms(step_ms);
|
|
}
|
|
|
|
set_all(PWM_MAX_LEVEL);
|
|
sleep_ms(500);
|
|
|
|
cyw43_arch_gpio_put(CYW43_WL_GPIO_LED_PIN, false);
|
|
for (int i = ramp_steps; i >= 0; i--) {
|
|
set_all((uint16_t)((i * PWM_MAX_LEVEL) / ramp_steps));
|
|
sleep_ms(step_ms);
|
|
}
|
|
|
|
set_all(0);
|
|
sleep_ms(500);
|
|
}
|
|
}
|