Hulp bij programeren webserver en arduino ethernetshield.

Projecten die niet passen in bovenstaande onderwerpen
Berichten: 22
Geregistreerd: 02 Dec 2013, 05:52

Hulp bij programeren webserver en arduino ethernetshield.

Berichtdoor KRISKRAS9660 » 04 Apr 2014, 16:20

Dag ,
Graag zou ik wat hulp kunnen gebruiken bij het programeren van mijn webpagina en mijn arduino.
Het zit zo,ik heb al voor elkaar gekregen dat ik wat uitgangen op mijn arduino kan aan of uit sturen via mijn webpagina.
Maar nu zit ik vast,
ik heb mijn program opbouwend geprogrammeerd en telkens getest.
De aansturing van LED1 tot LED7 loopt goed en kan ik telkens via mijn webpagina bedienen.
Als ik LED8 (toets 5) bij programeer dan is of dat mijn arduino niet meer met de server communiceert.
wat moet ik doen om verder te kunnen iemand een idee

zie hieronder de code van mijn webpagina en arduino.
alvast bedankt.

Code: Alles selecteren
arduino



/*--------------------------------------------------------------
  Program:      Domotica_Poort / verwarming

  Description:  (Arduino web server dat 3 temperaturen weergeeft.)
      onder voorbehoud...
                Bediening van 3 uitgangen die vertraagt uitschakelen.
      Bediening die poort openstuurt.

                The web page is stored on the micro SD card.
 
  Hardware:     Arduino Uno and official Arduino Ethernet
                shield. Should work with other Arduinos and
                compatible Ethernet shields.
                2Gb micro SD card formatted FAT16.
                A2 to A5 analog inputs,
                pins 2, 3 and 5,6,7,8,9 for the switches outputs(LEDs).
               
  Software:     Developed using Arduino 1.0.5 software
                Should be compatible with Arduino 1.0 +
                SD card contains web page called index.htm
 
 

--------------------------------------------------------------*/

#include <SPI.h>
#include <Ethernet.h>
#include <SD.h>
#include <elapsedMillis.h>


//Timers Relaisuitgangen
//----------------------
elapsedMillis timer0;
#define interval0 6000        // the interval Timer0 in mS
boolean timer0Fired;

elapsedMillis timer1;
#define interval1 6000        // the interval Timer1 in mS
boolean timer1Fired;

elapsedMillis timer2;
#define interval2 6000        // the interval Timer2 in mS
boolean timer2Fired;


//Timers Poort
//------------
elapsedMillis timer3;
#define interval3 2000        // the interval Timer3 in mS
boolean timer3Fired;

elapsedMillis timer4;
#define interval4 2000        // the interval Timer4 in mS
boolean timer4Fired;

elapsedMillis timer5;
#define interval5 2000        // the interval Timer5 in mS
boolean timer5Fired;

elapsedMillis timer6;
#define interval6 2000        // the interval Timer6 in mS
boolean timer6Fired;



// size of buffer used to capture HTTP requests
#define REQ_BUF_SZ   60

// MAC address from Ethernet shield sticker under board
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0E, 0x0D, 0xC7 };
byte gateway[] = { 192, 168, 0, 1 };                   
byte subnet[] = { 255, 255, 255, 0 };                 
IPAddress ip(192, 168, 0, 20);     // IP address, may need to change depending on network
EthernetServer server(80);         // create a server at port 80
File webFile;                      // the web page file on the SD card
char HTTP_req[REQ_BUF_SZ] = {0};   // buffered HTTP request stored as null terminated string
char req_index = 0;                // index into HTTP_req buffer
boolean LED_state[8] = {0};         // stores the states of the LEDs


void setup()
{
    // disable Ethernet chip
    pinMode(10, OUTPUT);
    digitalWrite(10, HIGH);
   
    Serial.begin(9600);       // for debugging
   
    // initialize SD card
    Serial.println("Initializing SD card...");
    if (!SD.begin(4)) {
        Serial.println("ERROR - SD card initialization failed!");
        return;    // init failed
    }
    Serial.println("SUCCESS - SD card initialized.");
    // check for index.htm file
    if (!SD.exists("index.htm")) {
        Serial.println("ERROR - Can't find index.htm file!");
        return;  // can't find index file
    }
    Serial.println("SUCCESS - Found index.htm file.");

//Pinconfiguratie Arduino Ethernetshield
//--------------------------------------
    pinMode(0, INPUT);       //Rx serieel
    pinMode(1, INPUT);       //Tx serieel   
    pinMode(2, INPUT);       //Boiler aan /uit toets
    //pinMode(3, INPUT);       
    //pin 4 for SD card
    //pinMode(5, INPUT);     //Toestand poort open/dicht
    pinMode(6, OUTPUT);        //Poort aansturing
    pinMode(7, OUTPUT);      //Verwarming living
    pinMode(8, OUTPUT);      //Verwarming badkamer
    pinMode(9, OUTPUT);      //Boiler
    // pin 10,11,12,13 for ethernet
    // A0 analoge ingang 0
    // A1 analoge ingang 1
    // A2 analoge ingang 2
    // A3 analoge ingang 3 ->//Temperatuur meter DHT22_1
    // A4 analoge ingang 4 ->//Temperatuur meter DHT22_2
    // A5 analoge ingang 5 ->//Temperatuur meter DHT22_3
       
    Ethernet.begin(mac, ip);  // initialize Ethernet device
    server.begin();           // start to listen for clients
}

void loop()
{
    EthernetClient client = server.available();  // try to get client

    if (client) {  // got client?
        boolean currentLineIsBlank = true;
        while (client.connected()) {
            if (client.available()) {   // client data available to read
                char c = client.read(); // read 1 byte (character) from client
                // limit the size of the stored received HTTP request
                // buffer first part of HTTP request in HTTP_req array (string)
                // leave last element in array as 0 to null terminate string (REQ_BUF_SZ - 1)
                if (req_index < (REQ_BUF_SZ - 1)) {
                    HTTP_req[req_index] = c;          // save HTTP request character
                    req_index++;
                }
                // last line of client request is blank and ends with \n
                // respond to client only after last line received
                if (c == '\n' && currentLineIsBlank) {
                    // send a standard http response header
                    client.println("HTTP/1.1 200 OK");
                    // remainder of header follows below, depending on if
                    // web page or XML page is requested
                    // Ajax request - send XML file
                    if (StrContains(HTTP_req, "ajax_inputs")) {
                        // send rest of HTTP header
                        client.println("Content-Type: text/xml");
                        client.println("Connection: keep-alive");
                        client.println();
                        SetLEDs();
                        // send XML file containing input states
                        XML_response(client);
                    }
                    else {  // web page request
                        // send rest of HTTP header
                        client.println("Content-Type: text/html");
                        client.println("Connection: keep-alive");
                        client.println();
                        // send web page
                        webFile = SD.open("index.htm");        // open web page file
                        if (webFile) {
                            while(webFile.available()) {
                                client.write(webFile.read()); // send web page to client
                            }
                            webFile.close();
                        }
                    }
                    // display received HTTP request on serial port
                    Serial.print(HTTP_req);
                    // reset buffer index and all buffer elements to 0
                    req_index = 0;
                    StrClear(HTTP_req, REQ_BUF_SZ);
                    break;
                }
                // every line of text received from the client ends with \r\n
                if (c == '\n') {
                    // last character on line of received text
                    // starting new line with next character read
                    currentLineIsBlank = true;
                }
                else if (c != '\r') {
                    // a text character was received from client
                    currentLineIsBlank = false;
                }
            } // end if (client.available())
        } // end while (client.connected())
        delay(1);      // give the web browser time to receive the data
        client.stop(); // close the connection
    } // end if (client)
}

// checks if received HTTP request is switching on/off LEDs
// also saves the state of the LEDs
void SetLEDs(void)
    {
       //LED 1 (pin 7) VERWARMING_LIVING
       //-------------------------------
     if (StrContains(HTTP_req, "LED1=1")) {               //webdrukknop VERWARMING_LIVING
        timer0Fired = false;
        timer0 = 0;                                       // clear the timer0 at the end of startup
        LED_state[0] = 1;                                 // VERWARMING_LIVING ingeschakeld
        digitalWrite(7, HIGH);
    }
        else if ((StrContains(HTTP_req, "LED1=0"))||((!timer0Fired) && (timer0 > interval0))){        //webdrukknop VERWARMING_LIVING             
        LED_state[0] = 0;                                 // VERWARMING_LIVING uitgeschakeld
        digitalWrite(7, LOW);
    }
     // LED 2 (pin 8) VERWARMING_BADKAMER
     //----------------------------------
     if (StrContains(HTTP_req, "LED2=1")){                //webdrukknop VERWARMING_BADKAMER 
        timer1Fired = false;
        timer1 = 0;                                       // clear the timer1 at the end of startup
        LED_state[1] = 1;                                 // VERWARMING_BADKAMER ingeschakeld
        digitalWrite(8, HIGH);
    }
        else if ((StrContains(HTTP_req, "LED2=0"))||((!timer1Fired) && (timer1 > interval1))){        //webdrukknop VERWARMING_BADKAMER
        LED_state[1] = 0;                                 // VERWARMING_BADKAMER uitgeschakeld
        digitalWrite(8, LOW);
    }
   
      // LED 3 (pin 9)BOILER
      //--------------------
        int Boilerknop = 0;
        Boilerknop = digitalRead(2);                      // read the input pin A2 alarm drukknop
     if ((StrContains(HTTP_req, "LED3=1"))||((LED_state[0] == 0)&&(Boilerknop == HIGH))){       //webdrukknop BOILER 
        timer2Fired = false;
        timer2 = 0;                                       // clear the timer2 at the end of startup
        LED_state[2] = 1;                                 // BOILER ingeschakeld
        digitalWrite(9, HIGH);
    }
        else if ((StrContains(HTTP_req, "LED3=0"))||((LED_state[0] == 1)&&(Boilerknop == HIGH))||((!timer2Fired) && (timer2 > interval2))){   //webdrukknop BOILER             
        LED_state[2] = 0;                                 // BOILER uitgeschakeld
        digitalWrite(9, LOW);
    }
       //LED 4 Keyboard "1"
       //------------------
     if (StrContains(HTTP_req, "LED4=1")) {               //webdrukknop Poort

        LED_state[3] = 1;                                 // Poort aangestuurd
        digitalWrite(6, HIGH);  //test
    }
        else {                                            //webdrukknop Poort               
        LED_state[3] = 0;                                 // Einde Poort aangestuurd
        digitalWrite(6, LOW);  //test
    }
       //LED 5 Keyboard "2"
       //------------------
     if (StrContains(HTTP_req, "LED5=1")) {               

        LED_state[4] = 1;                                 
       
    }
        else {                     
        LED_state[4] = 0;                                 
       
    }
      //LED 6 Keyboard "3"
       //------------------
     if (StrContains(HTTP_req, "LED6=1")) {               

        LED_state[5] = 1;                                 
       
    }
        else {                     
        LED_state[5] = 0;                                 
       
    }
       //LED 7 Keyboard "4"
       //------------------
     if (StrContains(HTTP_req, "LED7=1")) {               

        LED_state[6] = 1;                                 
      ;
    }
        else {                     
        LED_state[6] = 0;                                 
       
    }
       //LED 8 Keyboard "5"
       //------------------
     if (StrContains(HTTP_req, "LED8=1")) {               

        LED_state[7] = 1;                                 
       
    }
        else {                     
        LED_state[7] = 0;                                 
       
    }
}

// send the XML file with analog values.
void XML_response(EthernetClient cl)
{
    int analog_val;            // stores value read from analog inputs
    int count;                 // used by 'for' loops
   
    cl.print("<?xml version = \"1.0\" ?>");
    cl.print("<inputs>");
    // read analog inputs
    for (count = 2; count <= 5; count++) { // A2 to A5
        analog_val = analogRead(count);
        cl.print("<analog>");
        cl.print(analog_val);
        cl.println("</analog>");
    }
   
    // status output PIN7
    //-------------------
    cl.print("<LED>");
    if (LED_state[0]) {
        cl.print("on");
    }
    else {
        cl.print("off");
    }
    cl.println("</LED>");
   
    // status output PIN8
    //-------------------
    cl.print("<LED>");
    if (LED_state[1]) {
        cl.print("on");
    }
    else {
        cl.print("off");
    }
    cl.println("</LED>");
   
    // status output PIN9
    //-------------------
    cl.print("<LED>");
    if (LED_state[2]) {
        cl.print("on");
    }
    else {
        cl.print("off");
    }
    cl.println("</LED>");

   // status Keyboard "1"
    //-------------------
    cl.print("<LED>");
    if (LED_state[3]) {
        cl.print("on");
    }
    else {
        cl.print("off");
    }
    cl.println("</LED>");

   // status Keyboard "2"
    //-------------------
    cl.print("<LED>");
    if (LED_state[4]) {
        cl.print("on");
    }
    else {
        cl.print("off");
    }
    cl.println("</LED>");

   // status Keyboard "3"
    //-------------------
    cl.print("<LED>");
    if (LED_state[5]) {
        cl.print("on");
    }
    else {
        cl.print("off");
    }
    cl.println("</LED>");
   
    // status Keyboard "4"
    //-------------------
    cl.print("<LED>");
    if (LED_state[6]) {
        cl.print("on");
    }
    else {
        cl.print("off");
    }
    cl.println("</LED>");
   
    // status Keyboard "5"
    //-------------------
    cl.print("<LED>");
    if (LED_state[7]) {
        cl.print("on");
    }
    else {
        cl.print("off");
    }
    cl.println("</LED>");
 
    cl.print("</inputs>");
}

// sets every element of str to 0 (clears array)
void StrClear(char *str, char length)
{
    for (int i = 0; i < length; i++) {
        str[i] = 0;
    }
}

// searches for the string sfind in the string str
// returns 1 if string found
// returns 0 if string not found
char StrContains(char *str, char *sfind)
{
    char found = 0;
    char index = 0;
    char len;

    len = strlen(str);
   
    if (strlen(sfind) > len) {
        return 0;
    }
    while (index < len) {
        if (str[index] == sfind[found]) {
            found++;
            if (strlen(sfind) == found) {
                return 1;
            }
        }
        else {
            found = 0;
        }
        index++;
    }

    return 0;
}


--------------------------------------------------------------------------------------

Code: Alles selecteren
 webpagina
<!DOCTYPE html>
<html>
    <head>
   <BODY bgcolor='silver'>     <title>DOMOTICA_POORT</title>
        <script>
      strLED1 = "";
      strLED2 = "";
      strLED3 = "";
      strLED4 = "";
      strLED5 = "";
      strLED6 = "";
      strLED7 = "";
      strLED8 = "";
      var LED1_state = 0;
      var LED2_state = 0;      
      var LED3_state = 0;
      var LED4_state = 0;
      var LED5_state = 0;
      var LED6_state = 0;
      var LED7_state = 0;
      var LED8_state = 0;
      function GetArduinoIO()
      {
         nocache = "&nocache=" + Math.random() * 1000000;
         var request = new XMLHttpRequest();
         request.onreadystatechange = function()
         {
            if (this.readyState == 4) {
               if (this.status == 200) {
                  if (this.responseXML != null) {
      // XML file received - contains analog values, switch values and LED states
      var count;
      // get analog inputs
      //------------------
      var num_an = this.responseXML.getElementsByTagName('analog').length;
         for (count = 0; count < num_an; count++) {
            document.getElementsByClassName("analog")[count].innerHTML =
            this.responseXML.getElementsByTagName('analog')[count].childNodes[0].nodeValue;
            }

           // get switch inputs
      //------------------
                     
            // LED 1 DRUKTOETS VERWARMING LIVING
            //----------------------------------
            if (this.responseXML.getElementsByTagName('LED')[0].childNodes[0].nodeValue === "on") {
               document.getElementById("LED1").innerHTML = "VERWARMING_LIVING is 45' ON ";
               LED1_state = 1;
            }
            else {
               document.getElementById("LED1").innerHTML = "VERWARMING_LIVING is OFF";
               LED1_state = 0;
            }
                     
            // LED 2 DRUKTOETS VERWARMING BADKAMER
            //------------------------------------
            if (this.responseXML.getElementsByTagName('LED')[1].childNodes[0].nodeValue === "on") {
               document.getElementById("LED2").innerHTML = "VERWARMING_BADKAMER is 45' ON ";
               LED2_state = 1;
            }
            else {
               document.getElementById("LED2").innerHTML = "VERWARMING_BADKAMER is OFF";
               LED2_state = 0;
            }
                     
            // LED 3 DRUKTOETS BOILER
            //-----------------------
            if (this.responseXML.getElementsByTagName('LED')[2].childNodes[0].nodeValue === "on") {
               document.getElementById("LED3").innerHTML = "BOILER is 45' ON";
               LED3_state = 1;
            }
            else {
               document.getElementById("LED3").innerHTML = "BOILER is OFF";
               LED3_state = 0;
            }

            // LED 4 DRUKTOETS Poort "1"
            //-------------------------
            if (this.responseXML.getElementsByTagName('LED')[3].childNodes[0].nodeValue === "on") {
               document.getElementById("LED4").innerHTML = "1";
               LED4_state = 1;
            }
            else {
               document.getElementById("LED4").innerHTML = "1";
               LED4_state = 0;
            }
            // LED 5 DRUKTOETS Poort "2"
            //-------------------------
            if (this.responseXML.getElementsByTagName('LED')[4].childNodes[0].nodeValue === "on") {
               document.getElementById("LED5").innerHTML = "2";
               LED5_state = 1;
            }
            else {
               document.getElementById("LED5").innerHTML = "2";
               LED5_state = 0;
            }
            // LED 6 DRUKTOETS Poort "3"
            //-------------------------
            if (this.responseXML.getElementsByTagName('LED')[5].childNodes[0].nodeValue === "on") {
               document.getElementById("LED6").innerHTML = "3";
               LED6_state = 1;
            }
            else {
               document.getElementById("LED6").innerHTML = "3";
               LED6_state = 0;
            }
            // LED 7 DRUKTOETS Poort "4"
            //-------------------------
            if (this.responseXML.getElementsByTagName('LED')[6].childNodes[0].nodeValue === "on") {
               document.getElementById("LED7").innerHTML = "4";
               LED6_state = 1;
            }
            else {
               document.getElementById("LED7").innerHTML = "4";
               LED6_state = 0;
            }
            // LED 8 DRUKTOETS Poort "5"
            //-------------------------
            if (this.responseXML.getElementsByTagName('LED')[7].childNodes[0].nodeValue === "on") {
               document.getElementById("LED8").innerHTML = "5";
               LED7_state = 1;
            }
            else {
               document.getElementById("LED8").innerHTML = "5";
               LED7_state = 0;
            }            
            

                  }
               }
            }
         }
         // send HTTP GET request with LEDs to switch on/off if any
         request.open("GET", "ajax_inputs" + strLED1 + strLED2 + strLED3 + strLED4 + strLED5 + strLED6 + strLED7 + strLED8 + nocache, true);
         request.send(null);
         setTimeout('GetArduinoIO()', 1000);
         strLED1 = "";
         strLED2 = "";
         strLED3 = "";
         strLED4 = "";
         strLED5 = "";
         strLED6 = "";
         strLED7 = "";
         strLED8 = "";
      }
      // service LEDs when checkbox checked/unchecked
      
      function GetButton1()   //VERWARMING LIVING
      {
         if (LED1_state === 1) {
            LED1_state = 0;
            strLED1 = "&LED1=0";
         }
         else {
            LED1_state = 1;
            strLED1 = "&LED1=1";
         }
      }
      function GetButton2()   //VERWARMING BADKAMER
      {
         if (LED2_state === 1) {
            LED2_state = 0;
            strLED2 = "&LED2=0";
         }
         else {
            LED2_state = 1;
            strLED2 = "&LED2=1";
         }
      }
      function GetButton3()   //BOILER
      {
         if (LED3_state === 1) {
            LED3_state = 0;
            strLED3 = "&LED3=0";
         }
         else {
            LED3_state = 1;
            strLED3 = "&LED3=1";
         }
      }
      function GetButton4()   //POORT"1"
      {
         if (LED4_state === 1) {
            LED4_state = 0;
            strLED4 = "&LED4=0";
         }
         else {
            LED4_state = 1;
            strLED4 = "&LED4=1";
         }
      }
      function GetButton5()   //POORT"2"
      {
         if (LED5_state === 1) {
            LED5_state = 0;
            strLED5 = "&LED5=0";
         }
         else {
            LED5_state = 1;
            strLED5 = "&LED5=1";
         }
      }
      function GetButton6()   //poort"3"
      {
         if (LED6_state === 1) {
            LED6_state = 0;
            strLED6 = "&LED6=0";
         }
         else {
            LED6_state = 1;
            strLED6 = "&LED6=1";
         }
      }
      function GetButton7()
      {
         if (LED7_state === 1) {
            LED7_state = 0;
            strLED7 = "&LED7=0";

         }
         else {
            LED7_state = 1;
            strLED7 = "&LED7=1";
         }
      function GetButton8()
      {
         if (LED8_state === 1) {
            LED8_state = 0;
            strLED8 = "&LED8=0";

         }
         else {
            LED8_state = 1;
            strLED8 = "&LED8=1";
         }
      }                        
   </script>

   <style>
      .IO_box {
         float: left;
         margin: 0 40px 20px 0;
         border: 2px solid blue;
         padding: 0 5px 0 5px;
         width: 350px;
      }
      h1 {    font-size: 200%;
         color: blue;
         margin: 0 0 10px 0;
      }
      h2 {
         font-size: 85%;
         color: #5734E6;
         margin: 5px 0 5px 0;
      }
      p, form, button {
         font-size: 110%;
         color: #252525;
                        width: 100%;
                     
      }
      .small_text {
         font-size: 70%;
         color: #737373;
      }
   </style>
    </head>
    <body onload="GetArduinoIO()">
        <h1>DOMOTICA I/O</h1><br />
           <div class="IO_box" STYLE="width: 8em; height: 25em">
         <h2>Analog Inputs</h2><br /><br />

         <p class="small_text">A0 used by Ethernet shield</p>
         <p class="small_text">A1 used by Ethernet shield</p>
         <p>A2: <span class="analog">...</span></p>
         <p>A3: <span class="analog">...</span></p>
         <p>A4: <span class="analog">...</span></p>
         <p>A5: <span class="analog">...</span></p>
      </div>
      




      
      <div class="IO_box" STYLE="width: 22em; height: 25em" >
<h2>REMOTE</h2><br /><br />

<button type="button" id="LED1" STYLE="height: 4em" onclick="GetButton1()">VERWARMING_LIVING is OFF (D7)</button><br /><br /><br />


<button type="button" id="LED2" STYLE="height: 4em" onclick="GetButton2()">VERWARMING_BADKAMER is OFF (D8)</button><br /><br /><br />


<button type="button" id="LED3" STYLE="height: 4em" onclick="GetButton3()">BOILER is OFF (D9)</button><br /><br />

         
      </div>


      <div class="IO_box" STYLE="width: 8em; height: 25em" >

<h2>BEDIENING POORT</h2><br /><br />


<button type="button" id="LED4" STYLE="width: 2.25em; height: 2em" onclick="GetButton4()">1</button>

<button type="button" id="LED5" STYLE="width: 2.25em; height: 2em" onclick="GetButton5()">2</button>

<button type="button" id="LED6" STYLE="width: 2.25em; height: 2em" onclick="GetButton6()">3</button><br /><br />

<button type="button" id="LED7" STYLE="width: 2.25em; height: 2em" onclick="GetButton7()">4</button>

<button type="button" id="LED8" STYLE="width: 2.25em; height: 2em" onclick="GetButton8()">5</button>

<button type="button" id="LED9" STYLE="width: 2.25em; height: 2em" onclick="GetButton9()">6</button><br /><br />

<button type="button" id="LED10" STYLE="width: 2.25em; height: 2em" onclick="GetButton10()">7</button>

<button type="button" id="LED11" STYLE="width: 2.25em; height: 2em" onclick="GetButton11()">8</button>

<button type="button" id="LED12" STYLE="width: 2.25em; height: 2em" onclick="GetButton12()">9</button><br /><br />

<button type="button" id="LED13" STYLE="width: 2.25em; height: 2em" onclick="GetButton13()">0</button><br /><br />

<button type="button" id="LED14" STYLE="width: 7.2em; height: 4em" onclick="GetButton14()">POORT DICHT(D6)</button><br />

      </div>


    </body>
</html>


Advertisement

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Hulp bij programeren webserver en arduino ethernetshield

Berichtdoor nicoverduin » 04 Apr 2014, 17:35

Heb je getest of je de LED8 ook daadwerkelijk in de Arduino krijg? M.a.w. waar moeten we het zoeken? Als de webpagina hem niet geeft dan moet het in de pagina zitten. anders in de Arduino.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 22
Geregistreerd: 02 Dec 2013, 05:52

Re: Hulp bij programeren webserver en arduino ethernetshield

Berichtdoor KRISKRAS9660 » 04 Apr 2014, 20:07

Het zit zo , de toetsnr 5 (LED8) wordt weergegeven op de webpagina.
alles tem LED7 loopt prima te communiceren met mijn arduino , vanaf LED8 loopt het mis.
ik heb een vermoeden wanneer ik strLED8 aan toevoeg dat mijn communicatieprotocol vast loopt.
mijn andere toetsen (LED1 tot LED7) werken ook niet meer.

Staat er een beperking op hoeveel data er verzonden of ontvangen wordt?
Hoe kan ik het best controleren of LED8 in de arduino aangesproken wordt.
(een led laten oplichten met de toets(LED8) lukt me niet.

Integendeel met de vorige serie toetsen heb ik geen problemen gehad.

Ik heb een vermoeden dat deze regel in mijn webpagina het probleem geeft:
char c = client.read(); // read 1 byte (character) from client

Mijn vraag is ,hoe lees ik meer dan 1 byte (character) van client ? voorbeeld 2byte.
Hoe moet ik dat voor elkaar krijgen?


Code: Alles selecteren
void loop()
{
    EthernetClient client = server.available();  // try to get client

    if (client) {  // got client?
        boolean currentLineIsBlank = true;
        while (client.connected()) {
            if (client.available()) {   // client data available to read
                char c = client.read();                                           // read 1 byte (character) from client
                // limit the size of the stored received HTTP request
                // buffer first part of HTTP request in HTTP_req array (string)
                // leave last element in array as 0 to null terminate string (REQ_BUF_SZ - 1)
                if (req_index < (REQ_BUF_SZ - 1)) {
                    HTTP_req[req_index] = c;          // save HTTP request character
                    req_index++;
                }

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Hulp bij programeren webserver en arduino ethernetshield

Berichtdoor nicoverduin » 04 Apr 2014, 23:51

Vergroot deze eens:

#define REQ_BUF_SZ 60

Daarmee geef je aan hoeveel data je wilt ontvangen per keer. Ik vermoed dat je nu over de grens bent gegaan...
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 22
Geregistreerd: 02 Dec 2013, 05:52

Re: Hulp bij programeren webserver en arduino ethernetshield

Berichtdoor KRISKRAS9660 » 05 Apr 2014, 20:43

Ik de waarde 60 verandert naar 90 , maar dit bracht geen goed resultaat.
Zijn er nog andere sugesties, om dit terug aan de praat te krijgen?
Alle tips zijn welkom ;-)

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Hulp bij programeren webserver en arduino ethernetshield

Berichtdoor nicoverduin » 05 Apr 2014, 22:37

Ik zou dan eerst eens wat Serial statements inbouwen. o.a. waar de buffer inleest. En die eens gaan printen. Dan kun je zien wat je binnenkrijgt. Nu is het nog steeds onduidelijk of het in de browser of Arduino zit. Eerst probleem isoleren.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Hulp bij programeren webserver en arduino ethernetshield

Berichtdoor nicoverduin » 05 Apr 2014, 23:24

Wat ook nog zo kunnen... 't is een schot in het duister is dat je door je ram limiet gaat. Alle teksten worden natuurlijk al in ram opgeslagen, de web pagina.... zou zo maar kunnen dat het met 7 net goed gaat.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 22
Geregistreerd: 02 Dec 2013, 05:52

Re: Hulp bij programeren webserver en arduino ethernetshield

Berichtdoor KRISKRAS9660 » 06 Apr 2014, 08:16

Ik probeer volgende week de seriele buffer in te lezen.
Thx voor de tips

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 51 gasten