/*
Web Server
A simple web server
Circuit:
- Ethernet shield attached to pins 10, 11, 12, 13
*/
//-------------------------------------------------------------------------------------------------------
#include <SPI.h>
#include <Ethernet.h>
#include <UTFT.h>
extern uint8_t SmallFont[];
UTFT myGLCD(ITDB28,A5,A4,A3,A2);
// Enter a MAC address and IP address for your controller below.
byte mac[] = {0x90, 0xA2, 0xDA, 0x0D, 0x48, 0xD3 };
// The IP address will be dependent on your local network:
// assign an IP address for the controller:
IPAddress ip(10,80,45,254);
IPAddress gateway(10,80,45,211);
IPAddress subnet(255, 255, 255, 0);
// Initialize the Ethernet server library with the port you want to use.
EthernetServer server(80);
String readString;
//-------------------------------------------------------------------------------------------------------
//-------------------------------------------------
// Any extra codes for Declaration :
// Declare Pin 8 as an LED because thats what we will be connecting the LED to.You could use any other pin and would then have to change the pin number.
//-------------------------------------------------
//-------------------------------------------------------------------------------------------------------
void setup()
{
pinMode(53, OUTPUT);
pinMode(51, OUTPUT);
pinMode(47, OUTPUT);
pinMode(49, OUTPUT);
pinMode(45, OUTPUT);
pinMode(43, OUTPUT);
digitalWrite(51, LOW);
digitalWrite(47, LOW);
digitalWrite(43, LOW);
//-------------------------------------------------
// Extra Set up code:
//-------------------------------------------------
//-------------------------------------------------------------------------------------------------------
//enable serial data print
randomSeed(analogRead(0));
// Setup the LCD
myGLCD.InitLCD();
myGLCD.setFont(SmallFont);
int buf[318];
int x, x2;
int y, y2;
int r;
// Clear the screen and draw the frame
myGLCD.clrScr();
myGLCD.setColor(255, 0, 0);
myGLCD.fillRect(0, 0, 319, 13);
myGLCD.setColor(64, 64, 64);
myGLCD.fillRect(0, 226, 319, 239);
myGLCD.setColor(255, 255, 255);
myGLCD.setBackColor(255, 0, 0);
myGLCD.print("LED LCD REMOTE CONTROLLER", CENTER, 1);
myGLCD.setBackColor(64, 64, 64);
myGLCD.setColor(255,255,0);
myGLCD.print("ACCESS: 10.80.45.254", CENTER, 227);
myGLCD.setBackColor(0,0, 0);
myGLCD.setColor(255,255,255);
myGLCD.print("LED ONE: OFF", CENTER, 16);
myGLCD.print("LED TWO: OFF", CENTER, 32);
myGLCD.print("LED THREE: OFF", CENTER, 48);
Serial.begin(9600);
//start Ethernet
Ethernet.begin(mac, ip, gateway, subnet);
server.begin();
Serial.print("Server is at ");
Serial.println(Ethernet.localIP());
Serial.println("LED Controller Test 1.0");
}
//-------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------
void loop(){
int buf[318];
int x, x2;
int y, y2;
int r;
digitalWrite(51, LOW);
digitalWrite(47, LOW);
digitalWrite(43, LOW);
// listen for incoming clients
EthernetClient client = server.available();
if (client)
{
Serial.println("new 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);
Serial.write(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 you can send a reply
//if HTTP request has ended
if (c == '\n') {
Serial.println(readString); //print to serial monitor for debuging
//--------------------------------------------------------------------------------------------------------
// Needed to Display Site:
client.println("HTTP/1.1 200 OK"); //send new page
client.println("Content-Type: text/html");
client.println();
client.println("");
client.println("");
//--------------------------------------------------------------------------------------------------------
//-------------------------------------------------
// what is being Displayed :
//-------------------------------------------------
// Code which needs to be Implemented:
if(readString.indexOf("?L1ON")>0)
{
digitalWrite(53, HIGH); // set pin 8 high
myGLCD.clrScr();
myGLCD.setColor(255,255,255);
myGLCD.print("LED ONE: ON", CENTER, 16);
Serial.println("LED 1 ON");
client.stop();
Serial.println("client disonnected");
}else
if(readString.indexOf("?L1OFF")>0)
{
digitalWrite(53, LOW); // set pin 8 high
myGLCD.print("LED ONE: OFF", CENTER, 16);
Serial.println("LED 1 OFF");
client.stop();
Serial.println("client disonnected");
}else
if(readString.indexOf("?L2ON")>0)
{
digitalWrite(49, HIGH); // set pin 8 high
myGLCD.print("LED TWO: ON", CENTER, 32);
Serial.println("LED 2 ON");
client.stop();
Serial.println("client disonnected");
}else
if(readString.indexOf("?L2OFF")>0 )
{
digitalWrite(49, LOW); // set pin 8 high
myGLCD.print("LED TWO: OFF", CENTER, 32);
Serial.println(" LED 2 OFF");
client.stop();
Serial.println("client disonnected");
}else
if(readString.indexOf("?L3ON")>0)
{
digitalWrite(45, HIGH); // set pin 8 high
myGLCD.print("LED THREE: ON", CENTER, 48);
Serial.println("LED 3 ON");
client.stop();
Serial.println("client disonnected");
}else
if(readString.indexOf("?L3OFF")>0)
{
digitalWrite(45, LOW); // set pin 8 high
myGLCD.print("LED THREE: OFF", CENTER, 48);
Serial.println("LED 3 OFF");
client.stop();
Serial.println("client disonnected");
}
//clearing string for next read
readString="";
// give the web browser time to receive the data
delay(1);
// close the connection:
client.stop();
Serial.println("client disonnected");
}
}
}
}
}
}