• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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, поможете, методом перетирания флэша, у меня ЕСП испортится )))))
 
Последнее редактирование:
Сверху Снизу