Светильник с кнопочным переключением

Invoker16
Offline
Зарегистрирован: 17.06.2022

Всем привет, нужно доработать проект так, чтобы после включения светильника его можно было выключить этими же кнопками/кнопкой, а потом включить снова с помощью последовательного нажатия 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;
}

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Думаю, что достаточно добавить в функцию включения проверку состояния светильника и орудовать входом в зависимости от существующего состояния.

Invoker16
Offline
Зарегистрирован: 17.06.2022

как это написать?

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Invoker16 пишет:

как это написать?

Так и пиши - «Учебу прогуливал, ставьте неут.»

Morroc
Offline
Зарегистрирован: 24.10.2016

Я тут скетч биржевого робота пишу, подскажите функцию чтобы деньги зарабатывал )

sadman41
Offline
Зарегистрирован: 19.10.2016

Morroc,

incoming = spending ^ 2

b707
Offline
Зарегистрирован: 26.05.2017

Invoker16 пишет:

как это написать?

если выключено - включить, иначе выключить.

меняете "если" на if, а "иначе" на else - и программа готова.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Morroc пишет:

Я тут скетч биржевого робота пишу, подскажите функцию чтобы деньги зарабатывал )

а что нейросети от Павла Свиридова уже не работают?

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Morroc пишет:

Я тут скетч биржевого робота пишу, подскажите функцию чтобы деньги зарабатывал )


Подписываюсь. Тоже интересно.

Argus19
Offline
Зарегистрирован: 08.05.2022

Invoker16 пишет:

Всем привет, нужно доработать проект так, чтобы после включения светильника его можно было выключить этими же кнопками/кнопкой, а потом включить снова с помощью последовательного нажатия 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 мкФ для антидребезга.

 

Дим-мычъ
Offline
Зарегистрирован: 20.03.2021

Invoker16 пишет:

Всем привет, нужно доработать проект так, чтобы после включения светильника его можно было выключить этими же кнопками/кнопкой, а потом включить снова с помощью последовательного нажатия 2х кнопок. Какую подскажите функцию отключения светильника?

 Как-то не чётко сформулировано...

Invoker16 пишет:
после включения светильника

Каким образом включается светильник?

Invoker16 пишет:
его можно было выключить этими же кнопками/кнопкой

Нажатием любой что-ли? Или обеими сразу?

Как вариант задачи:

1. Нажатие 1-ой кн - разрешить включение/выключение (например : включить панель управления)

2. Нажатие 2-ой кн - включить светильник, запретить включение/выключение

3. Нажатие 1-ой кн - разрешить включение/выключение

4. Нажатие 2-ой кн - выключить светильник, запретить включение/выключение

Вообще, если постараться, можно и 10-ю кнопками включать/выключать, но нужен чёткий алгоритм))

 

Invoker16
Offline
Зарегистрирован: 17.06.2022

Argus19 пишет:

Invoker16 пишет:

Всем привет, нужно доработать проект так, чтобы после включения светильника его можно было выключить этими же кнопками/кнопкой, а потом включить снова с помощью последовательного нажатия 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 мкФ для антидребезга.

 

Спасибо за помощь, можешь дать свои контакты