Problem with ethernet sheild please help!

hii i am making a project with arduino in which when we press a button on a webserver ,led lights up.i have been able to successfully set up a webserver but whenever i press the button nothing happens,as soon as i upload a sketch led lights up and remain in that position .please help me to sort this out,below are sketches i uploaded to arduino

Sketch 1:
include <SPI.h>
#include <Ethernet.h>

#include <Servo.h>
Servo myservo; // create servo object to control a servo

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
byte ip[] = { 192, 168, 1, 177 }; // ip in lan
byte gateway[] = { 192, 168, 1, 1 }; // internet access via router
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
EthernetServer server(80); //server port

String readString;

//////////////////////

void setup(){

pinMode(11, OUTPUT); //pin selected to control
//start Ethernet
Ethernet.begin(mac, ip, gateway, subnet);
server.begin();
//the pin for the servo co
//enable serial data print
Serial.begin(9600);
Serial.println("server LED test 1.0"); // so I can keep track of what is loaded
}

void loop(){
// Create a client connection
EthernetClient client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
char c = client.read();

//read char by char HTTP request
if (readString.length() < 100) {

//store characters to string
readString += c;
//Serial.print(c);
}

//if HTTP request has ended
if (c == '\n') {

///////////////
Serial.println(readString); //print to serial monitor for debuging

client.println("HTTP/1.1 200 OK"); //send new page
client.println("Content-Type: text/html");
client.println();

client.println("");
client.println("");
client.println("");
client.println("");
client.println("");
client.println("Home Automation");
client.println("");
client.println("");
client.println("

Home Automation

");
client.println("
");
client.println("
");

client.println("<a href="/?lighton"">Turn On Light");
client.println("<a href="/?lightoff"">Turn Off Light
");

client.println("");
client.println("");

delay(1);
//stopping client
client.stop();

///////////////////// control arduino pin
if(readString.indexOf("?lighton") >0)//checks for on
{
digitalWrite(11, HIGH); // set pin 4 high
Serial.println("Led On");
}
else{
if(readString.indexOf("?lightoff") >0)//checks for off
{
digitalWrite(11, LOW); // set pin 4 low
Serial.println("Led Off");
}
}
//clearing string for next read
readString="";

}
}
}
}
}
i copied it from instructables,can anybody tell me why it is not working :frowning:

hii i am making a project with arduino in which when we press a button on a webserver ,led lights up.

Do you mean that you want to press a button on the client (the browser that is displaying the page that there server served up)?

     //read char by char HTTP request
        if (readString.length() < 100) {
 
          //store characters to string
          readString += c;
          //Serial.print(c);
        }

To see what the client requested, you need to uncomment the line. Writing code to parse a request, without knowing what the request looks like, is silly.

can anybody tell me why it is not working

The Arduino is retaliating for your crossposting.

Topics merged

  • please remove one unneeded post of your choice
  • please use code tags with the other one (# button above smileys, just use modify in the upper right)

Thanks robtillart.

If we are using this thread, then which Arduino model are you using? If it is an Uno or similar, you can't use D11. That is one of the SPI data lines. You should also change the comments. You are changing D11, but the comment shows D4.

thank you sir i tired with digital line 11 and 13 but everytime led always remain on, may be i forgot to edit the code while posting here,
i am using arduino uno,can you tell me whats the problem with the sketch?

here is the uncommented code:

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

#include <Servo.h>
Servo myservo;

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 1, 177 };
byte gateway[] = { 192, 168, 1, 1 };
byte subnet[] = { 255, 255, 255, 0 };
EthernetServer server(80);

void setup(){

pinMode(11, OUTPUT);

Ethernet.begin(mac, ip, gateway, subnet);
server.begin();

Serial.begin(9600);
Serial.println("server LED test 1.0");
}

void loop(){

EthernetClient client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
char c = client.read();

if (readString.length() < 100) {

readString += c;
Serial.print(c);
}

if (c == '\n') {

Serial.println(readString);

client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();

client.println("");
client.println("");
client.println("");
client.println("");
client.println("");
client.println("Home Automation");
client.println("");
client.println("");
client.println("

Home Automation

");
client.println("
");
client.println("
");

client.println("<a href="/?lighton"">Turn On Light");
client.println("<a href="/?lightoff"">Turn Off Light
");

client.println("");
client.println("");

delay(1);

client.stop();

if(readString.indexOf("?lighton") >0)
{
digitalWrite(11, HIGH);
Serial.println("Led On");
}
else{
if(readString.indexOf("?lightoff") >0)
{
digitalWrite(11, LOW);
Serial.println("Led Off");
}
}

readString="";

You cannot use D10 to D13 for anything but the SPI bus on an Uno. You are using D11 here.

          if(readString.indexOf("?lighton") >0)
          {
            digitalWrite(11, HIGH);    
            Serial.println("Led On");
          }
          else{
          if(readString.indexOf("?lightoff") >0)
          {
            digitalWrite(11, LOW);    
            Serial.println("Led Off");
          }
          }