Pages: [1] 2   Go Down
Author Topic: Ethernet Shield with index.htm SDcard.  (Read 10628 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I found this code which is capable of storing an index.htm file on the SD card's ethernet shield.
I managed to make the point to open the index.htm was this:



Now what I wanted to do was change the code so that when I clicked on  image,  that TURN a one LED,and when i click again  Turn OFF led.
And anyone able to modify this code?

ARDUINO CODE


/*
 * This is a web server that allows you to host a fully functional html
 *  webpage on the World Wide Web.
 * Initial coding was done with the help from the many people in the Arduino community.
 *  Thanks guys!!
 *
 * Arduino Setup: You need an Ethernet Shield SD, and and Arduino.
 *  Optionally pins 8 and 9 can be used for two LEDs that can indicate traffic.
 *
 * SD Card Setup: On the SD card, which must be formated as fat, you must have
 *  an HTML file with the file name of 'index.htm'. All file names on this card
 *  must be written in the old 8.3 file format. In other words, all files must be
 *  named with no more then 8 characters for the name, and 3 for the extension.
 *
 * Note: If you don't know HTML, a good place that I found useful was w3schools
 *  http://www.w3schools.com/html/html_examples.asp
 *
 */

#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><br>");

          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();
  }

}

//The End /*


INDEX.HTML CODE

<html>
<body>

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

</body>
</html>



Logged

0
Offline Offline
Tesla Member
***
Karma: 141
Posts: 9563
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Code:
//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><br />");

          // mousedown buttons
          client.println("<br><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("<br><br><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="";

        }
      }
    }
  }
}

Logged

Consider the daffodil. And while you're doing that, I'll be over here, looking through your stuff.   smiley-cool

Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

0
Offline Offline
Tesla Member
***
Karma: 141
Posts: 9563
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

The below has info on clickable images.

http://www.tizag.com/htmlT/htmlimagelinks.php
Logged

Consider the daffodil. And while you're doing that, I'll be over here, looking through your stuff.   smiley-cool

Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:

<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><br>");

          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();
  }

}




understand me?




Logged

0
Offline Offline
Tesla Member
***
Karma: 141
Posts: 9563
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.


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

Consider the daffodil. And while you're doing that, I'll be over here, looking through your stuff.   smiley-cool

Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

use this

Logged

0
Offline Offline
Tesla Member
***
Karma: 141
Posts: 9563
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

http://www.w3schools.com/tags/att_img_usemap.asp
http://www.w3schools.com/tags/tryit.asp?filename=tryhtml_areamap
Logged

Consider the daffodil. And while you're doing that, I'll be over here, looking through your stuff.   smiley-cool

Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.

Code:
<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><br>");

          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.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
 
Code:
* /
 
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 ("<br>");
 
         
          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
Logged

Miramar Beach, Florida
Offline Offline
Faraday Member
**
Karma: 144
Posts: 5989
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
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:
Code:
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.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

sorry the code is:

Code:
#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("<br><br>");

         
          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();





Logged

Miramar Beach, Florida
Offline Offline
Faraday Member
**
Karma: 144
Posts: 5989
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Code:
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
Code:
Ethernet.begin(mac, ip, subnet , gateway);
« Last Edit: April 15, 2012, 09:27:43 am by SurferTim » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:


http://imageshack.us/photo/my-images/525/controlcz.jpg/


after entering the correct password it will connect the main page:
http://imageshack.us/photo/my-images/29/principals.jpg/


  

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:

http://imageshack.us/photo/my-images/525/controlcz.jpg/



but goes direct on the main page
http://imageshack.us/photo/my-images/29/principals.jpg/


  
Do you understand now? I want whenever you go to ip: 6969 it enters the password page.
« Last Edit: April 15, 2012, 09:38:18 am by rodolfovieira » Logged

Miramar Beach, Florida
Offline Offline
Faraday Member
**
Karma: 144
Posts: 5989
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Pages: [1] 2   Go Up
Jump to: