mirror of
https://github.com/jhbruhn/eurorack.git
synced 2025-03-15 02:55:49 +00:00
49 lines
1.2 KiB
C++
49 lines
1.2 KiB
C++
#pragma once
|
|
|
|
#include "../resources.h"
|
|
#include "stm32f0xx_hal_gpio.h"
|
|
#include <stm32f0xx_hal.h>
|
|
|
|
using namespace stereo_mix;
|
|
|
|
const uint8_t kNumChannels = 4;
|
|
|
|
static const uint16_t kGpioPins[] = { GPIO_PIN_7, GPIO_PIN_15, GPIO_PIN_13, GPIO_PIN_14 };
|
|
static GPIO_TypeDef* kGpioPorts[] = { GPIOB, GPIOB, GPIOF, GPIOF };
|
|
|
|
class Leds {
|
|
public:
|
|
Leds()
|
|
{
|
|
GPIO_InitTypeDef gpioInit;
|
|
for (size_t i = 0; i < kNumChannels; i++) {
|
|
gpioInit.Mode = GPIO_MODE_OUTPUT_PP;
|
|
gpioInit.Pin = kGpioPins[i];
|
|
gpioInit.Pull = GPIO_NOPULL;
|
|
gpioInit.Speed = GPIO_SPEED_FREQ_MEDIUM;
|
|
HAL_GPIO_Init(kGpioPorts[i], &gpioInit);
|
|
}
|
|
}
|
|
void Write()
|
|
{
|
|
pwm_counter += 2;
|
|
|
|
for (size_t i = 0; i < kNumChannels; i++) {
|
|
if (intensities[0] && lut_led_gamma[intensities[i]] >= pwm_counter) {
|
|
HAL_GPIO_WritePin(kGpioPorts[i], kGpioPins[i], GPIO_PIN_SET);
|
|
} else {
|
|
HAL_GPIO_WritePin(kGpioPorts[i], kGpioPins[i], GPIO_PIN_RESET);
|
|
}
|
|
}
|
|
}
|
|
void set_intensity(uint8_t channel, uint8_t intensity)
|
|
{
|
|
if (channel >= kNumChannels)
|
|
return;
|
|
intensities[channel] = intensity;
|
|
}
|
|
|
|
private:
|
|
uint8_t pwm_counter;
|
|
uint8_t intensities[kNumChannels];
|
|
};
|