Go Down

Topic: Ethernet Shield with index.htm SDcard. (Read 11 times) previous topic - next topic

zoomkat

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: [Select]

<a href="http://www.espn.com" target="_blank">
<img src="ahman.gif" border="0"> </a>
Consider the daffodil. And while you're doing that, I'll be over here, looking through your stuff.   8)


zoomkat

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

rodolfovieira

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: [Select]
<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.

rodolfovieira

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: [Select]
* /

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

Go Up