reading an HTML input from arduino

when i write an html doc through arduino, i can print an html value using an arduino variable but how would i read an html (javascript) value into the arduino?

You can use AJAX to grab values from the arduino to JS variable

the += can be used for numbers and Strings assuming pinState is a String.

but how would i read an html (javascript) value into the arduino?

If the browser is sending the request to the arduino, have the arduino capture the request and see what it contains.

i don't know how to send requests to the arduino though, other than a page refresh lol

Your looking for “HTTP POST” or “HTTP PUT”

These are what an HTML FORM sends over. I am sure you can do it with Java.

The arduino will recieve the following from the TCP session



I have a routine that I have been working on that checks the first word to see if it is a POST or a GET (get to get a page) then parses the line after the /r/n (blank line) if it is a POST.

The HTTP PUT will append it to the url line. Kind of like this site where it lists index.php?topic=numbers

On a side note, if you just want to send data over to the arduino and dont want the whole http web site you could load the JSON lib for arduino and send it data in JSON format over the network.

i don’t know how to send requests to the arduino though, other than a page refresh lol

Simple server code serving a web page with a text box. what is received by the arduino is displayed in the serial monitor.

//zoomkat 12-08-12
//get submit box code
//for use with IDE 1.0
//open serial monitor to see what the arduino receives
//use the \ slash to escape the " in the html or use a '
//address will look like when submited
//for use with W5100 based ethernet shields
//note that the below bug fix may be required

#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
  //start Ethernet
  Ethernet.begin(mac, ip, gateway, gateway, subnet);

  //enable serial data print 
  Serial.println("server text box test1"); // 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 =;

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

          //store characters to string 
          readString += c; 

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

          Serial.println(readString); //see what was captured

          //now output HTML data header

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

          client.println("<TITLE>Arduino GET test page</TITLE>");

          client.println("<H1>HTML form GET example</H1>");

          client.println("<FORM ACTION='/' method=get >"); //uses IP/port of web page

          client.println("Pin 5 'on5' or 'off5': <INPUT TYPE=TEXT NAME='LED' VALUE='' SIZE='25' MAXLENGTH='50'>

          client.println("<INPUT TYPE=SUBMIT NAME='submit' VALUE='Change Pin 5!'>");




          //stopping client

          if(readString.indexOf("on5") >0)//checks for on
            digitalWrite(5, HIGH);    // set pin 5 high
            Serial.println("Led On");
          if(readString.indexOf("off5") >0)//checks for off
            digitalWrite(5, LOW);    // set pin 5 low
            Serial.println("Led Off");
          //clearing string for next read