Ethernet Shield with index.htm SDcard.

Some simple arduino server test code that controls the arduino pin 5 and a servo via web page buttons.

//zoomkat 3-17-12
//simple button GET server code to control servo and arduino pin 5
//for use with IDE 1.0
//open serial monitor to see what the arduino receives
//use the \ slash to escape the " in the html 
//address will look like http://192.168.1.102:84 when submited
//for use with W5100 based ethernet shields
//Powering a servo from the arduino usually DOES NOT WORK.
//note that the below bug fix may be required
// http://code.google.com/p/arduino/issues/detail?id=605 

#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, 102 }; // ip in lan
byte gateway[] = { 192, 168, 1, 1 }; // internet access via router
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
EthernetServer server(84); //server port

String readString; 

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

void setup(){

  pinMode(5, OUTPUT); //pin selected to control
  //start Ethernet
  Ethernet.begin(mac, ip, gateway, subnet);
  server.begin();

  myservo.write(90); //set initial servo position if desired
  myservo.attach(7);  //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("<HTML>");
          client.println("<HEAD>");
          client.println("<TITLE>Arduino GET test page</TITLE>");
          client.println("</HEAD>");
          client.println("<BODY>");

          client.println("<H1>Zoomkat's simple Arduino button</H1>");
          
          // DIY buttons
          client.println("<a href=\"/?on\"\">ON</a>"); 
          client.println("<a href=\"/?off\"\">OFF</a>
"); 

          // mousedown buttons
          client.println("
<input type=\"button\" value=\"ON\" onmousedown=\"location.href ('/?on');\"/>"); 
          client.println("<input type=\"button\" value=\"OFF\" onmousedown=\"location.href ('/?off');\"/>");        
          
          // mousedown radio buttons
          client.println("

<input type=\"radio\" value=\"ON\" onmousedown=\"location.href ('/?on');\"\">ON</>"); 
          client.println("<input type=\"radio\" value=\"OFF\" onmousedown=\"location.href ('/?off');\"\">OFF</>");        
 
          client.println("</BODY>");
          client.println("</HTML>");
 
          delay(1);
          //stopping client
          client.stop();

          ///////////////////// control arduino pin
          if(readString.indexOf("on") >0)//checks for on
          {
            myservo.write(40);
            digitalWrite(5, HIGH);    // set pin 4 high
            Serial.println("Led On");
          }
          if(readString.indexOf("off") >0)//checks for off
          {
            myservo.write(140);
            digitalWrite(5, LOW);    // set pin 4 low
            Serial.println("Led Off");
          }
          //clearing string for next read
          readString="";

        }
      }
    }
  }
}

i zoom, i glad to see you,
but i think you not understand my question.

On your project, the html is generate throught arduino,
but my case index.htm is open my SDCARD ethrnet shield and i have a Image, i want that when i click on Image , the image turn one led, and when i click again turn of the led.

sorry my english

The below has info on clickable images.

zoom thanks for reply, and your attention.

But i dont understand how can transform this code to be working whith my index.html

see.. my index.html code:

now, i want when click on w3schools.jpg...that turn led on pin3
and when click again turn led on pin3.

this is code i want tranform:

#include <LiquidCrystal.h>
#include <SPI.h>
#include <SdFat.h>
#include <SdFatUtil.h>
#include <Ethernet.h>
#define BUFSIZ 128
#define greenLEDandBEEP 2
#define redLEDpin 3
boolean led2 = true;
int hits = 0; // Set the number of hits the hit counter will start at.
int units = 0;
int count = 0;
int photocellPin = 2;
int photocellReading;
LiquidCrystal lcd(4, 5, 6, 7, 8, 9);

//Local ethernet setup
byte mac[] = {
0x90, 0xA2, 0xDA, 0x00, 0x1C, 0x0E };
byte ip[] = {
192, 168, 1, 80 };
char rootFileName[] = "index.htm";
Server server(8080);

//SD card stuff
Sd2Card card;
SdVolume volume;
SdFile root;
SdFile file;
#define error(s) error_P(PSTR(s))
void error_P(const char* str) {
PgmPrint("error: ");
SerialPrintln_P(str);
if (card.errorCode()) {
PgmPrint("SD error: ");
Serial.print(card.errorCode(), HEX);
Serial.print(',');
Serial.println(card.errorData(), HEX);
}
while(1);
}

void setup() {
lcd.begin(16, 2);
lcd.print("Web Server v2.00");
lcd.setCursor(0, 1);
lcd.print("Hits:");

Serial.begin(9600);

pinMode(greenLEDandBEEP, OUTPUT);
pinMode(redLEDpin, OUTPUT);

PgmPrint("Free RAM: ");
Serial.println(FreeRam());

pinMode(10, OUTPUT);
digitalWrite(10, HIGH);

if (!card.init(SPI_HALF_SPEED, 4)) error("card.init failed!");

if (!volume.init(&card)) error("vol.init failed!");

PgmPrint("Volume is FAT");
Serial.println(volume.fatType(),DEC);
Serial.println();

if (!root.openRoot(&volume)) error("openRoot failed");

PgmPrintln("Files found in root:");
root.ls(LS_DATE | LS_SIZE);
Serial.println();

PgmPrintln("Files found in all dirs:");
root.ls(LS_R);

Serial.println();
PgmPrintln("Done");

Ethernet.begin(mac, ip);
server.begin();
}

void loop()
{
if(count >=500)
{
led2 = !led2;
digitalWrite(redLEDpin, led2);
count = 0;
}
count +=1;

char clientline[BUFSIZ];
char *filename;
int image = 0;
int index = 0;

Client client = server.available();
if (client) {
boolean current_line_is_blank = true;

index = 0;

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

if (c != '\n' && c != '\r') {
clientline[index] = c;
index++;
if (index >= BUFSIZ)
index = BUFSIZ -1;

continue;
}

clientline[index] = 0;
filename = 0;

Serial.println(clientline);

if (strstr(clientline, "GET / ") != 0) {
filename = rootFileName;

}
if (strstr(clientline, "GET /") != 0) {
if (!filename) filename = clientline + 5;

(strstr(clientline, " HTTP"))[0] = 0;

Serial.println(filename);

if (! file.open(&root, filename, O_READ)) {
client.println("HTTP/1.1 404 Not Found");
client.println("Content-Type: text/html");
client.println();
client.println("

Error 404

");
client.println("The file does not exist.");
client.println("");
break;
}

Serial.println("Opened!");
//File types
client.println("HTTP/1.1 200 OK");
if (strstr(filename, ".htm") != 0)
client.println("Content-Type: text/html");
else if (strstr(filename, ".css") != 0)
client.println("Content-Type: text/css");
else if (strstr(filename, ".png") != 0)
client.println("Content-Type: image/png");
else if (strstr(filename, ".jpg") != 0)
client.println("Content-Type: image/jpeg");
else if (strstr(filename, ".gif") != 0)
client.println("Content-Type: image/gif");
else if (strstr(filename, ".3gp") != 0)
client.println("Content-Type: video/mpeg");
else if (strstr(filename, ".pdf") != 0)
client.println("Content-Type: application/pdf");
else if (strstr(filename, ".js") != 0)
client.println("Content-Type: application/x-javascript");
else if (strstr(filename, ".xml") != 0)
client.println("Content-Type: application/xml");
else
client.println("Content-Type: text");
client.println();

int16_t c;
while ((c = file.read()) >= 0) {
//Serial.print((char)c); //Prints all HTML code to serial (For debuging)
client.print((char)c); //Prints all HTML code for web page
}

//Hit counter math
if(units >= 2)
{
hits ++;
units = 0;
}
units +=1;
//End hit counter math

//Print the hit counters and light value
lcd.setCursor(6, 1);
lcd.print(hits); //Print hits for LCD hit counter

client.print(""); //HTML code starts here
client.print("<P align="center">");
client.print("Hits since reset: ");
client.print(hits); //Print hits to client
client.print("

");

photocellReading = analogRead(photocellPin);
client.print("Light reading: ");
client.print(photocellReading); //Prints light reading to client

// A few threshholds
if (photocellReading < 10) {
client.print(" - Dark");
}
else if (photocellReading < 200) {
client.print(" - Dim");
}
else if (photocellReading < 500) {
client.print(" - Light");
}
else if (photocellReading < 800) {
client.print(" - Bright");
}
else {
client.print(" - Very bright");
}

client.print("

"); //HTML code ends here
//End hit counter and light value

file.close();

}
else {
client.println("HTTP/1.1 404 Not Found");
client.println("Content-Type: text/html");
client.println();
client.println("

Error 404

");
client.println("");
}
break;
}
}
digitalWrite(greenLEDandBEEP, HIGH);
delay(1);
digitalWrite(greenLEDandBEEP, LOW);
client.stop();
}

}

understand me?

Please go back to your previous post and modify them by high lighting the code and then click the # in the tool bar to put your code in a code box. Have you tried the below from the link I posted? The clickable image is an html thing, not arduino. In the arduino code, you probably need to use a toggle setup for the LED control.

<a href="http://www.espn.com" target="_blank"> 
<img src="ahman.gif" border="0"> </a>

http://arduino.cc/forum/index.php/topic,97750.0.html

use this

If you want various clickable areas in a single image, the below has the info.

What I want is simple, but you are not understanding.

I have this code, this code is doing is opening an index.html that is stored on the SD ethernet shield.

<html>
<body>

<img src="w3schools.jpg" width="104" height="142" />

</body>
</html>


now, i want when click on w3schools.jpg...that turn led on pin3
and when click again turn led on pin3.


this is code i want tranform:

#include <LiquidCrystal.h>
#include <SPI.h>
#include <SdFat.h>
#include <SdFatUtil.h>
#include <Ethernet.h>
#define BUFSIZ 128
#define greenLEDandBEEP 2
#define redLEDpin 3
boolean led2 = true;
int hits = 0; // Set the number of hits the hit counter will start at.
int units = 0;
int count = 0;
int photocellPin = 2;
int photocellReading;
LiquidCrystal lcd(4, 5, 6, 7, 8, 9);

//Local ethernet setup
byte mac[] = { 
  0x90, 0xA2, 0xDA, 0x00, 0x1C, 0x0E }; 
byte ip[] = { 
  192, 168, 1, 80 };
char rootFileName[] = "index.htm";
Server server(8080);

//SD card stuff
Sd2Card card;
SdVolume volume;
SdFile root;
SdFile file;
#define error(s) error_P(PSTR(s))
void error_P(const char* str) {
  PgmPrint("error: ");
  SerialPrintln_P(str);
  if (card.errorCode()) {
    PgmPrint("SD error: ");
    Serial.print(card.errorCode(), HEX);
    Serial.print(',');
    Serial.println(card.errorData(), HEX);
  }
  while(1);
}

void setup() {
  lcd.begin(16, 2);
  lcd.print("Web Server v2.00");
  lcd.setCursor(0, 1);
  lcd.print("Hits:");

  Serial.begin(9600);

  pinMode(greenLEDandBEEP, OUTPUT);
  pinMode(redLEDpin, OUTPUT);

  PgmPrint("Free RAM: ");
  Serial.println(FreeRam());  

  pinMode(10, OUTPUT);              
  digitalWrite(10, HIGH);              

  if (!card.init(SPI_HALF_SPEED, 4)) error("card.init failed!");

  if (!volume.init(&card)) error("vol.init failed!");

  PgmPrint("Volume is FAT");
  Serial.println(volume.fatType(),DEC);
  Serial.println();

  if (!root.openRoot(&volume)) error("openRoot failed");

  PgmPrintln("Files found in root:");
  root.ls(LS_DATE | LS_SIZE);
  Serial.println();

  PgmPrintln("Files found in all dirs:");
  root.ls(LS_R);

  Serial.println();
  PgmPrintln("Done");

  Ethernet.begin(mac, ip);
  server.begin();
}


void loop()
{
  if(count >=500)
  {  
    led2 = !led2;
    digitalWrite(redLEDpin, led2);
    count = 0;
  }
  count +=1;

  char clientline[BUFSIZ];
  char *filename;
  int image = 0;
  int index = 0;

  Client client = server.available();
  if (client) {
    boolean current_line_is_blank = true;

    index = 0;

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

        if (c != '\n' && c != '\r') {
          clientline[index] = c;
          index++;
          if (index >= BUFSIZ) 
            index = BUFSIZ -1;

          continue;
        }

        clientline[index] = 0;
        filename = 0;

        Serial.println(clientline);

        if (strstr(clientline, "GET / ") != 0) {
          filename = rootFileName;

        } 
        if (strstr(clientline, "GET /") != 0) {
          if (!filename) filename = clientline + 5; 

          (strstr(clientline, " HTTP"))[0] = 0;

          Serial.println(filename);

          if (! file.open(&root, filename, O_READ)) {
            client.println("HTTP/1.1 404 Not Found");
            client.println("Content-Type: text/html");
            client.println();
            client.println("<h2>Error 404</h2>");
            client.println("<s2>The file does not exist.<s2>");
            client.println("");
            break;
          }

          Serial.println("Opened!");
          //File types
          client.println("HTTP/1.1 200 OK");
          if (strstr(filename, ".htm") != 0)
            client.println("Content-Type: text/html");
          else if (strstr(filename, ".css") != 0)
            client.println("Content-Type: text/css");
          else if (strstr(filename, ".png") != 0)
            client.println("Content-Type: image/png");
          else if (strstr(filename, ".jpg") != 0)
            client.println("Content-Type: image/jpeg");
          else if (strstr(filename, ".gif") != 0)
            client.println("Content-Type: image/gif");
          else if (strstr(filename, ".3gp") != 0)
            client.println("Content-Type: video/mpeg");
          else if (strstr(filename, ".pdf") != 0)
            client.println("Content-Type: application/pdf");
          else if (strstr(filename, ".js") != 0)
            client.println("Content-Type: application/x-javascript");
          else if (strstr(filename, ".xml") != 0)
            client.println("Content-Type: application/xml");
          else
            client.println("Content-Type: text");
          client.println();

          int16_t c;
          while ((c = file.read()) >= 0) {
            //Serial.print((char)c); //Prints all HTML code to serial (For debuging)
            client.print((char)c); //Prints all HTML code for web page
          }

          //Hit counter math
          if(units >= 2)
          {
            hits ++;
            units = 0;
          }
          units +=1;
          //End hit counter math

          //Print the hit counters and light value
          lcd.setCursor(6, 1);
          lcd.print(hits); //Print hits for LCD hit counter

          client.print("<html><body>"); //HTML code starts here
          client.print("<P align=\"center\">"); 
          client.print("Hits since reset: <b>");   
          client.print(hits); //Print hits to client
          client.print("</b>
");

          photocellReading = analogRead(photocellPin); 
          client.print("Light reading: "); 
          client.print(photocellReading); //Prints light reading to client

          // A few threshholds
          if (photocellReading < 10) {
            client.print(" - Dark");
          } 
          else if (photocellReading < 200) {
            client.print(" - Dim");
          } 
          else if (photocellReading < 500) {
            client.print(" - Light");
          } 
          else if (photocellReading < 800) {
            client.print(" - Bright");
          } 
          else {
            client.print(" - Very bright");
          }

          client.print("</p></body></html>"); //HTML code ends here
          //End hit counter and light value

          file.close();

        } 
        else {
          client.println("HTTP/1.1 404 Not Found");
          client.println("Content-Type: text/html");
          client.println();
          client.println("<h2>Error 404</h2>");
          client.println("");
        }
        break;
      }
    }
    digitalWrite(greenLEDandBEEP, HIGH);
    delay(1);
    digitalWrite(greenLEDandBEEP, LOW);
    client.stop();
  }

}

Now I do not know what the code I have to add to this that when I click on the image of my index.hml to connect the pin digitalWrite 7 and when you click the image again to connect the low digitalWrite pin7.

I do not want you Go take me examples of sites and links.

I want you to modify that code and send it to me, because I do not understand any of this.

thanks friends.

Viva, I managed to solve my problem.
Now only one point missing out ... I can not give and ask for help solving.

The code that is working and this:

Code: [Select]

Include <Ethernet.h>

Include <SPI.h>

/ *
Simple Ethernet Test

Arduino server outputs simple text to browser

The circuit:

  • Arduino Duemilanove
  • Arduino Ethernet shield
  • Basic FTDI 5V breakout
  • LED connected to digital pin 4 and GND via resistor
 * /
 
Byte mac [] = {0x90, 0xA2, 0xDA, 0x00, 0x49, 0xD6};
IP Byte [] = {} 192,168,1,70 / / IP address of WiShield
Gateway Byte [] = {} 192,168,1,254 / / router or gateway IP address
Subnet Byte [] = {} 255,255,255,0;
 

Server server (6969) / / server port
LedPin Int = 4 / / LED pin
Int ledPin = 7;
String state = String (3);
Word Adc = 0;
ReadString String = String (30) / / string for fetching data from address
LEDON Boolean = false; / / LED status flag
 
 
 
Void Pasword ();
Carried Void ();
 

Void setup () {
  / / Start Ethernet
  Ethernet.begin (mac, IP, gateway, subnet);
  / / Set to output pin 4
  PinMode (ledPin, OUTPUT);
  
  DigitalWrite (ledPin, LOW);
  State = "OFF";
String state = String (3);
  / / Enable serial print dated
  Serial.begin (9600);
}
 

Void loop () {
  / / Create a client connection
  
  Client client = server.available ();
  If (client) {
    While (client.connected ()) {
      Char client.read c = ();
      If (readString.length () <30) {
         ReadString + = c;
      }
      Serial.print (c);
      If (c == '\ n') {
        if (readString.trim () == ("GET /? C = 1678 HTTP/1.1")) {
          / / Client.println ("Clave <h1> Ok </ h1>");
          Carried ();
       Else {}
          / / Client.println ("erroneous <h1> Clave </ h1>");
       }
    
    
       / / Client.println ("HTTP/1.1 200 OK");
       / / Client.println ("Content-Type: text / html");
       Client.println ();
       Client.print ("<body style=background-color:#ffffff>");
 
       Client.println ("Control de Acceso <h1> </ h1>");
       Client.println ("<form method=get name=LED>");
       Client.println ("<input type=""password"" name=C>");
      
      
       Client.println ("<input type=submit value=submit> </ form>");
      
 
       / / Read next string is clearing
       ReadString = "";
       / / Stopping client
       Client.stop ();
    }
  }
}
}
 
 
 
Void Homepage () {
While (1) {
  / / Create a client connection
  Client client = server.available ();
 If (client) {
    / / An http request ends with a blank line
    CurrentLineIsBlank Boolean = true;
    While (client.connected ()) {
      If (client.available ()) {
        Char client.read 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 Can you send a reply
 
        If (readString.length () <30) {
          ReadString.concat (c);
        }
 
        If (c == '\ n' && currentLineIsBlank) {
          / / Send a standard http response header
          LED Int readString.indexOf = ("LED =");
 
          If (readString.substring (LED, +5) == '= LED T ") {
            DigitalWrite (ledPin, HIGH);
            State = "ON";
          }
          Else if (readString.substring (LED, +5) == "LED = F") {
            DigitalWrite (ledPin, LOW);
            State = "OFF";
          }
          Client.println ("HTTP/1.1 200 OK");
          Client.println ("Content-Type: text / html");
          Client.println ();
          Client.println ("<form method=get name=form>");
          
          Client.println ("<img src = 'http://dl.dropbox.com/u/6916111/tvoff.png' style = \" position: fixed; left: 68px; top: 80px; width: 636px; height: 431px; z-index: 1; padding: 0; \ ">");
          If (state == "ON") {
       / / Client.print ("TEST");
          Client.println ("<img src = 'http://dl.dropbox.com/u/6916111/tvon.png' type =" image "style = \" position: fixed; left: 254px; top: 146px; width : 146px; height: 93px; z-index: 2; padding: 0; \ ">");
          Client.println ("<a href = \". /? LED = F \ "src = 'http://dl.dropbox.com/u/6916111/off.png' type =" image "style = \" position : fixed; left: 254px; top: 146px; width: 146px; height: 93px; z-index: 2; padding: 0; \ ">");
   }
   
  else {
  client.println ("<img src = 'http://dl.dropbox.com/u/6916111/off.png' type =" image "style = \" position: fixed; left: 254px; top: 146px; width : 146px; height: 93px; z-index: 2; padding: 0; \ ">");
          client.println ("<a href = \". /? LED T = \ "src = 'http://dl.dropbox.com/u/6916111/tvon.png' type =" image "style = \" position : fixed; left: 254px; top: 146px; width: 146px; height: 93px; z-index: 2; padding: 0; \ ">");
   }
 
          / / Client.print ("LED is");
         / / Client.print (state);
          client.print ("
");
 
          
          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);
    ReadString = "";
    / / Close the connection:
    client.stop ();
     }
      }
}

what is happening is this:
how do I access my shield through the browser
it goes OK, and do what you have to do is:

Show a field where you put the password and then do a submit button and proceed to the main page.

Ate there all right.

What is bad is if I close the browser and return the ip of my shield in the browser, it does not already asking for the password but goes directly to the main page and I do not want it.

Thank you

The code that is working and this:

Does that mean you have one sketch working and this sketch in addition? How much of this can you get to even compile, much less run:

IP Byte [] = {} 192,168,1,70 / / IP address of WiShield
Gateway Byte [] = {} 192,168,1,254 / / router or gateway IP address
Subnet Byte [] = {} 255,255,255,0;

Try the example sketch again.

sorry the code is:

#include <Ethernet.h>
#include <SPI.h>
/*
    Simple Ethernet Test

 Arduino server outputs simple text to browser

     The circuit:
     * Arduino Duemilanove
 * Arduino Ethernet shield
 * Basic FTDI breakout 5V
 *LED connected to GND and digital pin 4 via resistor

 By Minde
     http://www.sciencprog.com/
 */

byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x49, 0xD6 };
byte ip[]    = {192,168,1,70}; // IP address of WiShield
byte gateway[]  = {192,168,1,254}; // router or gateway IP address
byte subnet[] = {255,255,255,0};


Server server(6969);        //server port
int ledPin = 4;  // LED pin
int LEDpin = 7;
String state = String(3);
word Adc = 0;
String readString = String(30); //string for fetching data from address
boolean LEDON = false; //LED status flag



void Pasword();
void Portada();


void setup(){
  //start Ethernet
  Ethernet.begin(mac, ip, gateway, subnet);
  //Set pin 4 to output
  pinMode(LEDpin,OUTPUT);
  
  digitalWrite(LEDpin,LOW);
  state = "OFF";
String state = String(3);
  //enable serial datada print
  Serial.begin(9600);
}


void loop(){
  // Create a client connection
  
  Client client = server.available();
  if (client) {
    while (client.connected()){   
      char c = client.read();
      if (readString.length() < 30){
         readString += c;
      }
      Serial.print(c);
      if (c == '\n') {     
        if(readString.trim() == ("GET /?C=1678 HTTP/1.1")){
          //client.println("<h1>Clave Ok</h1>");
          Portada();
       }else{
          //client.println("<h1>Clave Erronea</h1>");
       }     
    
    
       //client.println("HTTP/1.1 200 OK");
       //client.println("Content-Type: text/html");
       client.println();
       client.print("<body style=background-color:#ffffff>");     

       client.println("<h1>Control de Acceso</h1>");       
       client.println("<form method=get name=LED>"); 
       client.println("<input type=""password"" name=C>");
      
      
       client.println("<input type=submit value=submit></form>");
      

       //clearing string for next read
       readString="";
       //stopping client
       client.stop();      
    }
  }
}
}



void Portada(){
while(1){ 
  // Create a client connection
  Client client = server.available(); 
 if (client) {
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        // 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 (readString.length() < 30) {
          readString.concat(c);
        }

        if (c == '\n' && currentLineIsBlank) {
          // send a standard http response header
          int LED = readString.indexOf("LED=");

          if (readString.substring(LED,LED+5) == "LED=T") {
            digitalWrite(LEDpin,HIGH);
            state = "ON";
          }
          else if (readString.substring(LED,LED+5) == "LED=F") {
            digitalWrite(LEDpin,LOW);
            state = "OFF";
          } 
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();
          client.println("<form  method=get name=form>");
          
          client.println("<img src='http://dl.dropbox.com/u/6916111/tvoff.png' style=\"position:fixed;left:68px;top:80px;width:636px;height:431px;z-index:1;padding:0;\">");
          if (state == "ON") {  
       //   client.print("TESTE ");        
          client.println("<img src='http://dl.dropbox.com/u/6916111/tvon.png' type='image' style=\"position:fixed;left:254px;top:146px;width:146px;height:93px;z-index:2;padding:0;\">");
          client.println("<a href=\"./?LED=F\" src='http://dl.dropbox.com/u/6916111/off.png' type='image' style=\"position:fixed;left:254px;top:146px;width:146px;height:93px;z-index:2;padding:0;\">");
			}
			
		else {
		client.println("<img src='http://dl.dropbox.com/u/6916111/off.png' type='image' style=\"position:fixed;left:254px;top:146px;width:146px;height:93px;z-index:2;padding:0;\">");
          client.println("<a href=\"./?LED=T\" src='http://dl.dropbox.com/u/6916111/tvon.png' type='image' style=\"position:fixed;left:254px;top:146px;width:146px;height:93px;z-index:2;padding:0;\">");
			}

          //client.print("LED is ");
         // client.print(state);
          client.print("

");

          
          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);
    readString = "";
    // close the connection:
    client.stop();
     }
      }
}
void Pasword();

There are a few conflicts here. You can't use digital pin 4 for anything but the SD SPI Slave Select. That pin is taken. When you set pin 4 LOW, you are enabling the SD SPI interface. Can't do that.
edit: You can do that, as you have proven, but you can't do that and use the SPI bus to communicate with the w5100.

Use the proper Ethernet.begin() format.

Ethernet.begin(mac, ip, dns, gateway, subnet);
// or if you do not use dns in your code, you can use the gateway for the dns server ip
Ethernet.begin(mac, ip, gateway, gateway, subnet);

edit: If you are using v0023 or older, the format should be

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

Sorry, but I think you do not understand what I said.

The code is all working beautifully.

The only thing that is happening is wrong:

When I type my ip: 6969 in browser it asks for the password:

after entering the correct password it will connect the main page:

Now what is wrong is if I close the browser, or attempt to access another computer to my ip: 6969 does not show new password to page:

but goes direct on the main page

Do you understand now? I want whenever you go to ip: 6969 it enters the password page.

rodolfovieira:
Sorry, but I think you do not understand what I said.

The code is all working beautifully.
(snip)
Do you understand now? (snip)

No, I don't. If it is working beautifully, why are we having this dialog?

You also did not understand what I said. You cannot use digital pin 4 for anything but the SD SPI bus Slave Select. Do you have a microSD card in the slot yet? When you do, if not already, this will cause problems.

Thank you for your attention but I will not answer anymore, because did not understand my last post, and use the google translator did not help.

Forget the part of the SD, just want to know why when I type ip: 6969 on another computer it does not appear to me that:

but this:

I'm not mad at you, I'm just frustrated because he could not make them understand

You don't have to answer. If you manage to get by the hardware problem, then I would suspect this comparison:

        if(readString.trim() == ("GET /?C=1678 HTTP/1.1")){
          //client.println("<h1>Clave Ok</h1>");
          Portada();
       }else{
          //client.println("<h1>Clave Erronea</h1>");
       }

Just talking out loud here. I would try this instead. But that is just me.

        if(strcmp(readString.trim(), "GET /?C=1678 HTTP/1.1") == 0) {
          //client.println("<h1>Clave Ok</h1>");
          Portada();
       }else{
          //client.println("<h1>Clave Erronea</h1>");
       }

SurferTim:
You don't have to answer. If you manage to get by the hardware problem, then I would suspect this comparison:

        if(readString.trim() == ("GET /?C=1678 HTTP/1.1")){

//client.println("

Clave Ok

");
         Portada();
      }else{
         //client.println("

Clave Erronea

");
      }




Just talking out loud here. I would try this instead. But that is just me.


if(strcmp(readString.trim(), "GET /?C=1678 HTTP/1.1") == 0) {
         //client.println("

Clave Ok

");
         Portada();
      }else{
         //client.println("

Clave Erronea

");
      }

i try this but gives errores

 if(strcmp(readString.trim(), "GET /?C=1678 HTTP/1.1") == 0) {
          //client.println("<h1>Clave Ok</h1>");
          Portada();
       }else{
          //client.println("<h1>Clave Erronea</h1>");
       }

look:

http://www.freeimagehosting.net/qap5b

Now we are going places!

I don't use String types, and this (among other reasons) is why. I use character arrays.

char readString[20];

If you pass readString as a parameter now, it will work. At least it should. I have not used the .trim() function before, but now I might try it.

You will probably need to redo your ad-a-character routine to that array. Like this:

int charCount;
char readString[20];

// Then in the loop
charCount = 0;
readString[0] = 0;

while(client.available())
{
   char c = client.read();

   if(charCount < 19)
   {
      // store character
      readString[charCount] = c;
      charCount++;
      // set terminating zero
      readString[charCount] = 0;   
   }
}

// If you need to empty the array,
charCount = 0;
readString[0] = 0;

edit: I added the readString zero terminator when I set charCount to zero.

hummmm this is something very difficult for me.

Do all you can send me the sketch already modified?
Or is abusing your generosity?

I do not know programming, these codes have been taking and adapting.

Thanks again

Take a look here. Reply #3 has a web server with two form fields.
http://arduino.cc/forum/index.php/topic,94861.0.html

Bear in mind that sketch is IDE v1.0 and better to compile.