#define ledPinG 2 //константа для работы с зеленым светодиодом на pin 2
#define ledPinR 4 //константа для работы с красным светодиодом на pin 4
#define switchPole1 7 //константа для работы с первым полюсом DIP-переключателя
#define switchPole2 8 //константа для работы со вторым полюсом DIP-переключателя
#define switchPole3 12 //константа для работы с третьим полюсом DIP-переключателя
void setup() {
pinMode(switchPole1, INPUT_PULLUP); //определяем режим работы pin 7 как вход
pinMode(switchPole2, INPUT_PULLUP); //определяем режим работы pin 8 как вход
pinMode(switchPole3, INPUT_PULLUP); //определяем режим работы pin 12 как вход
pinMode(ledPinG, OUTPUT); //определяем режим работы pin 2 как выход
pinMode(ledPinR, OUTPUT); //определяем режим работы pin 4 как выход
Serial.begin(115200); //инициализация последовательного порта
}
void loop() {
bool sp1 = !digitalRead(switchPole1); //переменная для записи инвертированного состояния 1 полюса переключателя
bool sp2 = !digitalRead(switchPole2); //переменная для записи инвертированного состояния 2 полюса переключателя
bool sp3 = !digitalRead(switchPole3); //переменная для записи инвертированного состояния 3 полюса переключателя
if (!sp2) { //
digitalWrite(ledPinG, LOW); //
} //принудительное отключение светодиодов
if (!sp3) { //на неиспользуемых пинах
digitalWrite(ledPinR, LOW); //
} //
if (sp1) { //условие если разрешено управление (sp1 == 1)
if (sp2) { //условие если включен второй полюс переключателя (sp2 == 1)
digitalWrite(ledPinG, HIGH); //включение зеленого светодиода
Serial.print("Зеленый!\n"); //вывод в терминал сообщения о включении зеленого светодиода
}
if (sp3) { //условие если включен третий полюс переключателя (sp3 == 1)
digitalWrite(ledPinR, HIGH); //включение красного светодиода
Serial.print("Красный!\n"); //вывод в терминал сообщения о включении красного светодиода
}
}
else if (!sp1) { //условие если запрещено управление (sp1 != 1)
digitalWrite(ledPinG, LOW); //отключение зеленого светодиода
digitalWrite(ledPinR, LOW); //отключение красного светодиода
Serial.print("Заблокировано!\n"); //вывод в терминал сообщения о блокировке управления
}
delay(1000); //задержка выполнения цикла на 1 секунду
}