// Массив номеров пинов, к которым подключены светодиоды
const uint8_t led_pins[] = {2, 3, 4, 5, 6, 7, 8, 9};
void setup()
{
// Устанавливаем все пины светодиодов как выходные
for (uint8_t i = 0; i < 8; i++)
pinMode(led_pins[i], OUTPUT);
// Начинаем серийное соединение с скоростью 9600 бод
Serial.begin(9600);
Serial.println("Для управления светодиодами введите \"led_i=on\\off\", где i - номер светодиода от 1 до 8.");
}
void loop()
{
// Если есть данные в серийном порту
if (Serial.available())
{
// Читаем строку до символа новой строки
String input = Serial.readStringUntil('\n');
// Находим позицию знака равно
int separator = input.indexOf('=');
// Извлекаем номер светодиода и преобразуем его в число
int led_num = input.substring(4, separator).toInt();
// Извлекаем состояние светодиода
String led_state = input.substring(separator + 1);
// Переключаем светодиод
toggle_led(led_num, led_state);
}
}
void toggle_led(int led_num, String led_state)
{
bool state;
// Определяем состояние светодиода на основе входной строки
if (led_state == "on")
state = HIGH;
else if (led_state == "off")
state = LOW;
else
{
// Выводим ошибку, если состояние не является "on" или "off"
Serial.println("Ошибка: Неверное состояние светодиода.");
return;
}
// Проверяем, что номер светодиода находится в допустимом диапазоне
if (led_num < 1 || led_num > 8)
{
Serial.println("Ошибка: Неверный номер светодиода.");
return;
}
// Переключаем светодиод на основе полученного состояния
digitalWrite(led_pins[led_num], state);
// Выводим информацию о светодиоде
Serial.print("Светодиод №");
Serial.print(led_num);
Serial.print(" ");
Serial.println(state ? "включен." : "выключен.");
}