Светильник с кнопочным переключением
- Войдите на сайт для отправки комментариев
Пт, 17/06/2022 - 21:49
Всем привет, нужно доработать проект так, чтобы после включения светильника его можно было выключить этими же кнопками/кнопкой, а потом включить снова с помощью последовательного нажатия 2х кнопок. Какую подскажите функцию отключения светильника?
// C++ code
//
boolean button1WasUp = true;
boolean button2WasUp = true;
boolean o = 0;
boolean i = 0;
void setup() {
pinMode(10, OUTPUT);
digitalWrite(10, LOW);
pinMode(2, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
}
void loop() {
// узнаем, отпущены ли две кнопки сейчас
boolean button1IsUp = digitalRead(2);
boolean button2IsUp = digitalRead(4);
// если кнопки 1 и 2 были отпущены и не отпущены
if ((button1WasUp && !button1IsUp)|| (button2WasUp && !button2IsUp)){
delay(10);
button2IsUp = digitalRead(4);
button1IsUp = digitalRead(2);
if (!button1IsUp) {o = 1; } // при нажатии 1 кнопки переменной o присваивается значение 1
if (!button2IsUp) { i = 1; } // при нажатии 2 кнопки переменной I присваивается значение 1
if (i == o){ digitalWrite(10, HIGH); } // подача питания на светодиод при нажатии на обе кнопки
}
// запоминаем состояние двух кнопок
button1WasUp = button1IsUp;
button2WasUp = button2IsUp;
}

Думаю, что достаточно добавить в функцию включения проверку состояния светильника и орудовать входом в зависимости от существующего состояния.
как это написать?
как это написать?
Так и пиши - «Учебу прогуливал, ставьте неут.»
Я тут скетч биржевого робота пишу, подскажите функцию чтобы деньги зарабатывал )
Morroc,
incoming = spending ^ 2
как это написать?
если выключено - включить, иначе выключить.
меняете "если" на if, а "иначе" на else - и программа готова.
Я тут скетч биржевого робота пишу, подскажите функцию чтобы деньги зарабатывал )
а что нейросети от Павла Свиридова уже не работают?
Я тут скетч биржевого робота пишу, подскажите функцию чтобы деньги зарабатывал )
Подписываюсь. Тоже интересно.
Всем привет, нужно доработать проект так, чтобы после включения светильника его можно было выключить этими же кнопками/кнопкой, а потом включить снова с помощью последовательного нажатия 2х кнопок.
Есть неясности. Что означает последовательное нажатие 2х кнопок? Одна кнопка "вкл", другая "выкл"?
К тому же светодиод можно включать и выключать одной кнопкой, как люстру дома.
Если с кнопками "Вкл." и "Выкл.", то как-то так:
void setup() { pinMode(10, OUTPUT); pinMode(2, INPUT_PULLUP); //Выкл. pinMode(4, INPUT_PULLUP); //Вкл. // digitalWrite(10, LOW); } void loop() { if (digitalRead(4) == LOW) { digitalWrite(10, HIGH); } if (digitalRead(2) == LOW) { digitalWrite(10, LOW); } }Параллельно кнопкам надо подключить конденсаторы, ёмкостью 0,1 мкФ для антидребезга.
Всем привет, нужно доработать проект так, чтобы после включения светильника его можно было выключить этими же кнопками/кнопкой, а потом включить снова с помощью последовательного нажатия 2х кнопок. Какую подскажите функцию отключения светильника?
Как-то не чётко сформулировано...
Каким образом включается светильник?
Нажатием любой что-ли? Или обеими сразу?
Как вариант задачи:
1. Нажатие 1-ой кн - разрешить включение/выключение (например : включить панель управления)
2. Нажатие 2-ой кн - включить светильник, запретить включение/выключение
3. Нажатие 1-ой кн - разрешить включение/выключение
4. Нажатие 2-ой кн - выключить светильник, запретить включение/выключение
Вообще, если постараться, можно и 10-ю кнопками включать/выключать, но нужен чёткий алгоритм))
Всем привет, нужно доработать проект так, чтобы после включения светильника его можно было выключить этими же кнопками/кнопкой, а потом включить снова с помощью последовательного нажатия 2х кнопок.
Есть неясности. Что означает последовательное нажатие 2х кнопок? Одна кнопка "вкл", другая "выкл"?
К тому же светодиод можно включать и выключать одной кнопкой, как люстру дома.
Если с кнопками "Вкл." и "Выкл.", то как-то так:
void setup() { pinMode(10, OUTPUT); pinMode(2, INPUT_PULLUP); //Выкл. pinMode(4, INPUT_PULLUP); //Вкл. // digitalWrite(10, LOW); } void loop() { if (digitalRead(4) == LOW) { digitalWrite(10, HIGH); } if (digitalRead(2) == LOW) { digitalWrite(10, LOW); } }Параллельно кнопкам надо подключить конденсаторы, ёмкостью 0,1 мкФ для антидребезга.
Спасибо за помощь, можешь дать свои контакты