#define RED_PIN 23
#define GREEN_PIN 22
#define BLUE_PIN 21
#define PM_PIN_RED 34
#define PM_PIN_GREEN 35
#define PM_PIN_BLUE 32
#define PM_PIN_BT 4
void setup()
{
// Объявление режимов пинов светодиода
pinMode(RED_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
pinMode(BLUE_PIN, OUTPUT);
}
void loop()
{
// Присваивание значений цветов на каждый канал (0 - 255)
int red = SetColorPalette(analogRead(PM_PIN_RED));
int blue = SetColorPalette(analogRead(PM_PIN_BLUE));
int green = SetColorPalette(analogRead(PM_PIN_GREEN));
// Присваивание яркости на цветовые каналы
red = SetBrightness(red);
blue = SetBrightness(blue);
green = SetBrightness(green);
// Передача цветов на RGB-индикатор
WriteColor(red, blue, green);
// Небольшая задержка для стабильной работы
delay(10);
}
// Метод, изменяющий яркость цветового канала
int SetBrightness(int color)
{
int brightness = SetColorPalette(analogRead(PM_PIN_BT));
return (color * brightness) / 255;
}
// Метод, заставляющий считывать значения потенциометра с 0 до 255 (вместо 0 до 4095).
// присваивает настоящий сигнал цвета
int SetColorPalette(int color)
{
color = map(color, 0, 4095, 0, 255);
color = constrain(color, 0, 255);
return color;
}
// Метод, передающий цвет на индикатор RGB
void WriteColor(int redColor, int blueColor, int greenColor)
{
analogWrite(RED_PIN, redColor);
analogWrite(BLUE_PIN, blueColor);
analogWrite(GREEN_PIN, greenColor);
}