Arduino WEB 16 canais
Arduino WEB 16 canais
#include <Ethernet.h>
#include <SPI.h>
#include <EEPROM.h>
String buttonText[16] = {
int outp = 1;
boolean outputStatus[16];
void setup(){
Serial.begin(9600);
initEepromValues();
readEepromValues();
int var;
var = outputAddress[i];
if(outputInverted == true) {
digitalWrite(var, currentState);
else{
digitalWrite(var, currentState);
server.begin();
Serial.print("Server started at ");
Serial.println(Ethernet.localIP());
void loop(){
checkForClient();
void checkForClient(){
if (client) {
int temp,temp1;
while (client.connected()) {
if (client.available()) {
char c = client.read();
if(c == '*'){
printHtmlHeader(client);
printLoginTitle(client);
printHtmlFooter(client);
break;
if(!sentHeader){
printHtmlHeader(client);
printHtmlButtonTitle(client);
sentHeader = true;
reading = false;
}
if(c == '?') {
reading = true;
if(reading){
if(c == 'H') {
outp = 1;
if(c == 'L') {
outp = 0;
if( c == '1'){
char c = client.read();
switch (c) {
case '0':
break;
case '1':
break;
case '2':
break;
case '3':
break;
case '4':
triggerPin(outputAddress[14], client, outp);
break;
case '5':
break;
default:
char c = client.read();
else {
switch (c) {
case '0':
case '2':
break;
case '3':
break;
case '4':
break;
case '5':
break;
case '6':
triggerPin(outputAddress[6], client, outp);
break;
case '7':
break;
case '8':
break;
case '9':
break;
}
if (c == '\n' && currentLineIsBlank){
printLastCommandOnce = true;
printButtonMenuOnce = true;
break;
else{
if (writeToEeprom == true){
writeEepromValues();
Serial.println("No Clients for more then a minute - Writing statuses to
Eeprom.");
writeToEeprom = false;
if (pin != 777){
if(outp == 1) {
if (outputInverted ==false){
digitalWrite(pin, HIGH);
else{
digitalWrite(pin, LOW);
if(outp == 0){
if (outputInverted ==false){
digitalWrite(pin, LOW);
else{
digitalWrite(pin, HIGH);
readOutputStatuses();
if (printButtonMenuOnce == true){
printHtmlButtons(client);
printButtonMenuOnce = false;
client.println("");
client.println("<FORM>");
allOn += "H";
allOn += outputAddress[var];
allOff += "L";
allOff += outputAddress[var];
client.print("<tr>\n");
client.print("<td><h4>");
client.print(buttonText[var]);
client.print("</h4></td>\n");
client.print("<td>");
client.print("\" onClick=\"parent.location='/?H");
client.print(var);
client.print("'\"></td>\n");
client.print("\" onClick=\"parent.location='/?L");
client.print(var);
client.print("'\"></td>\n");
if (outputStatus[var] == true ){
if (outputInverted == false){
client.print(" <td><div class='green-circle'><div
class='glare'></div></div></td>\n");
else{
else
if (outputInverted == false){
else{
client.print("</tr>\n");
if (switchOnAllPinsButton == true ){
client.print("<tr>\n<td><INPUT TYPE=\"button\" VALUE=\"Switch ON All
Pins");
client.print("\" onClick=\"parent.location='/?");
client.print(allOn);
client.print("'\"></td>\n");
client.print("\" onClick=\"parent.location='/?");
client.print(allOff);
client.print("'\"></td>\n<td></td>\n<td></td>\n</tr>\n");
client.println("</table>");
client.println("</FORM>");
//client.println("</p>");
void readOutputStatuses(){
outputStatus[var] = digitalRead(outputAddress[var]);
}
void readEepromValues(){
outputStatus[adr] = EEPROM.read(adr);
void writeEepromValues(){
EEPROM.write(adr, outputStatus[adr]);
void initEepromValues(){
EEPROM.write(adr, 0);
timeConnectedAt = millis();
Serial.print(timeConnectedAt);
writeToEeprom = true;
client.println("Content-Type: text/html");
client.println("Connnection: close");
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<head>");
client.println("<title>Ethernet Switching</title>");
client.print(refreshPage);
client.println("; url=/\">");
client.println("<meta name=\"apple-mobile-web-app-capable\"
content=\"yes\">");
client.println("<meta name=\"apple-mobile-web-app-status-bar-style\"
content=\"default\">");
client.println("");
client.println(" }");
client.println("");
client.println("body {");
client.println(" background-image:");
client.println(" }");
client.println("");
client.println(".view {");
client.println(" }");
client.println("");
client.println(".header-wrapper {");
client.println(" background-image:");
client.println(" from(rgba(255,255,255,.4)),");
client.println(" from(transparent),");
client.println(" }");
client.println("");
client.println(".header-wrapper h1 {");
client.println(" }");
client.println("");
client.println(".group-wrapper {");
client.println(" }");
client.println("");
client.println(".group-wrapper h2 {");
client.println(" }");
client.println("");
client.println(".group-wrapper h3 {");
client.println(" }");
client.println("");
client.println(".group-wrapper h4 {");
client.println(" }");
client.println("");
client.println(" margin-left:auto;");
client.println(" margin-right:auto;");
client.println(" }");
client.println("");
client.println(".green-circle {");
client.println(" }");
client.println("");
client.println(".black-circle {");
client.println(" }");
client.println("");
client.println(" }");
client.println("");
client.println("</style>");
client.println("</head>");
client.println("<body>");
client.println("<div class=\"view\">");
client.println(" </div>");
printLastCommandOnce = false;
printButtonMenuOnce = false;
allOn = "";
allOff = "";
client.println(rev);
client.println("</h3></div>\n</div>\n</body>\n</html>");
delay(1);
delay (2);
client.println("<div class=\"group-wrapper\">");
client.println();