Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 24 gru 2024, o 01:48


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 2 ] 
Autor Wiadomość
PostNapisane: 23 lis 2015, o 21:48 
Offline
Nowy

Dołączył(a): 18 lip 2014
Posty: 5
Pomógł: 0

Witam,
chciałem zrobić sterowanie przekaźnikami oraz odczyt z kilku czujników przez internet.
Użyłem do tego Arduino Leonardo oraz rutera Huawei B683.

Problem polega na tym, że serwer jest niestabilny, czasem się wyłączony, czasem przytnie itp.

Z czego może wynikać problem? Użyłem składni przestarzałego HTML-a?
Dodam, że WebSerwer z przykładu Arduino działa bez zarzutu.

Mam jeszcze problem ze sterowaniem z przekaźnikiem.
Mianowicie gdy przerzucam z Off na On wszystko jest ok. Problem pojawia się, gdy przełączam z On na Off. Pierwszy raz gdy klikam On na Off nic się nie dzieje, dopiero za drugim razie przeskakuje na Off. Gdzie może być przyczyna?


mój kod :
Kod:
#include <SPI.h>
#include <Ethernet.h>

void Processcheckbox(EthernetClient cl);

String HTTP_req;          // stores the HTTP request
volatile boolean LED_status = 0;   // state of LED, off by default
volatile boolean LED_status2 = 0;


byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
IPAddress ip(192, 168, 1, 110);

// 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() {
  // Open serial communications and wait for port to open:
  //pinMode(2,OUTPUT);
  //pinMode(3,OUTPUT);
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }


  // start the Ethernet connection and the server:
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
}


void loop() {
  // listen for incoming clients
  EthernetClient client = server.available();
  if (client) {
    Serial.println("new client");
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        HTTP_req += c;
        Serial.write(c);
        // if you've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so you can send a reply
        if (c == '\n' && currentLineIsBlank) {
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");  // the connection will be closed after completion of the response
          client.println("Refresh: 5");  // refresh the page automatically every 5 sec
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          client.println("<title>");
          client.println("Moj projekt");
          client.println("</title>");
          client.println("<head><h1>");
          client.println("Czujniki");
          client.println("</h1></head>");
          client.println("
");
          // output the value of each analog input pin
          for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
            int sensorReading = analogRead(analogChannel);
            client.print("analog input ");
            client.print(analogChannel);
            client.print(" is ");
            client.print(sensorReading);
            client.println("
");
          }
         
         
          client.println("<h1>");
          client.println("Przekazniki");
          client.println("</h1>");
          client.println("<p>Przekaznik nr.1</p>");
                    client.println("<form method=\"get\">");
                    ProcessCheckbox(client);
                    client.println("</form>");
                   
          client.println("<p>Przekaznik nr.2</p>");
                    client.println("<form method=\"get\">");
                    ProcessCheckbox2(client);
                    client.println("</form>");
         
          client.println("</html>");
          Serial.print(HTTP_req);
                    HTTP_req = "";
          break;
        }
       
        if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        }
        else if (c != '\r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    // close the connection:
    client.stop();
    Serial.println("client disconnected");
  }
}


void ProcessCheckbox(EthernetClient cl)
{
    if (HTTP_req.indexOf("LED2=2") > -1) {  // see if checkbox was clicked
        // the checkbox was clicked, toggle the LED
        //if (LED_status) {
            LED_status = 1;
        }
        else {
            LED_status = 0;
        }
    //}
   
    if (LED_status) {    // switch LED on
        digitalWrite(2, HIGH);
        // checkbox is checked
        cl.println("<input type=\"checkbox\" name=\"LED2\" value=\"2\" \
        onclick=\"submit();\" checked>On");
    }
    else {              // switch LED off
        digitalWrite(2, LOW);
        // checkbox is unchecked
        cl.println("<input type=\"checkbox\" name=\"LED2\" value=\"2\" \
        onclick=\"submit();\">Off");
    }
}

void ProcessCheckbox2(EthernetClient cl)
{
    if (HTTP_req.indexOf("LED2=3") > -1) {  // see if checkbox was clicked
        // the checkbox was clicked, toggle the LED
        //if (LED_status) {
            LED_status2 = 1;
        }
        else {
            LED_status2 = 0;
        }
    //}
   
    if (LED_status2) {    // switch LED on
        digitalWrite(3, HIGH);
        // checkbox is checked
        cl.println("<input type=\"checkbox\" name=\"LED2\" value=\"3\" \
        onclick=\"submit();\" checked>On");
    }
    else {              // switch LED off
        digitalWrite(3, LOW);
        // checkbox is unchecked
        cl.println("<input type=\"checkbox\" name=\"LED2\" value=\"3\" \
        onclick=\"submit();\">Off");
    }
}


Z góry dziękuje za pomoc



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 lis 2015, o 00:27 
Offline
Moderator zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 18 lip 2012
Posty: 3206
Lokalizacja: Kraków - obok FAB5 ATMEL'a
Pomógł: 91

topic7402.html

_________________
http://www.jaglarz.info



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 2 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO