loading
Picture of Arduino Led Server
intec nunchuk schematic.jpg
web server.png
A  simple webpage to control your 8 leds.


What you need:
Arduino.
Ethernet shield.
8 x leds.
8 x 1k resistors.
1 x jumper cable.

You only show 7 leds instead of eight. I only could get lines 2-7 to work.

Have not tested the electronics part of it yet, but did a little window dressing to make it easier for me to read.

Screenshot from 2015-05-09 19:00:44.png
JohnC20 made it!3 months ago

Now it should be noted that the diagram for LEDs is reversed. the Anode is tie to ground making the LEDs not light. Tie the Anodes to 5v or 3.3v and it will work. BUT the webpage display would be wrong. If the Cathodes were tied to ground then all works as shown.

LED Server.jpg
Fearce11 year ago

I've made this and noticed something... The pins and their respectful outputs don't match up, so after a few "TWEAKS" I've fixed it to work for me.

Here is the changed code below:

#include <Ethernet.h>

#include <SPI.h>

//network NB: Pins 10, 11, 12 and 13 are reserved for Ethernet module.

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

byte ip[] = { 192, 168, 2, 200 };

byte gateway[] = { 192, 168, 1, 1 };

byte subnet[] = { 255, 255, 255, 0 };

String inString = String(35);

String Led;

int led[] = {00, 1, 2, 3, 4, 5, 6, 7, }; //Led pins num 0 in arry is not used

int numofleds = 8; //numofleds

String value[] = {"on","on","on","on","on","on","on","on","on"}; //startup all led are off

EthernetServer server(80);

String data;

void setup()

{

Serial.begin(9600);

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

server.begin();

//set pin mode

for (int j = 0; j < (numofleds + 1); j++){

pinMode(led[j], OUTPUT);

}

Serial.println("Serial READY");

Serial.println("Ethernet READY");

Serial.println("Server READY");

}

void loop()

{

EthernetClient client = server.available();

if(client){

// an http request ends with a blank line

boolean current_line_is_blank = true;

while (client.connected()) {

if(client.available()) {

char c = client.read();

// if we've gotten to the end of the line (received a newline

// character) and the line is blank, the http request has ended,

// so we can send a reply

if (inString.length() < 35) {

inString.concat(c);

}

if (c == '\n' && current_line_is_blank) {

// send a standard http response header

client.println("HTTP/1.1 200 OK");

client.println("Content-Type: text/html");

client.println();

client.println("<html><body><form method=get>");

client.println("<p>Led controller</p>");

for(int i=1;i < (numofleds + 1) ;i++){

Led = String("led") + i;

if(inString.indexOf(Led+"=on")>0 || inString.indexOf("all=on")>0){

Serial.println(Led+"on");

digitalWrite(led[i], HIGH);

value[i] = "off";

}else if(inString.indexOf(Led+"=off")>0 || inString.indexOf("all=off")>0 ){

Serial.println(Led+"on");

digitalWrite(led[i], LOW);

value[i] = "on";

}

client.println("<br>"+Led+" <input type=submit name="+Led+" value="+value[i]+">");

}

client.println("<br>All <input type=submit name=all value=on><input type=submit name=all value=off>");

client.println("</form>r<html></body>");

break;

}

if (c == '\n') {

// we're starting a new line

current_line_is_blank = true;

} else if (c != '\r') {

// we've gotten a character on the current line

current_line_is_blank = false;

}

}

}

// give the web browser time to receive the data

delay(10);

inString = "";

client.stop();

}

}

teqmo Fearce112 months ago

For some reason its got a " r" at the end of the page any ideas?

Fearce1 teqmo10 months ago

The line of code that cantains the invalid "r" is as follows

client.println("</form>r<html></body>");

Just find and remove the "r" in your copy of the code and it shouldn't be displayed anymore.

A simple typo was all it was.

alexm3131 year ago

Good job, i want to use relay for lamps, the code working? Or must to do something else with the code? Thanks in advance!

Would there be a way to eliminate the Ethernet cable and do this over wifi?

bboudreau2 years ago
Nicely done.