Hulp bij programeren webserver en arduino ethernetshield.
8 berichten
• Pagina 1 van 1
- KRISKRAS9660
- Berichten: 22
- Geregistreerd: 02 Dec 2013, 05:52
Hulp bij programeren webserver en arduino ethernetshield.
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.
--------------------------------------------------------------------------------------
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
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Hulp bij programeren webserver en arduino ethernetshield
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.
- KRISKRAS9660
- Berichten: 22
- Geregistreerd: 02 Dec 2013, 05:52
Re: Hulp bij programeren webserver en arduino ethernetshield
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?
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++;
}
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Hulp bij programeren webserver en arduino ethernetshield
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...
#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...
- KRISKRAS9660
- Berichten: 22
- Geregistreerd: 02 Dec 2013, 05:52
Re: Hulp bij programeren webserver en arduino ethernetshield
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
Zijn er nog andere sugesties, om dit terug aan de praat te krijgen?
Alle tips zijn welkom
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Hulp bij programeren webserver en arduino ethernetshield
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.
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Hulp bij programeren webserver en arduino ethernetshield
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.
- KRISKRAS9660
- Berichten: 22
- Geregistreerd: 02 Dec 2013, 05:52
Re: Hulp bij programeren webserver en arduino ethernetshield
Ik probeer volgende week de seriele buffer in te lezen.
Thx voor de tips
Thx voor de tips
8 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: Google [Bot] en 14 gasten