Ethernet shield

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

  1. ivannikita

    ivannikita Нуб

    Добрый день.
    Программирую выключатель с веб интерфейсом и возникла проблема, не понимаю с чем она связана( Надеюсь на помощь.
    Проблема заключается в следующем:
    Имеется Arduino uno, Ethernet shield, и блок реле.
    Написана программа для Arduino

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

        #include <Ethernet.h>

        boolean incoming = 1;
        int numPins = 2;
        int raz=0;
        int a[3];
        int count = 0;
        int pins[] = {3, 5 };    // Пины для реле
        int pinState[] = {0, 0};  // Состояние пинов
        int val=0;
        int val1=0;
        // Enter a MAC address and IP address for your controller below.
        // The IP address will be dependent on your local network:
        byte mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDA, 0x02 };
        IPAddress ip(192,168,0,253); //<<< ENTER YOUR IP ADDRESS HERE!!!

        // Initialize the Ethernet server library
        // with the IP address and port you want to use
        // (port 80 is default for HTTP):
        EthernetServer server(80);

        void setup()
        {

          for (int i = 0; i < numPins; i++)
          {
            pinMode(pins[i], OUTPUT);
            digitalWrite(pins[i], 1);
          }
            digitalWrite(3,HIGH);
       
        val = digitalRead(3);
        Serial.print("val=");
        Serial.print(val);
          // start the Ethernet connection and the server:
          Ethernet.begin(mac, ip);
          server.begin();
          Serial.begin(9600);
        }

        void loop()
        {
          val = digitalRead(3);
          val1 = digitalRead(5);
          // listen for incoming clients
          EthernetClient client = server.available();
          if (client)
          {
            // an http request ends with a blank line
            boolean currentLineIsBlank = true;
            if (client.connected())
            {
                  if (client.available())
                  {
                int dataCount = client.available();
                    if (dataCount>0)
                    {
                     
               
                int c = client.read();
               
                  if(incoming && c == ' ')
                  {
                    incoming = 0;
                  }
               
                  if(c == '$')
                  {
                    incoming = 1;
                  }
             
                  if(incoming == 1)
                  {
                    //Serial.println(c);
               
                    if(c=='1' && val==1)
                    {
                      Serial.println("ON");
                      digitalWrite(3, LOW);
                      Serial.println(val);
                   
                    }
                      else
                        if(c=='1' && val==0)
                          {
                            Serial.println("OFF");
                            digitalWrite(3, HIGH);
                            Serial.println(val);
                                  }
                   
                  }
                        if(incoming == 1)
                        {
                          //Serial.println(c);
               
                          if(c=='2' && val1==1)
                          {
                            Serial.println("ON");
                            digitalWrite(5, LOW);
                            Serial.println(val1);
                          }
                            else
                          if(c=='2' && val1==0)
                          {
                            Serial.println("OFF");
                            digitalWrite(5, HIGH);
                            Serial.println(val1);
                          }
                   
                        }
              }
                            delay (1500);
                            client.stop();
            }
                                            }
          }
        }
    При данной программе при отправлении на ардуино через браузер $1 или $2 ничего не происходит страница просто обновляется. Если закомментировать строки

    Код (Text):
    delay (1500);
    client.stop();
    То реле включается и выключается как положено. НО! страница зависает на постоянной загрузке. Как решить понять не смог. Может кто подскажет?
     
  2. Mitrandir

    Mitrandir Гуру

    А если закоменить только делей?