#include <Arduino.h>
#include <LiquidCrystal.h>
// Пины для RGB светодиода
const int redPin = 0; // Подключен к пину GP0
const int greenPin = 1; // Подключен к пину GP1
const int bluePin = 2; // Подключен к пину GP2
// Пины для кнопок
const int buttonUpPin = 3; // Кнопка "вверх" подключена к пину GP3
const int buttonDownPin = 4; // Кнопка "вниз" подключена к пину GP4
const int buttonSelectPin = 5; // Кнопка "выбор" подключена к пину GP5
// Пины для LCD дисплея
const int rs = 12, en = 11, d4 = 10, d5 = 9, d6 = 8, d7 = 7;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
int selectedOption = 1; // Текущая выбранная опция
void setup() {
// Настройка пинов RGB светодиода
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
// Настройка пинов кнопок
pinMode(buttonUpPin, INPUT_PULLUP);
pinMode(buttonDownPin, INPUT_PULLUP);
pinMode(buttonSelectPin, INPUT_PULLUP);
// Настройка LCD дисплея
lcd.begin(20, 4);
lcd.print("RGB Control Menu");
delay(1000);
lcd.clear();
}
void loop() {
// Отображение меню на LCD дисплее
lcd.setCursor(0, 0);
lcd.print("1. Red 2. Green");
lcd.setCursor(0, 1);
lcd.print("3. Blue 4. Off");
// Обработка нажатий кнопок
if (digitalRead(buttonUpPin) == LOW) {
selectedOption = selectedOption == 1 ? 4 : selectedOption - 1;
delay(200); // Задержка для предотвращения дребезга контактов
} else if (digitalRead(buttonDownPin) == LOW) {
selectedOption = selectedOption == 4 ? 1 : selectedOption + 1;
delay(200); // Задержка для предотвращения дребезга контактов
} else if (digitalRead(buttonSelectPin) == LOW) {
executeSelectedOption();
delay(200); // Задержка для предотвращения дребезга контактов
}
}
// Функция выполнения выбранной опции
void executeSelectedOption() {
switch(selectedOption) {
case 1:
setColor(255, 0, 0); // Красный
break;
case 2:
setColor(0, 255, 0); // Зеленый
break;
case 3:
setColor(0, 0, 255); // Синий
break;
case 4:
setColor(0, 0, 0); // Выключить
break;
default:
lcd.clear();
lcd.print("Invalid option");
delay(1000);
}
}
// Функция установки цвета RGB светодиода
void setColor(int redValue, int greenValue, int blueValue) {
analogWrite(redPin, redValue);
analogWrite(greenPin, greenValue);
analogWrite(bluePin, blueValue);
}