• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь WEB server. Как изменить логику кнопки.?

Neznayka

New member
@Neznayka, вы меня конечно извините, но вы сами прочтите что вы написали...
То вам кнопка нужна, то нет.
То digital.Read() не нужен, то вы сами его вставляете в код.

Если хотите реальной помощи, то приведите весь код, и полностью опишите что вы хотите получить.
У меня получается так.
Есть web server на нём 2 кнопки 2 канала, один раз нажал +1, второй раз 0, есть механическая кнопка с таймером, мне надо, чтоб в условие таймера, была внесена кнопка с ВЭБ, не так как у меня по его выходу, ибо переключается через один, а при каждом нажатии ( может html кнопки изменить, либо на смену фронта как то реагировать) тут я не пойму... Дополнительный вопрос, как отказаться от (outpin0 ) , только !sw оставить, мне промежуточный выход в принципе не надо, вывести флаг например ON = flag1_on OFF = flag_off в case 1.

условие таймера
if (digitalRead(INPUT_PIN) == HIGH || digitalRead(INPUT_PIN2) == HIGH && !flag_a) строка || .. .. .. в условие
куда надо вставить ответ с кнопки вэб
.
Код:
html кнопки ( одна,  меняется состояние выхода и её цвет )
***************************************************************************************************************************************8
html += "<p style=\"text-align: center; font-style:normal; font-size:16px; color:#ef0a0a; margin-top: 15px; margin-bottom:10px;\">!!! no push !!!</p>";
  if ( !digitalRead(outpin0))
  {
    html += "<div style=\"text-align: center; font-size: 13px; font-weight:bold; \"><a href='sw_1?sw_1=off' style='display: inline-block; color:#d1b3bf; width: 120px; height:25px; -moz-border-radius:15px; border-radius:15px; background-color:#722454;   \'> test 1 </a></div>";
  } else {
    html += "<div style=\"text-align: center; font-size: 13px; font-weight:bold; \"><a href='sw_1?sw_1=on'  style='display: inline-block; color:#d1b3bf; width: 120px; height:25px; -moz-border-radius:15px; border-radius:15px; background-color:#765454;  \'>test 2</a></div>";
**************************************************************************************************************************************
к ней
******************************************************
void SW(byte num, bool sw) {
  switch ( num ) {
   case 1: digitalWrite(outpin0, !sw); break;  // с WEB кнопки
  }
}
*******************************************************
и
********************************************
if (server.arg("sw_1")== "on"){
    SW(1, HIGH);
  }
  if (server.arg("sw_1")== "off"){
    SW(1, LOW);

  }
*********************************************
 

Neznayka

New member
Нашёл более удачный таймер как одновибратор, по digitalRead(outpin0) работает, но теперь не могу понять куда в него вставить
digitalRead(INPUT_PIN) == HIGH || digitalRead(INPUT_PIN2) == HIGH,
Код:
///////секция 2////////////////////////////////////////////////
byte pressed_2 = digitalRead(outpin0);
if (pressed_2)
{
  if (pressed_2 != lastPress_2)
   {
   digitalWrite(outpin2, HIGH);
   startTime_2 = millis();
   }
}
lastPress_2 = pressed_2;
if (digitalRead(outpin2))
{
  if (millis() - startTime_2 >= interval_2)
  {
  digitalWrite(outpin2, LOW);
}
}
///////секция 2////////////////////////////////////////////////
Пробовал так
if (pressed_2 != lastPress_2 || digitalRead(INPUT_PIN) == HIGH || digitalRead(INPUT_PIN2) == HIGH)
и так
if (pressed_2 != lastPress_2)
{
if (digitalRead(INPUT_PIN) == HIGH || digitalRead(INPUT_PIN2) == HIGH)
{
не работает, меня вводит не стандартное начало у этого милиса - byte pressed_2 = digitalRead(.....);
 

Neznayka

New member
Сам спросил - сам ответил ПО ТАЙМЕРУ пока только
Работает так, методом логики и тыка научного получилось
.......
byte pressed_2 = digitalRead(outpin0);
byte pressed_1 = digitalRead(INPUT_PIN2);
if (pressed_2 || pressed_1)
{
if (pressed_2 != lastPress_2 || pressed_1 != lastPress_1)
{
digitalWrite(outpin2, HIGH);
..........

Совсем было бы не плохо добавить принудительный сброс долгим удержанием этой же INPUT_PIN2, поможете, методом перетирания флэша, у меня ЕСП испортится )))))
 
Последнее редактирование:
Сверху Снизу