Κυριακή 26 Μαΐου 2013

PC BUSTERS ARDUINO WEB CONTROL OUTPUT

processing code

#include <SPI.h>
#include <Ethernet.h>
// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = { 
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,0, 177);

// Initialize the Ethernet server library
// with the IP address and port you want to use 
// (port 80 is default for HTTP):
EthernetServer server(80);

int LEDpin = 4;
String readString = String(30);
String state = String(3);

void setup()
{
  Serial.begin(9600);
  while (!Serial);
  // start the Ethernet connection and the server:
  Ethernet.begin(mac, ip);
  server.begin();

  //Sets the LEDpin as an output
  pinMode(LEDpin,OUTPUT);

  digitalWrite(LEDpin,LOW);
  state = "OFF";
}

void loop()
{
  // listen for incoming clients
  EthernetClient 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+6) == "LED=ON") {
            digitalWrite(LEDpin,HIGH);
            delay(1000);
            digitalWrite(LEDpin,LOW);
            delay(100);
            digitalWrite(LEDpin,HIGH);
            state = "ON";
          }
          else if (readString.substring(LED,LED+7) == "LED=OFF") {
            digitalWrite(LEDpin,LOW);
            state = "OFF";
          } 
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();
          client.print("<b>LED CONTROL</b>");
          client.print("<br><br>");
          client.print("<br><br>");
          client.print("LED is ");
          client.print(state);
          client.print("<br><br>");
          client.print(bitRead(PORTD,4));//Reads bit 4 of register PORTD which contains the current state (high/low) of pin 4
          client.print("<br><br>");
          if (bitRead(PORTD,4)==1){
            client.print(" Pin 4 is High as fuck");
            client.print("<br><br>");
            Serial.println(state);
          }
          else
          {
            client.print("Pin 4 is DOWN");
            client.print("<br><br>");
            Serial.println(state);
          }

          if (state == "ON") {
            client.print("<body style=background-color:green>");
            client.println("<form method=get name=LED><input type=submit name=LED value=OFF>  <b>LED ON</b><form>");
            //client.println("<a href="./?LED=F">Turn Off<a>");
          }
          else {
            client.print("<body style=background-color:red>");
            client.println("<form method=get name=LED><input type=submit name=LED value=ON> <b>LED OFF</b><form>");
            //client.println("<a href="./?LED=ON">Turn On<a>");
          }
          client.print("<br><br>");
          client.print("<br><br>");
          client.print("<b>PC BUSTERS</b>   Web Control Led Project 2013");
          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();
  }
}
Read more...