#define PIN_LED_W 5 #define PIN_LED_Y 2 #define ON_BUTTON 14 #define MODE_BUTTON 15 #define PIN_PHOTO_SENSOR 4 boolean onbuttonWasUp = true; boolean modebuttonWasUp = true; boolean ledEnabled = false; boolean onoff ; int mode; void setup() { Serial.begin(9600); pinMode(5, OUTPUT); pinMode(2, OUTPUT); pinMode(4, INPUT); pinMode(15, INPUT_PULLUP); pinMode(14, INPUT_PULLUP); } void loop() { // int val = analogRead(4); // Serial.println(val); // int ledPower = map(val, 0, 1023, 255, 0); // Преобразуем полученное значение в уровень PWM-сигнала. Чем меньше значение освещенности, тем меньше мощности мы должны подавать на светодиод через ШИМ. // ledPower = ledEnabled; boolean onbuttonIsUp = digitalRead(14); // узнаем, отпущена ли кнопка сейчас if (onbuttonWasUp && !onbuttonIsUp); // если кнопка была отпущена и не отпущена сейчас { delay(10); // исключаем дребезг контактов тактовой кнопки onbuttonIsUp = digitalRead(14); // и считываем сигнал с кнопки снова if (!onbuttonIsUp) { // если кнопка нажата, то переворачиваем сигнал светодиода ledEnabled = !ledEnabled; onoff = !ledEnabled; digitalWrite(5, ledEnabled); digitalWrite(2, ledEnabled); } } onbuttonWasUp = onbuttonIsUp; // запоминаем состояние кнопки для новой итерации delay(200); boolean modebuttonIsUp = digitalRead(15); // узнаем, отпущена ли кнопка сейчас if (modebuttonWasUp && !modebuttonIsUp); // если кнопка была отпущена и не отпущена сейчас { delay(10); // исключаем дребезг контактов тактовой кнопки modebuttonIsUp = digitalRead(15); // и считываем сигнал с кнопки снова if (!modebuttonIsUp && onoff == false) { mode = mode + 1;//счетчик позиции бега увеличиваем на 1 if (mode == 4) {mode = 0;}//если достигнут предел счетчика то сбрасываем switch (mode)//оператор выбора, выполняет свой блок в зависимости от значения переменной { case 0: digitalWrite(2,ledEnabled); digitalWrite(5,ledEnabled); return; case 1: digitalWrite(2,ledEnabled); digitalWrite(5,LOW); return; case 2: digitalWrite(2,LOW); digitalWrite(5,ledEnabled); return; } } } } /* int val = analogRead(4); Serial.println(val); if (val < 300) { digitalWrite(2, HIGH); } else { digitalWrite(2, LOW); } if (val > 300) { digitalWrite(5, HIGH); } else { digitalWrite(5, LOW); } */