6 byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
7 EthernetServer server(80);
10 const int numPins = 5;
11 int pins[] = {3, 4, 5, 6, 7};
12 int pinState[] = {0, 0, 0, 0, 0};
19 while (!Serial){}; // Leonardo needs this
20 for (int i = 0; i < numPins; i++)
22 pinMode(pins[i], OUTPUT);
24 if (Ethernet.begin(mac))
26 Serial.print(F("Point your Browser at: http://"));
27 Serial.println(Ethernet.localIP());
31 Serial.println(F("Could not connect to network"));
38 client = server.available();
41 if (client.connected())
44 if (! pageNameIs("/"))
49 client.println(F("HTTP/1.1 200 OK"));
50 client.println(F("Content-Type: text/html"));
61 client.println(F("<html><body>"));
63 client.println(F("<h1>Output Pins</h1>"));
64 client.println(F("<form method='GET'>"));
65 setValuesFromParams();
68 client.println(F("<input type='submit' value='Update'/>"));
69 client.println(F("</form>"));
70 client.println(F("</body></html>"));
73 void sendAnalogReadings()
75 client.println(F("<h1>Analog Inputs</h1>"));
76 client.println(F("<table border='1'>"));
77 for (int i = 0; i < 5; i++)
79 int reading = analogRead(i);
80 client.print(F("<tr><td>A")); client.print(i);
81 client.print(F("</td><td>")); client.print((float) reading / 205.0);
82 client.println(F(" V</td></tr>"));
84 client.println("</table>");
87 void sendHTMLforPins()
89 for (int i = 0; i < numPins; i++)
91 client.print(F("<p>Pin "));
92 client.print(pins[i]);
93 client.print(F("<select name='"));
95 client.println(F("'>"));
96 client.print(F("<option value='0'"));
99 client.print(F(" selected"));
101 client.println(F(">Off</option>"));
102 client.print(F("<option value='1'"));
103 if (pinState[i] == 1)
105 client.print(F(" selected"));
107 client.println(F(">On</option>"));
108 client.println(F("</select></p>"));
114 for (int i = 0; i < numPins; i++)
116 digitalWrite(pins[i], pinState[i]);
120 void setValuesFromParams()
122 for (int i = 0; i < numPins; i++)
124 pinState[i] = valueOfParam(i + '0');
130 readRequestLine(line1);
131 while (readRequestLine(buffer) > 1 && buffer[0] != '\n') {}
134 int readRequestLine(char *line)
138 while (ch != '\n' && i < 100 && client.available())
140 if (client.available())
151 boolean pageNameIs(char* name)
153 // page name starts at char pos 4
157 while (ch != ' ' && ch != '\n' && ch != '?')
159 if (name[i-4] != line1[i])
169 int valueOfParam(char param)
171 for (int i = 0; i < strlen(line1); i++)
173 if (line1[i] == param && line1[i+1] == '=')
175 return (line1[i+2] - '0');