Java Buttons

I have an Ethernet shield for my Mega 2560. It has a HTML document saved on it for the static data, then the dynamic data is coded in Java.

I have coded in the .html file the buttons, although I don't know how to refer to the html buttons coded in my sketch.

All the tutorials I can find have their webserver coded in client.println, rather than a .html file.

Could someone guide me in the direction of a tutorial that showed how to use a button on the webserver with Java or a .html file?

PHP on server side, like: Ex: http://makezine.com/2013/06/19/arduino-powered-poker-table/

Note added: the author is using a PC server with Ajax & PHP. See link in article for code.

Could someone guide me in the direction of a tutorial that showed how to use a button on the webserver with Java or a .html file?

Test code with basic button type actions.

//zoomkat 8-04-12
//simple button GET server code to control servo and arduino pins 5, 6, and 7
//for use with IDE 1.0
//open serial monitor to see what the arduino receives
//use ' instead of " in the html 
//address will look like http://192.168.1.102:84 when submited
//for use with W5100 based ethernet shields
///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>

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
  pinMode(6, OUTPUT); //pin selected to control
  pinMode(7, OUTPUT); //pin selected to control
  pinMode(8, OUTPUT); //pin selected to control
  //start Ethernet
  Ethernet.begin(mac, ip, gateway, gateway, subnet);
  server.begin();

  //enable serial data print 
  Serial.begin(9600); 
  Serial.println("server multi pin button 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>");
          
          // For simple testing, pin 5, 6, 7, and 8 are used in buttons
          // DIY buttons
          client.println("<a href=/?on2 >ON</a>"); 
          client.println("<a href=/?off3 >OFF</a>"); 
          client.println("&nbsp;<a href=/?off357 >ALL OFF</a>

"); 

          // mousedown buttons
          client.println("<input type=button value=ON onmousedown=location.href='/?on4;'>"); 
          client.println("<input type=button value=OFF onmousedown=location.href='/?off5;'>");        
          client.println("&nbsp;<input type=button value='ALL OFF' onmousedown=location.href='/?off3579;'>

");        
                   
          // mousedown radio buttons
          client.println("<input type=radio onmousedown=location.href='/?on6;'>ON</>"); 
          client.println("<input type=radio onmousedown=location.href='/?off7;'>OFF</>"); 
          client.println("&nbsp;<input type=radio onmousedown=location.href='/?off3579;'>ALL OFF</>

");    
   
          
          // custom buttons
          client.print("<input type=submit value=ON style=width:100px;height:45px onClick=location.href='/?on8;'>");
          client.print("<input type=submit value=OFF style=width:100px;height:45px onClick=location.href='/?off9;'>");
          client.print("&nbsp;<input type=submit value='ALL OFF' style=width:100px;height:45px onClick=location.href='/?off3579;'>");

          client.println("</BODY>");
          client.println("</HTML>");
 
          delay(1);
          //stopping client
          client.stop();

          ///////////////////// control arduino pin
          if(readString.indexOf('2') >0)//checks for 2
          {
            digitalWrite(5, HIGH);    // set pin 5 high
            Serial.println("Led 5 On");
          }
          if(readString.indexOf('3') >0)//checks for 3
          {
            digitalWrite(5, LOW);    // set pin 5 low
            Serial.println("Led 5 Off");
          }
          
          if(readString.indexOf('4') >0)//checks for 4
          {
            digitalWrite(6, HIGH);    // set pin 6 high
            Serial.println("Led 6 On");
          }
          if(readString.indexOf('5') >0)//checks for 5
          {
            digitalWrite(6, LOW);    // set pin 6 low
            Serial.println("Led 6 Off");
          }
          
           if(readString.indexOf('6') >0)//checks for 6
          {
            digitalWrite(7, HIGH);    // set pin 7 high
            Serial.println("Led 7 On");
          }
          if(readString.indexOf('7') >0)//checks for 7
          {
            digitalWrite(7, LOW);    // set pin 7 low
            Serial.println("Led 7 Off");
          }     
          
            if(readString.indexOf('8') >0)//checks for 8
          {
            digitalWrite(8, HIGH);    // set pin 8 high
            Serial.println("Led 8 On");
          }
          if(readString.indexOf('9') >0)//checks for 9
          {
            digitalWrite(8, LOW);    // set pin 8 low
            Serial.println("Led 8 Off");
          }         
             
          //clearing string for next read
          readString="";

        }
      }
    }
  }
}

mrburnette:
PHP on server side, like:
Ex: http://makezine.com/2013/06/19/arduino-powered-poker-table/

Note added: the author is using a PC server with Ajax & PHP. See link in article for code.

That is actually a pretty cool project. I don’t think this is quite what I am looking for. It looks like a good way to do buttons, but it is not with html or Java (I am looking at index.php).

zoomkat:

Could someone guide me in the direction of a tutorial that showed how to use a button on the webserver with Java or a .html file?

Test code with basic button type actions.

//zoomkat 8-04-12

//simple button GET server code to control servo and arduino pins 5, 6, and 7
//for use with IDE 1.0
//open serial monitor to see what the arduino receives
//use ’ instead of " in the html
//address will look like http://192.168.1.102:84 when submited
//for use with W5100 based ethernet shields
///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>

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
  pinMode(6, OUTPUT); //pin selected to control
  pinMode(7, OUTPUT); //pin selected to control
  pinMode(8, OUTPUT); //pin selected to control
  //start Ethernet
  Ethernet.begin(mac, ip, gateway, gateway, subnet);
  server.begin();

//enable serial data print
  Serial.begin(9600);
  Serial.println(“server multi pin button 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(“Arduino GET test page”);
          client.println("");
          client.println("");

client.println(“

Zoomkat’s simple Arduino button

”);
         
          // For simple testing, pin 5, 6, 7, and 8 are used in buttons
          // DIY buttons
          client.println(“ON”);
          client.println(“OFF”);
          client.println(" ALL OFF

");

// mousedown buttons
          client.println("<input type=button value=ON onmousedown=location.href=’/?on4;’>");
          client.println("<input type=button value=OFF onmousedown=location.href=’/?off5;’>");       
          client.println(" <input type=button value=‘ALL OFF’ onmousedown=location.href=’/?off3579;’>

“);       
                 
          // mousedown radio buttons
          client.println(”<input type=radio onmousedown=location.href=’/?on6;’>ON</>");
          client.println("<input type=radio onmousedown=location.href=’/?off7;’>OFF</>");
          client.println(" <input type=radio onmousedown=location.href=’/?off3579;’>ALL OFF</>

“);   
 
         
          // custom buttons
          client.print(”<input type=submit value=ON style=width:100px;height:45px onClick=location.href=’/?on8;’>");
          client.print("<input type=submit value=OFF style=width:100px;height:45px onClick=location.href=’/?off9;’>");
          client.print(" <input type=submit value=‘ALL OFF’ style=width:100px;height:45px onClick=location.href=’/?off3579;’>");

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

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

///////////////////// control arduino pin
          if(readString.indexOf(‘2’) >0)//checks for 2
          {
            digitalWrite(5, HIGH);    // set pin 5 high
            Serial.println(“Led 5 On”);
          }
          if(readString.indexOf(‘3’) >0)//checks for 3
          {
            digitalWrite(5, LOW);    // set pin 5 low
            Serial.println(“Led 5 Off”);
          }
         
          if(readString.indexOf(‘4’) >0)//checks for 4
          {
            digitalWrite(6, HIGH);    // set pin 6 high
            Serial.println(“Led 6 On”);
          }
          if(readString.indexOf(‘5’) >0)//checks for 5
          {
            digitalWrite(6, LOW);    // set pin 6 low
            Serial.println(“Led 6 Off”);
          }
         
          if(readString.indexOf(‘6’) >0)//checks for 6
          {
            digitalWrite(7, HIGH);    // set pin 7 high
            Serial.println(“Led 7 On”);
          }
          if(readString.indexOf(‘7’) >0)//checks for 7
          {
            digitalWrite(7, LOW);    // set pin 7 low
            Serial.println(“Led 7 Off”);
          }   
         
            if(readString.indexOf(‘8’) >0)//checks for 8
          {
            digitalWrite(8, HIGH);    // set pin 8 high
            Serial.println(“Led 8 On”);
          }
          if(readString.indexOf(‘9’) >0)//checks for 9
          {
            digitalWrite(8, LOW);    // set pin 8 low
            Serial.println(“Led 8 Off”);
          }       
           
          //clearing string for next read
          readString="";

}
      }
    }
  }
}

I have seen many tutorials that were very similar to this, but I don’t know how to apply this example to a file saved on my SD card. If all the html was in client.println it would be fine, but it is a saved file.

I have seen many tutorials that were very similar to this, but I don’t know how to apply this example to a file saved on my SD card. If all the html was in client.println it would be fine, but it is a saved file.

Web server test code that uploads typical web page files from the SD card.

//zoomkat 1/25/13
//SD server slider test code
//open serial monitor to see what the arduino receives
//address will look like http://192.168.1.102:84/servosld.htm when submited
//for use with W5100 based ethernet shields
//put the servosld.htm, slider.js, bluev_sl.gif,
//and bluev_bg.gif on the SD card
//files at http://web.comporium.net/~shb/servoslider.htm page


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

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

  Serial.begin(9600);

  // disable w5100 while setting up SD
  pinMode(10,OUTPUT);
  digitalWrite(10,HIGH);
  Serial.print("Starting SD..");
  if(!SD.begin(4)) Serial.println("failed");
  else Serial.println("ok");

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

  //delay(2000);
  server.begin();
  Serial.println("Ready");

}

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
          if(readString.indexOf("servosld") >=0) {
          client.println("Content-Type: text/html");
          client.println(); }

          if(readString.indexOf("slider") >=0) {
          client.println("Content-Type: application/x-javascript");
          client.println(); }
          
          if(readString.indexOf("bluev") >=0) {
          client.println("Content-Type: image/gif");
          client.println(); }

          if(readString.indexOf("servosld") >=0) {
            File myFile = SD.open("SERVOSLD.HTM");
            if (myFile) {
              while (myFile.available()) {
                client.write(myFile.read());
              }
              myFile.close();
            }
          }

          if(readString.indexOf("slider") >=0) {
            File myFile = SD.open("slider.js");
            if (myFile) {
              while (myFile.available()) {
                client.write(myFile.read());
              }
              myFile.close();
            }
          }

          if(readString.indexOf("bluev_sl") >=0) {
            File myFile = SD.open("bluev_sl.gif");
            if (myFile) {
              while (myFile.available()) {
                client.write(myFile.read());
              }
              myFile.close();
            }
          }

          if(readString.indexOf("bluev_bg") >=0) {
            File myFile = SD.open("bluev_bg.gif");
            if (myFile) {
              while (myFile.available()) {
                client.write(myFile.read());
              }
              myFile.close();
            }
          }

          delay(1);
          //stopping client
          client.stop();
          readString="";

        }
      }
    }
  } 
}

Thank you Zoomkat for being brutal. I can't just have code handed to me. It took me a little bit to figure out how to apply your html buttons to a saved html file, but I got it. Thanks again.