I haven’t played with Arduino for a while so I decided to start playing with Ethernet Shields.
What’s SMD? It’s Surface Mounted Device. And because it consumes less power and this RGB module produces more light, I decided to start using it for upcoming moodlight projects (Or other stuff).
Any way, since I already know how to control RGB lights, I decided to pull out a web server and make it accept requests and control lights.
There’s really no circuit diagram or anything, just attach the Ethernet Shield then connect the RGB pins to Pin #3, Pin #5, and Pin #6 (Since they work in PWM which are analog-output compatible).
What we need to do coding-wise is to include SPI.h and Ethernet.h, set up the IP Addresses (Since it’ll be a server, not a client.). You can use whatever Mac Address you want, so I used the DEADBEEFFEED mac address for teh lulz.
Then you let it listen for connections.
When it connects, it dumps lines in a string variable, parse it (I did a retarded parsing, you can do it on your own) then writes analog output to the mentioned pins above and we’re done!
Done explaining the code? Here’s the code below:
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 1, 15 };
byte gateway[] = { 192, 168, 1, 1 };
byte subnet[] = { 255, 255, 255, 0 };
EthernetServer server(80);
String readString;
int pinThree = 0;
int pinFive = 0;
int pinSix = 0;
void setup()
{
pinMode(3, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
Ethernet.begin(mac, ip, gateway, subnet);
server.begin();
for (int x=0; x<255; x++)
{
SetColor(x,x,x);
delay(100);
}
}
void loop()
{
EthernetClient client = server.available();
if (client)
{
while (client.connected())
{
if (client.available())
{
char c = client.read();
if (readString.length() < 100)
{
readString += c;
}
if (c == '\n')
{
ProcessGet(readString);
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
client.println("<HTML>");
client.println(" <HEAD>");
client.println(" <TITLE>RGB SMD TEST</TITLE>");
client.println(" </HEAD>");
client.println("<BODY>");
client.println(" <H1>RGB SMD TEST</H1>");
client.println(" <hr />");
client.println(" <br />");
client.println(" <form method=\"GET\">");
client.println(" <label>Green (000 to 255)</label><br/>");
client.print(" <input name=\"three\" value=\"");
client.print(pinThree);
client.println("\"><br/>");
client.println(" <label>Red (000 to 255)</label><br/>");
client.print(" <input name=\"five\" value=\"");
client.print(pinFive);
client.println("\"><br/>");
client.println(" <label>Blue (000 to 255)</label><br/>");
client.print(" <input name=\"six\" value=\"");
client.print(pinSix);
client.println("\"><br/>");
client.println(" <input type=\"submit\" value=\"Set color\"/>");
client.println(" </form>");
client.println("</BODY>");
client.println("</HTML>");
delay(1);
client.stop();
readString = "";
}
}
}
}
}
void SetColor(int Three,int Five, int Six)
{
analogWrite(3, Three);
analogWrite(5, Five);
analogWrite(6, Six);
pinThree = Three;
pinFive = Five;
pinSix = Six;
}
void ProcessGet(String strGet)
{
//Three = Green
//Five = Reg
//Six = Blue
String temp = strGet.substring(12,15);
pinThree = temp.toInt();
temp = strGet.substring(21,24);
pinFive = temp.toInt();
temp = strGet.substring(29,32);
pinSix = temp.toInt();
SetColor(pinThree,pinFive,pinSix);
}
