Помощь подключить кнопку к имеющемуся скетчу

Тема в разделе "Arduino & Shields", создана пользователем artyom.clachin, 6 фев 2017.

  1. Доброго времени суток ардуинщики, второй день мучаюсь над вопросом о подключении кнопки к моему скетчу!
    Помогите пожалуйста, как вписать код с кнопкой в скетч, к примеру у меня уже подключена кнопка (на пин 10) в скетче я могу управлять светодиодами (pin 6,7,8,9) но очень хотелось бы к примеру (пусть это будет pin 6) включать pin 6 через web-интерфейс а выключать с кнопки и обратно!
    Прикрепляю код, буду очень признателен если обьясните мне подробно или вдруг найдутся заметки по улучшению кода в плане компактности буду тоже очень признателен!

    Код (C++):

    #include <EEPROM.h>  
    #include <SPI.h>          
    #include <Ethernet.h>  
    boolean newInfo = 0;      
    byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
    IPAddress ip(192, 168, 0, 99);
    EthernetServer server(80);
    int i; //Для циклов for

    void setup()
    {
      pinMode(6, OUTPUT);    
      pinMode(7, OUTPUT);  
      pinMode(8, OUTPUT);       /
      pinMode(9, OUTPUT);  
      if ( EEPROM.read(4) ) {digitalWrite(6, HIGH);} else {digitalWrite(6, LOW);}
      if ( EEPROM.read(3) ) {digitalWrite(7, HIGH);} else {digitalWrite(7, LOW);}
      if ( EEPROM.read(1) ) {digitalWrite(8, HIGH);} else {digitalWrite(8, LOW);}
      if ( EEPROM.read(2) ) {digitalWrite(9, HIGH);} else {digitalWrite(9, LOW);}

      Ethernet.begin(mac, ip);
      server.begin();
      Serial.begin(9600);
    }


    void loop()
    {

      EthernetClient client = server.available();
      if (client) {                                  
        boolean currentLineIsBlank = true;        
        while (client.connected()) {                  
          if (client.available()) {                
            char c = client.read();            

            if (newInfo && c == ' ') {                
              newInfo = 0;                          
            }

            if (c == '$') {                            
           
            }

            //Проверяем содержание URL - присутствует $1 или $2 Реле №1
            if (newInfo == 1) {                            //если есть новая информация
              Serial.println(c);
              if (c == '2') {                              //и "с" содержит 2
                Serial.println("ON");
                digitalWrite(8, HIGH);                     //гасим реле
                EEPROM.write(1, 1);                        //записываем данные о выключенном реле
              }

              if (c == '1') {                              //если "с" содержит 1
                Serial.println("OFF");
                digitalWrite(8, LOW);                      //то зажигаем реле
                EEPROM.write(1, 0);                        //записываем данные о включенном реле
              }
            }

            //Проверяем содержание URL - присутствует $3 или $4 Реле №2
            if (newInfo == 1) {                            //если есть новая информация
              Serial.println(c);
              if (c == '4') {                              //и "с" содержит 4
                Serial.println("ON");
                digitalWrite(9, HIGH);                     //гасим реле
                EEPROM.write(2, 1);                        //записываем данные о выключенном реле
              }

              if (c == '3') {                              //если "с" содержит 3
                Serial.println("OFF");
                digitalWrite(9, LOW);                      //то зажигаем реле
                EEPROM.write(2, 0);                        //записываем данные о включенном реле
              }
            }

    //Проверяем содержание URL - присутствует $5 или $6 Реле №3
            if (newInfo == 1) {                            //если есть новая информация
              Serial.println(c);
              if (c == '6') {                              //и "с" содержит 6
                Serial.println("ON");
                digitalWrite(7, HIGH);                     //гасим реле
                EEPROM.write(3, 1);                        //записываем данные о выключенном реле
              }

              if (c == '5') {                              //если "с" содержит 5
                Serial.println("OFF");
                digitalWrite(7, LOW);                      //то зажигаем реле
                EEPROM.write(3, 0);                        //записываем данные о включенном реле
              }
            }


    //Проверяем содержание URL - присутствует $7 или $8 Реле №4
            if (newInfo == 1) {                            //если есть новая информация
              Serial.println(c);
              if (c == '8') {                              //и "с" содержит 8
                Serial.println("ON");
                digitalWrite(6, HIGH);                     //гасим реле
                EEPROM.write(4, 1);                        //записываем данные о выключенном реле
              }

              if (c == '7') {                              //если "с" содержит 7
                Serial.println("OFF");
                digitalWrite(6, LOW);                      //то зажигаем реле
                EEPROM.write(4, 0);                        //записываем данные о включенном реле
              }
            }

            if (c == '\n') {                              //если "с" равен символу новой строки
              currentLineIsBlank = true;                  //то начинаем новую строку
            }
            else if (c != '\r') {                         //иначе, если "с" не равен символу возврата курсора на начало строки
              currentLineIsBlank = false;                 //то получаем символ на текущей строке
            }

            if (c == '\n' && currentLineIsBlank) {        //выводим HTML страницу

              // ==============================================Формируем HTML-страницу=================================================
              client.println("HTTP/1.1 200 OK");          //заголовочная информация
              client.println("Content-Type: text/html; charset=utf-8");  //тип и кодировка страницы
              client.println("Connection: close");
              client.println("Refresh: 30");           //автоматическое обновление каждые 30 сек (можно выставить любое удобное в секундах
              client.println();
              client.println("<!DOCTYPE HTML>");          //HTML тип документа

              //===============================================Вывод значений на Web-страницу============================
              client.println("<html>");                                                   //открытие тега HTML
              client.print("<title>Arduino Web Server</title>");                          //название страницы
              client.print("<body>");
              client.print("<H1>Управление освещением через Реле</H1>");                  //заголовк на странице
              client.println("==============================");                           //линия из символов =
              client.println("<br />");     //Переходим на новую строку
              // Далее идут кнопки...
           
              client.print("<table border=\"1\">");
              client.println("<tr>");
              client.println("<th>Выходы</th>");
              client.println("<th>Состояние</th>");
              client.println("</tr>");
              client.println("<tr>");
              client.println("<td>");
              client.print("<div><center>pin 6</center></div>");
              client.print("<a href=\"/$8\"><button>On</button></a>");
              client.print("<a href=\"/$7\"><button>Off</button></a>");
              client.println("</td>");
              if ( EEPROM.read(4) ) {client.println("<td>Включено</td>");} else {client.println("<td>Выключено</td>");}
              client.println("</tr>");
              client.println("<tr>");
              client.println("<td>");
              client.print("<div><center>pin 7</center></div>");
              client.print("<a href=\"/$6\"><button>On</button></a>");
              client.print("<a href=\"/$5\"><button>Off</button></a>");
              client.println("</td>");
              if ( EEPROM.read(3) ) {client.println("<td>Включено</td>");} else {client.println("<td>Выключено</td>");}
              client.println("</tr>");
              client.println("<tr>");
              client.println("<td>");
              client.print("<div><center>pin 8</center></div>");
              client.print("<a href=\"/$2\"><button>On</button></a>");
              client.print("<a href=\"/$1\"><button>Off</button></a>");
              client.println("</td>");
              if ( EEPROM.read(1) ) {client.println("<td>Включено</td>");} else {client.println("<td>Выключено</td>");}
              client.println("</tr>");
              client.print("<tr>");
              client.print("<td>");
              client.print("<div><center>pin 9</center></div>");
              client.print("<a href=\"/$4\"><button>On</button></a>");
              client.print("<a href=\"/$3\"><button>Off</button></a>");
              client.print("</td>");
              if ( EEPROM.read(2) ) {client.println("<td>Включено</td>");} else {client.println("<td>Выключено</td>");}
              client.print("</tr>");
              client.println("</table>");
              client.println("<br />");
              client.print("<a href=\"/$7\&/$5\&/$1\&/$3\"><button>Выключить все</button></a>");
              client.println("<br />");
              client.println("<br />");
              client.print("<a href=\"/$8\&/$6\&/$2\&/$4\"><button>Включить все</button></a>");
              client.println("</body>");
              client.println("</html>");                                                  //закрываем тег HTML
              break;                                                                      //выход из цикла
            }

          }

        }
        delay(1);                                                                         //время на получение новых данных
        client.stop();                                                                    //закрываем соеднение
      }
    }
     
     
  2. В начале и самые большие комментарии удалил, так как лимит в 10000 символов