Убрать лишний функционал из кода

Froa

✩✩✩✩✩✩✩
8 Дек 2020
2
0
Привет ! Нашел готовое решение под свою электрику в доме . Но мне нужен функционал проще чем реализован в примере . Я пробовал сам урезать код, но уже 3 часа валятся ошибки. Смоделировал схему в tinkercad.
Убрать нужно ИК, интернет морду .
Вот сам код :
C++:
#include <Ethernet.h>

#include "IRremote.h"

IRrecv irrecv (7); // Указываем пин, к которому подключен ИК-приемник

decode_results результаты; // строка для ИК-приёма

// задаем константы

const int ledPin = 6; // номер выхода светодиода

const int buttonPin = 2; // номер входа, подключенный к кнопке

const int Relay1 = 5; // к 5-ому пину подключено реле IN1

 

// переменные

логическое lastButton = LOW; // Переменная для сохранения предыдущего состояния кнопки

логическое currentButton = LOW; // Переменная для сохранения текущего кнопки состояния

логическое ledOn = false; // Текущее состояние светодиода (включен / выключен)

логическое Relay1On = false; // Текущее состояние реле

Строка readString = String (30);

//являем переменную MY_IP со значением 10.36.1.52 - это IP-адрес назначаемый сетевому модулю Arduino

#define MY_IP "10.36.1.52"

// указываем настройки сетевого интерфейса и порт веб-сервера

// mac - это mac-адрес назначаемый сетевому модулю Arduino

byte mac [] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};

// в IPAddress ещё раз указываем IP-адрес

IP-адрес ip (10, 36, 1, 52);

Сервер EthernetServer (80);

void setup () {

  задержка (500);

// Запускаем прием с ИК

irrecv.enableIRIn ();

 

/ *

 * без строки "digitalWrite (Relay1, LOW);" перед "pinMode" при включении

 * ардуины будет происходить кратковременное переключение реле,

 * а значит кратковременно подастся питание, что нам категорически

 * не надо!

 * /

  digitalWrite (Relay1, LOW);

 

  // инициализируем пин, подключенный к светодиоду, как выход

  pinMode (ledPin, ВЫХОД);

  // инициализируем пин, подключенный к кнопке, как вход

  pinMode (buttonPin, ВВОД);

  // инициализируем пин, подключенный к реле, как выход

  pinMode (Relay1, ВЫХОД);

// стартуем сетевой интерфейс

Ethernet.begin (mac, ip);

server.begin ();

Serial.begin (9600);

Serial.print («сервер находится в»);

Serial.println (Ethernet.localIP ());

}

/ *

 * функция сглаживания дребезга

 * принимает в качестве кнопки аргумента предыдущее состояние

 * и выдаёт фактическое.

 * /

boolean debounce (boolean last) {

  логическое значение current = digitalRead (buttonPin); // Считать состояние кнопки

  if (last! = current) // Если изменилось ...

  {

  задержка (5); // ждём 5 мс

  текущий = digitalRead (buttonPin); // Считываем состояние кнопки

  обратный ток; // Возвращаем состояние кнопки

  }

}

void loop () {

  EthernetClient client = server.available ();

  if (client) {

    Serial.println («новый клиент»);

// логическое значение currentLineIsBlank = true;

    while (client.connected ()) {

      if (client.available ()) {

        char c = client.read ();

// Serial.write (c);

if (readString.length () <30) {

readString.concat (с); }

Serial.print (c);

if (c == '\ n') {

// Проверяем включили ли реле и светодиод?

// Уровень = 1 - включен

// Уровень = 0 - выключен

if (readString.indexOf ("Level = 1")> = 0) {

// Включаем реле

digitalWrite (Relay1, HIGH);

Relay1On = true;

// Включаем светодиод

digitalWrite (ledPin, HIGH);

ledOn = true;

} else if (readString.indexOf ("Level = 0")> = 0) {

// Выключаем реле

digitalWrite (Relay1, LOW);

Relay1On = false;

// Выключаем светодиод

digitalWrite (ledPin, LOW);

ledOn = false;

}

 

client.println («HTTP / 1.1 200 ОК»);

client.println ("Content-Type: text / html");

client.println ("Соединение: закрыть"); // соединение будет закрыто после завершения ответа

//client.println("Refresh: 5 "); // обновляем страницу автоматически каждые 5 секунд

client.println ();

client.println ("<! DOCTYPE HTML>");

client.println ("<html>");

client.println ("<meta http-Equiv = 'Content-Type' content = 'text / html; charset = utf-8' />");

client.println ("<head> <meta http-Equiv = \" refresh \ "content = \" 5; URL = http: // "MY_IP" / \ "> </head>");

client.println (F ("<тело>"));

client.println (F ("<center> <head> <title> Relay Control </title> </head>"));

if (Relay1On) {

client.println ("<form method = get name = LED>");

client.println ("<input type = radio name = Level value = 1> Включить");

client.println ("<input type = radio name = Level value = 0 CHECKED> Выключить");

client.println ("<input type = submit value = Применить>");

client.println ("</form>");

client.println ("<font size = '5 ′> Состояние реле:");

client.println ("<font size = '5 ′> Вкл.");

client.println ("<br> </br>");

} else {

client.println ("<form method = get name = LED>");

client.println ("<input type = radio name = Level value = 1 CHECKED> Включить");

client.println ("<input type = radio name = Level value = 0> Выключить");

client.println ("<input type = submit value = Применить>");

client.println ("</form>");

client.println ("<font size = '5 ′> Состояние реле:");

client.println ("<font size = '5 ′> Выкл");

client.println ("<br> </br>");

}

//client.print(F("<input type = button value = 'Light ON' onmousedown = location.href = '/? Level = 1'> "));

//client.println(F("<input type = button value = 'Light OFF' onmousedown = location.href = '/? Level = 0'> <br/> <br/> "));

client.println ("<a href=\"/?Level=1\"\"> Включите свет </a> <br />");

client.println ("<a href=\"/?Level=0\"\"> Выключить свет </a> <br />");

client.println (F ("</center> </body>"));

client.println ("</html>");

readString = "";

// останавливаем веб-клиент

client.stop ();

          }

        }

      }

    }

// часть кода для кнопки, реле и светодиода

currentButton = debounce (lastButton);

if (lastButton == LOW & currentButton == HIGH) // Если гноди (условия для светода на пине 6)

{

  ledOn =! ledOn;

}

if (lastButton == LOW& currentButton == HIGH) // Если разъемие (условие для реле)

{

  Relay1On =! Relay1On;

}

lastButton = currentButton;

digitalWrite (ledPin, ledOn); // Изменить статус состояния светодиода

digitalWrite (Relay1, Relay1On); // Изменить статус состояния реле

// часть кода для ИК, реле и светодиода

if (irrecv.decode (& результаты)) {

int значение = results.value;

Serial.println (значение, HEX);

/ *

 * мы знаем, что у цифры 2 значение сигнала 20DF48B7

 * /

if (value == 0x48B7) // Если нажата кнопка "2"

  {

    ledOn =! ledOn;

    Relay1On =! Relay1On;

  }

irrecv.resume ();

}

}
 

xof

★✩✩✩✩✩✩
24 Окт 2020
123
44
Перевод страницы в браузере нужно было отключить перед копированием, ну или во время написания сообщения.
Я к тому что если автор такой код пытается компилировать, то не мудрено что ничего не получается.
Если нет, то хорошо бы оригинал тогда для начала.
 

IamNikolay

★★★✩✩✩✩
15 Янв 2020
820
175
если убрать интернет и ИК, то останется реле кнопка и светодиод, проще с 0 написать такое)