Web + реле

Тема в разделе "Arduino & Shields", создана пользователем jks123, 18 мар 2014.

  1. Alex19

    Alex19 Гуру

    А ок, если в последнем коде будут ошибки, пишите, подправлю.

    UPD. Явных ошибок, в Вашем коде нет.
    И делайте отступы, гляньте на код который я кидал, его читать удобнее и меньше вероятности ошибиться. Код вставляется, кнопка перед кнопкой '' при такой вставке сохраняются отступы, проще понимать.
     
    Последнее редактирование: 19 мар 2014
  2. jks123

    jks123 Нерд

    Ваш последний включает оба выхода но предлогает загрузить файл"дефолт" и вешается. щас путем исключения пытаюсь разобратся. Это как беззубому семечки лузать :D
     
    Последнее редактирование: 19 мар 2014
  3. Alex19

    Alex19 Гуру

    Думаю, что понял в чем, проблема.
    Ни чего разберемся
     
  4. Alex19

    Alex19 Гуру

    А так?
    Код (Text):

    #include "etherShield.h"
    #include "ETHER_28J60.h"

    int anotherOutputPin = 7;
    int outputPin = 6;

    static uint8_t mac[6] = {0x54, 0x55, 0x58, 0x10, 0x00, 0x24}; // this just needs to be unique for your network,
    // so unless you have more than one of these boards
    // connected, you should be fine with this value.

    static uint8_t ip[4] = {192, 168, 0, 150}; // the IP address for your board. Check your home hub
    // to find an IP address not in use and pick that
    // this or 10.0.0.15 are likely formats for an address
    // that will work.

    static uint16_t port = 80; // Use port 80 - the standard for HTTP

    ETHER_28J60 e;

    void setup()
    {
      e.setup(mac, ip, port);
      pinMode(anotherOutputPin, OUTPUT);
      pinMode(outputPin, OUTPUT);
    }

    void loop()
    {
      e.print("<H1>Управление</H1>");

      char* params;
      if (params = e.serviceRequest())
      {
        if (strcmp(params, "?cmdf=on") == 0)
        {
          if (!digitalRead(outputPin))
          {
            digitalWrite(outputPin, HIGH);
          }
        }
        else if (strcmp(params, "?cmds=on") == 0)
        {
          if (!digitalRead(anotherOutputPin))
          {
            digitalWrite(anotherOutputPin, HIGH);
          }
        }
        else if (strcmp(params, "?cmdf=off") == 0)// Modified -- 2011 12 15 # Ben Schueler
        {  
          if (digitalRead(outputPin))
          {
            digitalWrite(outputPin, LOW);
          }
        }
        else if (strcmp(params, "?cmds=off") == 0) // Modified -- 2011 12 15 # Ben Schueler
        {  
          if (digitalRead(anotherOutputPin))
          {
            digitalWrite(anotherOutputPin, LOW);
          }
        }
      }

      if (digitalRead(outputPin))
      {
        // Если вкл. подставляем кнопку вык.
        e.print("<a href='/?cmdf=off'><input type='button' value='Led1 вык.' /></a><br/>");
      }
      else
      {
        // Если вык. подставляем кнопку вк.
        e.print("<a href='/?cmdf=on'><input type='button' value='Led1 вк.' /></a><br/>");
      }
      if (digitalRead(anotherOutputPin))
      {
        // Если вкл. подставляем кнопку вык.
        e.print("<a href='/?cmds=off'><input type='button' value='Led2 вык.' /></a><br/>");
      }
      else
      {
        // Если вык. подставляем кнопку вк.
        e.print("<a href='/?cmds=on'><input type='button' value='Led2 вк.' /></a><br/>");
      }
      e.respond();
    }
     
  5. Alex19

    Alex19 Гуру

    Вот почему он файл, предлагает загрузить. Это вопрос, если не пройдет, скиньте код HTML страницы, просто сохранив ее
     
  6. jks123

    jks123 Нерд

    сори за назойливость вот до чего домучал, только кнопки не все отображаются, через строку управляется только
    #include "etherShield.h"
    #include "ETHER_28J60.h"

    int outputPin = 6;
    int anotherOutputPin = 7;
    static uint8_t mac[6] = {0x54, 0x55, 0x58, 0x10, 0x00, 0x24}; // this just needs to be unique for your network,

    static uint8_t ip[4] = {192, 168, 0, 150}; // IP address for the webserver

    static uint16_t port = 80; // Use port 80 - the standard for HTTP

    ETHER_28J60 e;

    void setup()
    {
    e.setup(mac, ip, port);
    pinMode(anotherOutputPin, OUTPUT);
    pinMode(outputPin, OUTPUT);
    }

    void loop()
    {
    e.print("<H1>jks</H1>");

    char* params;
    if (params = e.serviceRequest())
    {
    if (strcmp(params, "?led1=on") == 0)
    {
    if (!digitalRead(outputPin))
    {
    digitalWrite(outputPin, HIGH);
    }
    }
    else if (strcmp(params, "?led2=on") == 0)
    {
    if (!digitalRead(anotherOutputPin))
    {
    digitalWrite(anotherOutputPin, HIGH);
    }
    }
    else if (strcmp(params, "?led1=off") == 0)// Modified -- 2011 12 15 # Ben Schueler
    {
    if (digitalRead(outputPin))
    {
    digitalWrite(outputPin, LOW);
    }
    }
    else if (strcmp(params, "?led2=off") == 0) // Modified -- 2011 12 15 # Ben Schueler
    {
    if (digitalRead(anotherOutputPin))
    {
    digitalWrite(anotherOutputPin, LOW);
    }
    }
    }

    if (digitalRead(outputPin))
    {
    {
    digitalWrite(outputPin, HIGH);
    e.print("<a href='?led1=off'><button style='border: 1px solid #ff0000; border-left: 10px solid #ff0000' type='button'>LED IS ON</button></a>");
    }
    {
    digitalWrite(outputPin, LOW);
    e.print("<a href='?led1=on'><button style='border: 1px solid #000; border-left: 10px solid #000' type='button'>LED IS OFF</button></a>");
    }
    digitalWrite(outputPin, HIGH);
    e.print("<a href='?led2=off'><button style='border: 1px solid #ff0000; border-left: 10px solid #ff0000' type='button'>LED IS ON</button></a>");
    }
    else if (strcmp(params, "?led2=off") == 0)
    {
    digitalWrite(outputPin, LOW);
    e.print("<a href='?led2=on'><button style='border: 1px solid #000; border-left: 10px solid #000' type='button'>LED IS OFF</button></a>");

    e.respond();
    }
    }
     
  7. Alex19

    Alex19 Гуру

    Уже радует, насколько понимаю, проблема только с кнопками. Их не видно. Само включение работает.

    Значит проблема у нас в e.print, ок, гляну.
     
  8. Alex19

    Alex19 Гуру

    Сначала ошибка

    Код (Text):

    e.respond();
    }
    }
     
    в конце, заменить на
    Код (Text):

    }
    e.respond();
    }
     
     
  9. Alex19

    Alex19 Гуру

    Стоп, что это за код, он не будет даже компилироватся.

    Нет, норм, не возможно нормально помогать, пока Вы вставляете без отступов. Каждый раз надо выставлять, вручную. Отступы и вставка кода, через кнопку код.
     
  10. Megakoteyka

    Megakoteyka Оракул Модератор

    Отступы не надо вручную ставить, Arduino IDE умеет по Ctrl+T это делать.
    А в сети есть куча сервисов для форматирования и раскраски кода, тот же http://prettyprinter.de/, http://pastebin.ru/...
     
  11. Alex19

    Alex19 Гуру

    Вроде так

    Код (Text):

    #include "etherShield.h"
    #include "ETHER_28J60.h"

    int outputPin = 6;
    int anotherOutputPin = 7;
    static uint8_t mac[6] = {0x54, 0x55, 0x58, 0x10, 0x00, 0x24}; // this just needs to be unique for your network,

    static uint8_t ip[4] = {192, 168, 0, 150}; // IP address for the webserver

    static uint16_t port = 80; // Use port 80 - the standard for HTTP

    ETHER_28J60 e;

    void setup()
    {
      e.setup(mac, ip, port);
      pinMode(anotherOutputPin, OUTPUT);
      pinMode(outputPin, OUTPUT);
    }

    void loop()
    {
      e.print("<H1>jks</H1>");

      char* params;
      if (params = e.serviceRequest())
      {
        if (strcmp(params, "?led1=on") == 0)
        {
          if (!digitalRead(outputPin))
          {
            digitalWrite(outputPin, HIGH);
          }
        }
        else if (strcmp(params, "?led2=on") == 0)
        {
          if (!digitalRead(anotherOutputPin))
          {
            digitalWrite(anotherOutputPin, HIGH);
          }
        }
        else if (strcmp(params, "?led1=off") == 0)// Modified -- 2011 12 15 # Ben Schueler
        {
          if (digitalRead(outputPin))
          {
            digitalWrite(outputPin, LOW);
          }
        }
        else if (strcmp(params, "?led2=off") == 0) // Modified -- 2011 12 15 # Ben Schueler
        {
          if (digitalRead(anotherOutputPin))
          {
            digitalWrite(anotherOutputPin, LOW);
          }
        }
      }

      if (digitalRead(outputPin))
      {
        e.print("<a href='?led1=off'><button style='border: 1px solid #ff0000; border-left: 10px solid #ff0000' type='button'>LED 1 IS ON</button></a>");
      }
      else
      {
        e.print("<a href='?led1=on'><button style='border: 1px solid #000; border-left: 10px solid #000' type='button'>LED 1 IS OFF</button></a>");
      }

      if (digitalRead(anotherOutputPin))
      {
        e.print("<a href='?led2=off'><button style='border: 1px solid #ff0000; border-left: 10px solid #ff0000' type='button'>LED 2 IS ON</button></a>");
      }
      else
      {
        e.print("<a href='?led2=on'><button style='border: 1px solid #000; border-left: 10px solid #000' type='button'>LED 2 IS OFF</button></a>");
      }

      e.respond();

      delay(50);
    }
    Да, просто, возможно они и есть. Но вставляется как цитата.
    Надо найти, может где-то есть вставка кода, как это делать.
     
  12. Alex19

    Alex19 Гуру

    Когда нужно вставить код, пожалуйста, пользуйтесь кнопкой вставки кода, она вверху, 5 кнопка с права.
    Или 2 после дискеты. Это в редакторе, в котором Вы печатаете сообщения.

    UPD. Получилось?
    И если нет, какие симптомы?
     
  13. Alex19

    Alex19 Гуру

    А есть на форуме, описание вставки кода?
    Набрал вставка кода, ни чего не нашел.
     
  14. jks123

    jks123 Нерд

    буду знать про вставки
     
  15. Alex19

    Alex19 Гуру

    Это просто удобнее и проще помогающему. Удалось, запустить?
    Какая-то мелочь, а найти не можем:(.

    Но главное не сдаваться :), и все получится!
     
  16. jks123

    jks123 Нерд

    неа, таже фигня с загрузкой файла
     
  17. Alex19

    Alex19 Гуру

    Уже поздно, давайте сделаем по другому. Завтра буду доступен часов после 3 по Москве. Обменяемся скайпом. и сделаем вместе. Тут какая-то мелочь, которую не можем словить.

    UPD. Если победим, опубликуете тут.
     
    Последнее редактирование: 20 мар 2014
  18. Alex19

    Alex19 Гуру

    До завтра, попробуйте еще этот кусок
    Код (Text):

    int outputPin = 6;
    int anotherOutputPin = 7;
    static uint8_t mac[6] = {0x54, 0x55, 0x58, 0x10, 0x00, 0x24}; // this just needs to be unique for your network,

    static uint8_t ip[4] = {192, 168, 0, 150}; // IP address for the webserver

    static uint16_t port = 80; // Use port 80 - the standard for HTTP

    ETHER_28J60 e;

    void setup()
    {
      e.setup(mac, ip, port);
      pinMode(anotherOutputPin, OUTPUT);
      pinMode(outputPin, OUTPUT);
    }

    void loop()
    {
      char* params;
      if (params = e.serviceRequest())
      {
        e.print("<H1>jks</H1>");
        if (strcmp(params, "?led1=on") == 0)
        {
          if (!digitalRead(outputPin))
          {
            digitalWrite(outputPin, HIGH);
          }
        }
        else if (strcmp(params, "?led2=on") == 0)
        {
          if (!digitalRead(anotherOutputPin))
          {
            digitalWrite(anotherOutputPin, HIGH);
          }
        }
        else if (strcmp(params, "?led1=off") == 0)// Modified -- 2011 12 15 # Ben Schueler
        {
          if (digitalRead(outputPin))
          {
            digitalWrite(outputPin, LOW);
          }
        }
        else if (strcmp(params, "?led2=off") == 0) // Modified -- 2011 12 15 # Ben Schueler
        {
          if (digitalRead(anotherOutputPin))
          {
            digitalWrite(anotherOutputPin, LOW);
          }
        }
     
        if (digitalRead(outputPin))
        {
          e.print("<a href='?led1=off'><button style='border: 1px solid #ff0000; border-left: 10px solid #ff0000' type='button'>LED 1 IS ON</button></a>");
        }
        else
        {
          e.print("<a href='?led1=on'><button style='border: 1px solid #000; border-left: 10px solid #000' type='button'>LED 1 IS OFF</button></a>");
        }

        if (digitalRead(anotherOutputPin))
        {
          e.print("<a href='?led2=off'><button style='border: 1px solid #ff0000; border-left: 10px solid #ff0000' type='button'>LED 2 IS ON</button></a>");
        }
        else
        {
          e.print("<a href='?led2=on'><button style='border: 1px solid #000; border-left: 10px solid #000' type='button'>LED 2 IS OFF</button></a>");
        }

        e.respond();
      }
    }
     
  19. jks123

    jks123 Нерд

    ок до связи
     
  20. jks123

    jks123 Нерд

    Код (Text):
    #include <ETHER_28J60.h>

    #include <enc28j60.h>
    #include <etherShield.h>
    #include <ip_arp_udp_tcp.h>
    #include <net.h>


    int outputPinA = 4;
    int outputPinB = 5;
    int outputPinC = 6;
    int anotherOutputPinD = 7;
    int outputPinI = 8;

    static uint8_t mac[6] = {0x54, 0x55, 0x58, 0x10, 0x00, 0x24}; // this just needs to be unique for your network,

    static uint8_t ip[4] = {10, 0, 0, 100}; // IP address for the webserver

    static uint16_t port = 80; // Use port 80 - the standard for HTTP

    ETHER_28J60 e;

    void setup()
    {
      e.setup(mac, ip, port);
      pinMode(anotherOutputPinD, OUTPUT);
      pinMode(outputPinC, OUTPUT);
      pinMode(outputPinI, OUTPUT);
      pinMode(outputPinB, OUTPUT);
      pinMode(outputPinA, OUTPUT);
     
    }

    void loop()
    {
      char* params;
      if (params = e.serviceRequest())
      {
        e.print("<H1>JKS home remote</H1>");
        if (strcmp(params, "?led1=on") == 0)
        {
          if (!digitalRead(outputPinC))
          {
            digitalWrite(outputPinC, HIGH);
          }
        }
        else if (strcmp(params, "?led3=on") == 0)
        {
          if (!digitalRead(outputPinI))
          {
            digitalWrite(outputPinI, HIGH);
          }
        }
        else if (strcmp(params, "?led4=on") == 0)
        {
          if (!digitalRead(outputPinA))
          {
            digitalWrite(outputPinA, HIGH);
          }
        }
        else if (strcmp(params, "?led5=on") == 0)
        {
          if (!digitalRead(outputPinB))
          {
            digitalWrite(outputPinB, HIGH);
          }
        }
       
        else if (strcmp(params, "?led2=on") == 0)
        {
          if (!digitalRead(anotherOutputPinD))
          {
            digitalWrite(anotherOutputPinD, HIGH);
          }
        }
        else if (strcmp(params, "?led1=off") == 0)// Modified -- 2011 12 15 # Ben Schueler
        {
          if (digitalRead(outputPinC))
          {
            digitalWrite(outputPinC, LOW);
          }
        }
       
        else if (strcmp(params, "?led3=off") == 0)// Modified -- 2011 12 15 # Ben Schueler
        {
          if (digitalRead(outputPinI))
          {
            digitalWrite(outputPinI, LOW);
          }
        }
        else if (strcmp(params, "?led4=off") == 0)// Modified -- 2011 12 15 # Ben Schueler
        {
          if (digitalRead(outputPinA))
          {
            digitalWrite(outputPinA, LOW);
          }
        }
        else if (strcmp(params, "?led5=off") == 0)// Modified -- 2011 12 15 # Ben Schueler
        {
          if (digitalRead(outputPinB))
          {
            digitalWrite(outputPinB, LOW);
          }
        }
        else if (strcmp(params, "?led2=off") == 0) // Modified -- 2011 12 15 # Ben Schueler
        {
          if (digitalRead(anotherOutputPinD))
          {
            digitalWrite(anotherOutputPinD, LOW);
          }
        }
     
        if (digitalRead(outputPinC))
        {
          e.print("<a href='?led1=off'><button style='border: 1px solid #ff0000; border-left: 10px solid #ff0000' type='button'>LED  IS ON</button></a>");
        }
        else
        {
          e.print("<a href='?led1=on'><button style='border: 1px solid #000; border-left: 10px solid #000' type='button'>LED  IS OFF</button></a>");
        }
        if (digitalRead(outputPinI))
        {
          e.print("<a href='?led3=off'><button style='border: 1px solid #ff0000; border-left: 10px solid #ff0000' type='button'>LED  IS ON</button></a>");
        }
        else
        {
          e.print("<a href='?led3=on'><button style='border: 1px solid #000; border-left: 10px solid #000' type='button'>LED  IS OFF</button></a>");
        }
        if (digitalRead(outputPinA))
        {
          e.print("<a href='?led4=off'><button style='border: 1px solid #ff0000; border-left: 10px solid #ff0000' type='button'>LED  IS ON</button></a>");
        }
        else
        {
          e.print("<a href='?led4=on'><button style='border: 1px solid #000; border-left: 10px solid #000' type='button'>LED  IS OFF</button></a>");
        }
        if (digitalRead(outputPinB))
        {
          e.print("<a href='?led5=off'><button style='border: 1px solid #ff0000; border-left: 10px solid #ff0000' type='button'>LED  IS ON</button></a>");
        }
        else
        {
          e.print("<a href='?led5=on'><button style='border: 1px solid #000; border-left: 10px solid #000' type='button'>LED  IS OFF</button></a>");
        }
       
        if (digitalRead(anotherOutputPinD))
        {
          e.print("<a href='?led2=off'><button style='border: 1px solid #ff0000; border-left: 10px solid #ff0000' type='button'>LED  IS ON</button></a>");
        }
        else
        {
          e.print("<a href='?led2=on'><button style='border: 1px solid #000; border-left: 10px solid #000' type='button'>LED  IS OFF</button></a>");
        }

        e.respond();
      }
    }