#define BTN_ON_OFF 6
#define BTN_SWITCH 7
#define LED1 13
#define LED2 12
#define LED3 11
#define POT_PIN A0
#define LDR_PIN A1
bool ledOn = false;
bool usePot = true; // true — потенциометр, false — датчик света
bool lastOnOffState = HIGH;
bool lastSwitchState = HIGH;
unsigned long lastDebounceOnOff = 0;
unsigned long lastDebounceSwitch = 0;
const unsigned long debounceDelay = 50;
void setup() {
pinMode(BTN_ON_OFF, INPUT_PULLUP);
pinMode(BTN_SWITCH, INPUT_PULLUP);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
}
void loop() {
// ======== Кнопка ВКЛ/ВЫКЛ ========
int readingOnOff = digitalRead(BTN_ON_OFF);
if (readingOnOff != lastOnOffState) lastDebounceOnOff = millis();
if ((millis() - lastDebounceOnOff) > debounceDelay) {
if (readingOnOff == LOW && lastOnOffState == HIGH) {
ledOn = !ledOn;
if (!ledOn) turnOffLeds();
}
}
lastOnOffState = readingOnOff;
// ======== Кнопка СМЕНЫ РЕЖИМА ========
int readingSwitch = digitalRead(BTN_SWITCH);
if (readingSwitch != lastSwitchState) lastDebounceSwitch = millis();
if ((millis() - lastDebounceSwitch) > debounceDelay) {
if (readingSwitch == LOW && lastSwitchState == HIGH) {
usePot = !usePot;
}
}
lastSwitchState = readingSwitch;
// ======== Управление яркостью ========
if (ledOn) {
int sensorValue = usePot ? analogRead(POT_PIN) : analogRead(LDR_PIN);
// 0–4095 для STM32
int level = map(sensorValue, 0, 4095, 0, 3);
setBrightness(level);
}
}
void setBrightness(int level) {
// Грубая имитация яркости: 0–3
digitalWrite(LED1, level > 0 ? HIGH : LOW);
digitalWrite(LED2, level > 1 ? HIGH : LOW);
digitalWrite(LED3, level > 2 ? HIGH : LOW);
}
void turnOffLeds() {
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
}