Falta de energia o Arduino retorna com saidas acionadas - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)2024-03-29T06:50:04Zhttps://labdegaragem.com/forum/topics/falta-de-energia-o-arduino-retorna-com-saidas-acionadas?commentId=6223006%3AComment%3A678489&xg_source=activity&feed=yes&xn_auth=noOk, muito obrigado!!!tag:labdegaragem.com,2018-07-13:6223006:Comment:6787082018-07-13T20:18:42.463ZRoberto Corteshttps://labdegaragem.com/profile/RobertoCortes
<p>Ok, muito obrigado!!!</p>
<p>Ok, muito obrigado!!!</p> Eu acredito que ele não guard…tag:labdegaragem.com,2018-07-13:6223006:Comment:6787072018-07-13T20:17:46.924ZRoberto Corteshttps://labdegaragem.com/profile/RobertoCortes
<p>Eu acredito que ele não guarda na memória, se anteriormente está tudo desligado ao retornar a energia ele retorna com todas saídas ligadas.</p>
<p>Eu acredito que ele não guarda na memória, se anteriormente está tudo desligado ao retornar a energia ele retorna com todas saídas ligadas.</p> Roberto,
No link que anexei,…tag:labdegaragem.com,2018-07-13:6223006:Comment:6784912018-07-13T00:12:24.657ZCarlos kwiekhttps://labdegaragem.com/profile/Carloskwiek
<p>Roberto,</p>
<p>No link que anexei, entre outras coisas para ajudar a quem abre um tópico ou responde ao mesmo, ensina a não colar códigos na área de texto como você fez, já que entre outras coisas, ao copiar o mesmo para tentar replicar, se perdem informações que terminam não compilando, o ideal é você anexar o código como um arquivo txt, ou .ino, ou colar no pastbin e colocar o link aqui.</p>
<p>Espero tenha entendido esta parte.</p>
<p>Outra coisa importante, é saber como você esta…</p>
<p>Roberto,</p>
<p>No link que anexei, entre outras coisas para ajudar a quem abre um tópico ou responde ao mesmo, ensina a não colar códigos na área de texto como você fez, já que entre outras coisas, ao copiar o mesmo para tentar replicar, se perdem informações que terminam não compilando, o ideal é você anexar o código como um arquivo txt, ou .ino, ou colar no pastbin e colocar o link aqui.</p>
<p>Espero tenha entendido esta parte.</p>
<p>Outra coisa importante, é saber como você esta conectado seu circuito, pode ser foro, descrição, desenho, etc. muitas vezes o problema pode ser no modulo rele por exemplo que possui logica invertida, por isso trate de ler o link, e trate de adaptar se topico ao mesmo, desta forma será mais fácil ajuda-lo acredito.</p>
<p>Abs.</p>
<p></p>
<p>CK</p>
<p></p>
<p> </p> Olá Flávio,
Ainda não fiz o…tag:labdegaragem.com,2018-07-12:6223006:Comment:6785782018-07-12T21:05:48.055ZRoberto Corteshttps://labdegaragem.com/profile/RobertoCortes
<p>Olá Flávio,</p>
<p></p>
<p> Ainda não fiz o esquema, apenas alimentei o Arduino Mega com uma fonte de 5v 5 amperes e essa mesma fonte alimenta os reles acopladores, o Arduino apenas manda o sinal positivo para acionar o rele.</p>
<p>Olá Flávio,</p>
<p></p>
<p> Ainda não fiz o esquema, apenas alimentei o Arduino Mega com uma fonte de 5v 5 amperes e essa mesma fonte alimenta os reles acopladores, o Arduino apenas manda o sinal positivo para acionar o rele.</p> ??? desculpe Carlos, não ente…tag:labdegaragem.com,2018-07-12:6223006:Comment:6784872018-07-12T21:03:14.756ZRoberto Corteshttps://labdegaragem.com/profile/RobertoCortes
<p>??? desculpe Carlos, não entendi.</p>
<p>??? desculpe Carlos, não entendi.</p> Já fiz este teste Giliardi, n…tag:labdegaragem.com,2018-07-12:6223006:Comment:6782802018-07-12T21:01:38.138ZRoberto Corteshttps://labdegaragem.com/profile/RobertoCortes
<p>Já fiz este teste Giliardi, neste caso quando aciono o liga a lâmpada desliga e quando desligo a lampada liga.</p>
<p></p>
<p></p>
<p>Já fiz este teste Giliardi, neste caso quando aciono o liga a lâmpada desliga e quando desligo a lampada liga.</p>
<p></p>
<p></p> Olá
Nos mostre também o circ…tag:labdegaragem.com,2018-07-11:6223006:Comment:6782542018-07-11T21:46:47.958ZFlavio Hernanhttps://labdegaragem.com/profile/FlavioHernan
<p>Olá </p>
<p>Nos mostre também o circuito, esquemas que você usou no seu projeto.</p>
<p></p>
<p></p>
<p></p>
<p>Olá </p>
<p>Nos mostre também o circuito, esquemas que você usou no seu projeto.</p>
<p></p>
<p></p>
<p></p> Olá,
Leia este topico e trate…tag:labdegaragem.com,2018-07-11:6223006:Comment:6785552018-07-11T21:29:56.974ZCarlos kwiekhttps://labdegaragem.com/profile/Carloskwiek
<p>Olá,</p>
<p>Leia este topico e trate de postar o codigo anexado.</p>
<p><a href="http://labdegaragem.com/forum/topics/sugest-o-de-como-postar" target="_blank">http://labdegaragem.com/forum/topics/sugest-o-de-como-postar</a></p>
<p></p>
<p>Abs.</p>
<p></p>
<p>CK</p>
<p>Olá,</p>
<p>Leia este topico e trate de postar o codigo anexado.</p>
<p><a href="http://labdegaragem.com/forum/topics/sugest-o-de-como-postar" target="_blank">http://labdegaragem.com/forum/topics/sugest-o-de-como-postar</a></p>
<p></p>
<p>Abs.</p>
<p></p>
<p>CK</p> Obrigado Giliardi,
Abaixo o…tag:labdegaragem.com,2018-07-11:6223006:Comment:6783602018-07-11T17:31:32.135ZRoberto Corteshttps://labdegaragem.com/profile/RobertoCortes
<p>Obrigado Giliardi,</p>
<p></p>
<p> Abaixo o código.</p>
<p></p>
<p> </p>
<p>//Ethernet Port</p>
<p>EthernetServer server = EthernetServer(80); //default html port 80</p>
<p>//O número de saídas vai ser comutado.</p>
<p>int outputQuantity = 19; //não deve exceder 10</p>
<p>//Inverta a saída dos leds</p>
<p>boolean outputInverted = true; //true or false</p>
<p>// Isso é feito no caso a placa de relé acionar o relé em negativo, ao invés de positivo<br></br>//Html page refresh</p>
<p>int refreshPage…</p>
<p>Obrigado Giliardi,</p>
<p></p>
<p> Abaixo o código.</p>
<p></p>
<p> </p>
<p>//Ethernet Port</p>
<p>EthernetServer server = EthernetServer(80); //default html port 80</p>
<p>//O número de saídas vai ser comutado.</p>
<p>int outputQuantity = 19; //não deve exceder 10</p>
<p>//Inverta a saída dos leds</p>
<p>boolean outputInverted = true; //true or false</p>
<p>// Isso é feito no caso a placa de relé acionar o relé em negativo, ao invés de positivo<br/>//Html page refresh</p>
<p>int refreshPage = 20; //default is 50sec.</p>
<p>//Tenha em atenção que, se conseguir que a atualização seja muito rápida, a página pode ficar inacessível</p>
<p>//Exibir ou ocultar os botões "Ativar todos os pinos" na parte inferior da página</p>
<p>int switchOnAllPinsButton = false; //true or false</p>
<p>int outputAddress[] = { 22,24,26,28,30,32,34,36,38,40,42,44,46,48,49,47,43,41,45}; //Allocate 10 spaces and name the output pin address.</p>
<p>String buttonText[19] = {</p>
<p>"01.ESCRITORIO","02.RUIVA V","03.RUIVA Q","04.CORREDOR 2","05.CORREDOR 1 ","06.FR.PORTAO","07.LATERAL","08.VARANDA","09.SNOW","10.CHURRASQ.","11.LIVRE","12.LIVRE","13.LIVRE","14.LIVRE","15.LIVRE","16.LIVRE","17.LIVRE","18.LIVRE","19.LIVRE"};</p>
<p>// Defina a saída para manter o último status após a reciclagem de energia.</p>
<p>int retainOutputStatus[19] = { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};//1-reter o último status. 0-será desligado após o corte de energia.</p>
<p>////////////////////////////////////////////////////////////////////////</p>
<p>//VARIABLES DECLARATION</p>
<p>////////////////////////////////////////////////////////////////////////</p>
<p>int outp = 0;</p>
<p>boolean printLastCommandOnce = false;</p>
<p>boolean printButtonMenuOnce = false;</p>
<p>boolean initialPrint = true;</p>
<p>String allOn = "";</p>
<p>String allOff = "";</p>
<p>boolean reading = false;</p>
<p>boolean outputStatus[19]; //Crie uma matriz booleana para a quantidade máxima.</p>
<p>String rev = "";</p>
<p>unsigned long timeConnectedAt;</p>
<p>boolean writeToEeprom = false;</p>
<p>/////////////////////////////////////////////////</p>
<p>// Temperature Related Reading</p>
<p>const int tempInPin = A1;</p>
<p>int tempInValue = 0; //temperature read</p>
<p>int tempScaleOutValue = 0; //temperature formatted</p>
<p>int tempOutValue = 0; //temperature formatted</p>
<p>float tempOutDeg = 0.0;</p>
<p>////////////////////////////////////////////////////////////////////////</p>
<p>//RUN ONCE</p>
<p>////////////////////////////////////////////////////////////////////////</p>
<p>//Beginning of Program //Sensor de presença</p>
<p>int pinoled1 = 8; //Pino ligado ao led vermelho<br/>int pinoled2 = 9; //Pino ligado ao led amarelo<br/>int pinoled3 = 19; //Pino ligado ao led verde<br/>int pinoled4 = 10; //Pino ligado ao led azul</p>
<p>int pinopir1 = 2; //Pino ligado ao sensor PIR<br/>int pinopir2 = 3; //Pino ligado ao sensor PIR<br/>int pinopir3 = 4; //Pino ligado ao sensor PIR<br/>int pinopir4 = 5; //Pino ligado ao sensor PIR<br/>int acionamento; //Variavel para guardar valor do sensor</p>
<p>void setup(){</p>
<p>Serial.begin(9600);</p>
<p>initEepromValues();</p>
<p>readEepromValues();</p>
<p>//Set pins as Outputs</p>
<p>boolean currentState = false;</p>
<p>int var;</p>
<p>for (int i = 0; i < outputQuantity; i++){<br/> <br/> pinMode(pinoled1, OUTPUT); //Define pino como saida<br/> pinMode(pinopir1, INPUT); //Define pino sensor como entrada</p>
<p>pinMode(pinoled2, OUTPUT); //Define pino como saida<br/> pinMode(pinopir2, INPUT); //Define pino sensor como entrada</p>
<p>pinMode(pinoled3, OUTPUT); //Define pino como saida<br/> pinMode(pinopir3, INPUT); //Define pino sensor como entrada</p>
<p>pinMode(pinoled4, OUTPUT); //Define pino como saida<br/> pinMode(pinopir4, INPUT); //Define pino sensor como entrada</p>
<p><br/>pinMode(outputAddress[i], OUTPUT);</p>
<p>var = outputAddress[i];</p>
<p>//Switch all outputs to either on or off on Startup</p>
<p>if(outputInverted == true) {</p>
<p>//digitalWrite(outputAddress[var], HIGH);</p>
<p>if(outputStatus[i] == 0){currentState = true;}else{currentState = false;} //check outputStatus if off, switch output accordingly</p>
<p>digitalWrite(var, currentState);</p>
<p>}</p>
<p>else{</p>
<p>//digitalWrite(outputAddress[var], LOW);</p>
<p>if(outputStatus[i] == 0){currentState = false;}else{currentState = true;}//check outputStatus if off, switch output accordingly</p>
<p>digitalWrite(var, currentState);</p>
<p>}</p>
<p>}</p>
<p>//Setting up the IP address. Comment out the one you dont need.</p>
<p>//Ethernet.begin(mac); //for DHCP address. (Address will be printed to serial.)</p>
<p>Ethernet.begin(mac, ip, gateway, subnet); //for manual setup. (Address is the one configured above.)</p>
<p>server.begin();</p>
<p>Serial.print("Server started at ");</p>
<p>Serial.println(Ethernet.localIP());</p>
<p>}</p>
<p>////////////////////////////////////////////////////////////////////////</p>
<p>//LOOP</p>
<p>////////////////////////////////////////////////////////////////////////</p>
<p>//Run once</p>
<p></p>
<p>void loop(){</p>
<p>acionamento = digitalRead(pinopir1); //Le o valor do sensor PIR<br/> if (acionamento == LOW) //Sem movimento, mantem led azul ligado<br/> {<br/> digitalWrite(pinoled1, LOW);<br/> }<br/> else //Caso seja detectado um movimento, aciona o led vermelho<br/> {<br/> digitalWrite(pinoled1, HIGH); <br/> }</p>
<p>acionamento = digitalRead(pinopir2); //Le o valor do sensor PIR<br/> if (acionamento == LOW) //Sem movimento, mantem led azul ligado<br/> {<br/> digitalWrite(pinoled2, LOW);<br/> }<br/> else //Caso seja detectado um movimento, aciona o led vermelho<br/> {<br/> digitalWrite(pinoled2, HIGH);<br/>}</p>
<p>acionamento = digitalRead(pinopir3); //Le o valor do sensor PIR<br/> if (acionamento == LOW) //Sem movimento, mantem led azul ligado<br/> {<br/> digitalWrite(pinoled3, LOW);<br/> }<br/> else //Caso seja detectado um movimento, aciona o led vermelho<br/> {<br/> digitalWrite(pinoled3, HIGH);<br/> }<br/> <br/> acionamento = digitalRead(pinopir4); //Le o valor do sensor PIR<br/> if (acionamento == LOW) //Sem movimento, mantem led azul ligado<br/> {<br/> digitalWrite(pinoled4, LOW);<br/> }<br/> else //Caso seja detectado um movimento, aciona o led azul<br/> {<br/> digitalWrite(pinoled4, HIGH); <br/> }</p>
<p>//Read Temperature Sensor</p>
<p>tempInValue = analogRead(tempInPin);</p>
<p>// Connecting a 10K3 Thermistor to the Arduino Input</p>
<p>// +5V �—————————[10Kohms]—————————[Thermistor]——� 0V</p>
<p>// To Arduino IP �———————————|</p>
<p>tempScaleOutValue = map(tempInValue, 0, 1023, 1023, 0); //Arduino value and NTC of the 10K3 Thermistor</p>
<p>tempOutValue = map(tempScaleOutValue, 130, 870, -170, 730); //range of Arduino Value compared with Temperature</p>
<p>tempOutValue = tempOutValue -45; //Adjustments</p>
<p>tempOutDeg = tempOutValue / 10.0;</p>
<p>checkForClient();</p>
<p>}</p>
<p>////////////////////////////////////////////////////////////////////////</p>
<p>//checkForClient Function</p>
<p>////////////////////////////////////////////////////////////////////////</p>
<p>//</p>
<p>void checkForClient(){</p>
<p>EthernetClient client = server.available();</p>
<p>if (client) {</p>
<p>boolean currentLineIsBlank = true;</p>
<p>boolean sentHeader = false;</p>
<p>int temp,temp1;</p>
<p>while (client.connected()) {</p>
<p>if (client.available()) {</p>
<p>char c = client.read();</p>
<p>if(c == '*'){</p>
<p>printHtmlHeader(client); //call for html header and css</p>
<p>printLoginTitle(client);</p>
<p>printHtmlFooter(client);</p>
<p>break;</p>
<p>}</p>
<p>if(!sentHeader){</p>
<p>printHtmlHeader(client); //call for html header and css</p>
<p>printHtmlButtonTitle(client); //print the button title</p>
<p>sentHeader = true;</p>
<p>}</p>
<p>if(reading && c == ' '){</p>
<p>reading = false;</p>
<p>}</p>
<p>if(c == '?') {</p>
<p>reading = true; //found the ?, begin reading the info</p>
<p>}</p>
<p>if(reading){</p>
<p>//if user input is H set output to 1</p>
<p>if(c == 'H') {</p>
<p>outp = 1;</p>
<p>}</p>
<p>if(c == 'L') {</p>
<p>outp = 0;</p>
<p>}</p>
<p>// Serial.println(c); //print the value of c to serial communication</p>
<p>//---------------------------------------------------------------------------------------------</p>
<p>// ? H 1 0</p>
<p>// ^ ^ ^ ^</p>
<p>// | | | |____________read 4 ( 10,11,12,13....)</p>
<p>// | | |______________read 3 ( 1....9)</p>
<p>// | |________________read 2 if user input is H set output to L</p>
<p>// |__________________read 1</p>
<p>//---------------------------------------------------------------------------------------------</p>
<p>if( c == '1'){</p>
<p>char c = client.read();</p>
<p>switch (c) {</p>
<p>case '0':</p>
<p>triggerPin(outputAddress[10], client, outp);</p>
<p>break;</p>
<p>case '1':</p>
<p>triggerPin(outputAddress[11], client, outp);</p>
<p>break;</p>
<p>case '2':</p>
<p>triggerPin(outputAddress[12], client, outp);</p>
<p>break;</p>
<p>case '3':</p>
<p>triggerPin(outputAddress[13], client, outp);</p>
<p>break;</p>
<p>case '4':</p>
<p>triggerPin(outputAddress[14], client, outp);</p>
<p>break;</p>
<p>case '5':</p>
<p>triggerPin(outputAddress[15], client, outp);</p>
<p>break;</p>
<p>case '6':</p>
<p>triggerPin(outputAddress[16], client, outp);</p>
<p>break;</p>
<p>case '7':</p>
<p>triggerPin(outputAddress[17], client, outp);</p>
<p>break;</p>
<p>case '8':</p>
<p>triggerPin(outputAddress[18], client, outp);</p>
<p>break;</p>
<p>case '9':</p>
<p>triggerPin(outputAddress[19], client, outp);</p>
<p>break;</p>
<p>default:</p>
<p>char c = client.read();</p>
<p>triggerPin(outputAddress[1], client, outp);</p>
<p>}</p>
<p>}</p>
<p>else {</p>
<p>switch (c) {</p>
<p>case '0':</p>
<p>triggerPin(outputAddress[0], client, outp);</p>
<p>break;</p>
<p>// case '1':</p>
<p>// triggerPin(outputAddress[1], client, outp);</p>
<p>// break;</p>
<p>case '2':</p>
<p>triggerPin(outputAddress[2], client, outp);</p>
<p>break;</p>
<p>case '3':</p>
<p>//add code here to trigger on 3</p>
<p>triggerPin(outputAddress[3], client, outp);</p>
<p>break;</p>
<p>case '4':</p>
<p>//add code here to trigger on 4</p>
<p>triggerPin(outputAddress[4], client, outp);</p>
<p>break;</p>
<p>case '5':</p>
<p>//add code here to trigger on 5</p>
<p>triggerPin(outputAddress[5], client, outp);</p>
<p>//printHtml(client);</p>
<p>break;</p>
<p>case '6':</p>
<p>//add code here to trigger on 6</p>
<p>triggerPin(outputAddress[6], client, outp);</p>
<p>break;</p>
<p>case '7':</p>
<p>//add code here to trigger on 7</p>
<p>triggerPin(outputAddress[7], client, outp);</p>
<p>break;</p>
<p>case '8':</p>
<p>//add code here to trigger on 8</p>
<p>triggerPin(outputAddress[8], client, outp);</p>
<p>break;</p>
<p>case '9':</p>
<p>//add code here to trigger on 9</p>
<p>triggerPin(outputAddress[9], client, outp);</p>
<p>break;</p>
<p>} //end of switch case</p>
<p>}</p>
<p>}//end of switch switch the relevant output</p>
<p>//if user input was blank</p>
<p>if (c == '\n' && currentLineIsBlank){</p>
<p>printLastCommandOnce = true;</p>
<p>printButtonMenuOnce = true;</p>
<p>triggerPin(777, client, outp); //Call to read input and print menu. 777 is used not to update any outputs</p>
<p>break;</p>
<p>}</p>
<p>}</p>
<p>}</p>
<p>printHtmlFooter(client); //Prints the html footer</p>
<p>}</p>
<p>else{</p>
<p>if (millis() > (timeConnectedAt + 60000)){</p>
<p>if (writeToEeprom == true){</p>
<p>writeEepromValues(); //write to EEprom the current output statuses</p>
<p>Serial.println("No Clients for more then a minute - Writing statuses to Eeprom.");</p>
<p>writeToEeprom = false;</p>
<p>}</p>
<p>}</p>
<p>}</p>
<p>}// END</p>
<p>////////////////////////////////////////////////////////////////////////</p>
<p>//triggerPin Function</p>
<p>////////////////////////////////////////////////////////////////////////</p>
<p>//</p>
<p>void triggerPin(int pin, EthernetClient client, int outp){</p>
<p>if (pin != 777){</p>
<p>// Serial.println(pin);</p>
<p>if(outp == 1) {</p>
<p>if (outputInverted ==false){</p>
<p>digitalWrite(pin, HIGH);</p>
<p>}</p>
<p>else{</p>
<p>digitalWrite(pin, LOW);</p>
<p>}</p>
<p>}</p>
<p>if(outp == 0){</p>
<p>if (outputInverted ==false){</p>
<p>digitalWrite(pin, LOW);</p>
<p>}</p>
<p>else{</p>
<p>digitalWrite(pin, HIGH);</p>
<p>}</p>
<p>}</p>
<p>}</p>
<p>//Refresh the reading of outputs</p>
<p>readOutputStatuses();</p>
<p>//Prints the buttons</p>
<p>if (printButtonMenuOnce == true){</p>
<p>printHtmlButtons(client);</p>
<p>printButtonMenuOnce = false;</p>
<p>}</p>
<p>}</p>
<p>////////////////////////////////////////////////////////////////////////</p>
<p>//printHtmlButtons Function</p>
<p>////////////////////////////////////////////////////////////////////////</p>
<p>//print the html buttons to switch on/off channels</p>
<p>void printHtmlButtons(EthernetClient client){</p>
<p>//Start to create the html table</p>
<p>client.println("");</p>
<p>//client.println("<p>");</p>
<p>client.println("<FORM>");</p>
<p>client.println("<table border=\"0\" align=\"center\">");</p>
<p>//Printing the Temperature</p>
<p>client.print("<tr>\n");</p>
<p>client.print("<td><h4>");</p>
<p>client.print("Temperatura");</p>
<p>client.print("</h4></td>\n");</p>
<p>client.print("<td></td>");</p>
<p>client.print("<td>");</p>
<p>client.print("<h3>");</p>
<p>client.print(tempOutDeg);</p>
<p>client.print(" °C</h3></td>\n");</p>
<p>client.print("<td></td>");</p>
<p>client.print("</tr>");</p>
<p>//Start printing button by button</p>
<p>for (int var = 0; var < outputQuantity; var++) {</p>
<p>//set command for all on/off</p>
<p>allOn += "H";</p>
<p>allOn += outputAddress[var];</p>
<p>allOff += "L";</p>
<p>allOff += outputAddress[var];</p>
<p>//Print begining of row</p>
<p>client.print("<tr>\n");</p>
<p>//Prints the button Text</p>
<p>client.print("<td><h4>");</p>
<p>client.print(buttonText[var]);</p>
<p>client.print("</h4></td>\n");</p>
<p>//Prints the ON Buttons+++++++++++++++++++++++++++++++++++++++++++++++</p>
<p>client.print("<td>");</p>
<p>client.print("<INPUT TYPE=\"button\" VALUE=\"ON ");</p>
<p>client.print("\" onClick=\"parent.location='/?H");</p>
<p>client.print(var);</p>
<p>client.print("'\"></td>\n");</p>
<p>//Prints the OFF Buttons ---------------------------------------------</p>
<p>client.print(" <td><INPUT TYPE=\"button\" VALUE=\"OFF");</p>
<p>client.print("\" onClick=\"parent.location='/?L");</p>
<p>client.print(var);</p>
<p>client.print("'\"></td>\n");</p>
<p>//Invert the LED display if output is inverted.</p>
<p>if (outputStatus[var] == true ){ //If Output is ON</p>
<p>if (outputInverted == false){ //and if output is not inverted</p>
<p>client.print(" <td><div class='green-circle'><div class='glare'></div></div></td>\n"); //Print html for ON LED</p>
<p>}</p>
<p>else{ //else output is inverted then</p>
<p>client.print(" <td><div class='black-circle'><div class='glare'></div></div></td>\n"); //Print html for OFF LED</p>
<p>}</p>
<p>}</p>
<p>else //If Output is Off</p>
<p>{</p>
<p>if (outputInverted == false){ //and if output is not inverted</p>
<p>client.print(" <td><div class='black-circle'><div class='glare'></div></div></td>\n"); //Print html for OFF LED</p>
<p>}</p>
<p>else{ //else output is inverted then</p>
<p>client.print(" <td><div class='green-circle'><div class='glare'></div></div></td>\n"); //Print html for ON LED</p>
<p>}</p>
<p>}</p>
<p>//Print end of row</p>
<p>client.print("</tr>\n");</p>
<p>}</p>
<p>//Display or hide the Print all on Pins Button</p>
<p>if (switchOnAllPinsButton == true ){</p>
<p>//Prints the ON All Pins Button</p>
<p>client.print("<tr>\n<td><INPUT TYPE=\"button\" VALUE=\"Switch ON All Pins");</p>
<p>client.print("\" onClick=\"parent.location='/?");</p>
<p>client.print(allOn);</p>
<p>client.print("'\"></td>\n");</p>
<p>//Prints the OFF All Pins Button</p>
<p>client.print("<td><INPUT TYPE=\"button\" VALUE=\"Switch OFF All Pins");</p>
<p>client.print("\" onClick=\"parent.location='/?");</p>
<p>client.print(allOff);</p>
<p>client.print("'\"></td>\n<td></td>\n<td></td>\n</tr>\n");</p>
<p>}</p>
<p>//Closing the table and form</p>
<p>client.println("</table>");</p>
<p>client.println("</FORM>");</p>
<p>//client.println("</p>");</p>
<p>}</p>
<p>////////////////////////////////////////////////////////////////////////</p>
<p>//readOutputStatuses Function</p>
<p>////////////////////////////////////////////////////////////////////////</p>
<p>//Reading the Output Statuses</p>
<p>void readOutputStatuses(){</p>
<p>for (int var = 0; var < outputQuantity; var++) {</p>
<p>outputStatus[var] = digitalRead(outputAddress[var]);</p>
<p>//Serial.print(outputStatus[var]);</p>
<p>}</p>
<p>}</p>
<p>////////////////////////////////////////////////////////////////////////</p>
<p>//readEepromValues Function</p>
<p>////////////////////////////////////////////////////////////////////////</p>
<p>//Read EEprom values and save to outputStatus</p>
<p>void readEepromValues(){</p>
<p>for (int adr = 0; adr < outputQuantity; adr++) {</p>
<p>outputStatus[adr] = EEPROM.read(adr);</p>
<p>}</p>
<p>}</p>
<p>////////////////////////////////////////////////////////////////////////</p>
<p>//writeEepromValues Function</p>
<p>////////////////////////////////////////////////////////////////////////</p>
<p>//Write EEprom values</p>
<p>void writeEepromValues(){</p>
<p>for (int adr = 0; adr < outputQuantity; adr++) {</p>
<p>EEPROM.write(adr, outputStatus[adr]);</p>
<p>}</p>
<p>}</p>
<p>////////////////////////////////////////////////////////////////////////</p>
<p>//initEepromValues Function</p>
<p>////////////////////////////////////////////////////////////////////////</p>
<p>//Initialiaze EEprom values</p>
<p>// se os valores de eeprom não forem o formato correto, isto é, eu e eu não for igual a 0 ou 1 (assim, maior que 1) inicialize colocando 0</p>
<p>void initEepromValues(){</p>
<p>for (int adr = 0; adr < outputQuantity; adr++){</p>
<p>if (EEPROM.read(adr) > 1){</p>
<p>EEPROM.write(adr, 0);</p>
<p>}</p>
<p>}</p>
<p>}</p>
<p>////////////////////////////////////////////////////////////////////////</p>
<p>//htmlHeader Function</p>
<p>////////////////////////////////////////////////////////////////////////</p>
<p>//Prints html header</p>
<p>void printHtmlHeader(EthernetClient client){</p>
<p>// Serial.print("Serving html Headers at ms -");</p>
<p>timeConnectedAt = millis(); //Record the time when last page was served.</p>
<p>// Serial.print(timeConnectedAt); // Tempo de impressão para fins de debugging</p>
<p>writeToEeprom = true; // página carregada para definir a ação a escrever para eeprom</p>
<p>// envia um cabeçalho de resposta http padrão</p>
<p>client.println("HTTP/1.1 200 OK");</p>
<p>client.println("Content-Type: text/html");</p>
<p>client.println("Connnection: close");</p>
<p>client.println();</p>
<p>client.println("<!DOCTYPE HTML>");</p>
<p>client.println("<head>");</p>
<p>// add page title</p>
<p>client.println("<title>AUTOMACAO</title>");</p>
<p>client.println("<meta name=\"description\" content=\"AUTOMACAO RESIDENCIAL\"/>");</p>
<p>// adicione uma meta tag de atualização, para que o navegador seja puxado novamente a cada x segundos:</p>
<p>client.print("<meta http-equiv=\"refresh\" content=\"");</p>
<p>client.print(refreshPage);</p>
<p>client.println("; url=/\">");</p>
<p>// add other browser configuration</p>
<p>client.println("<meta name=\"apple-mobile-web-app-capable\" content=\"yes\">");</p>
<p>client.println("<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"default\">");</p>
<p>client.println("<meta name=\"viewport\" content=\"width=device-width, user-scalable=no\">");</p>
<p>//inserting the styles data, usually found in CSS files.</p>
<p>client.println("<style type=\"text/css\">");</p>
<p>client.println("");</p>
<p>//This will set how the page will look graphically</p>
<p>client.println("html { height:100%; }");</p>
<p>client.println(" body {");</p>
<p>client.println(" height: 100%;");</p>
<p>client.println(" margin: 0;");</p>
<p>client.println(" font-family: helvetica, sans-serif;");</p>
<p>client.println(" -webkit-text-size-adjust: none;");</p>
<p>client.println(" }");</p>
<p>client.println("");</p>
<p>client.println("body {");</p>
<p>client.println(" -webkit-background-size: 100% 21px;");</p>
<p>client.println(" background-color: #c5ccd3;");</p>
<p>client.println(" background-image:");</p>
<p>client.println(" -webkit-gradient(linear, left top, right top,");</p>
<p>client.println(" color-stop(.75, transparent),");</p>
<p>client.println(" color-stop(.75, rgba(255,255,255,.1)) );");</p>
<p>client.println(" -webkit-background-size: 7px;");</p>
<p>client.println(" }");</p>
<p>client.println("");</p>
<p>client.println(".view {");</p>
<p>client.println(" min-height: 100%;");</p>
<p>client.println(" overflow: auto;");</p>
<p>client.println(" }");</p>
<p>client.println("");</p>
<p>client.println(".header-wrapper {");</p>
<p>client.println(" height: 44px;");</p>
<p>client.println(" font-weight: bold;");</p>
<p>client.println(" text-shadow: rgba(0,0,0,0.7) 0 -1px 0;");</p>
<p>client.println(" border-top: solid 1px rgba(255,255,255,0.6);");</p>
<p>client.println(" border-bottom: solid 1px rgba(0,0,0,0.6);");</p>
<p>client.println(" color: #fff;");</p>
<p>client.println(" background-color: #8195af;");</p>
<p>client.println(" background-image:");</p>
<p>client.println(" -webkit-gradient(linear, left top, left bottom,");</p>
<p>client.println(" from(rgba(255,255,255,.4)),");</p>
<p>client.println(" to(rgba(255,255,255,.05)) ),");</p>
<p>client.println(" -webkit-gradient(linear, left top, left bottom,");</p>
<p>client.println(" from(transparent),");</p>
<p>client.println(" to(rgba(0,0,64,.1)) );");</p>
<p>client.println(" background-repeat: no-repeat;");</p>
<p>client.println(" background-position: top left, bottom left;");</p>
<p>client.println(" -webkit-background-size: 100% 21px, 100% 22px;");</p>
<p>client.println(" -webkit-box-sizing: border-box;");</p>
<p>client.println(" }");</p>
<p>client.println("");</p>
<p>client.println(".header-wrapper h1 {");</p>
<p>client.println(" text-align: center;");</p>
<p>client.println(" font-size: 20px;");</p>
<p>client.println(" line-height: 44px;");</p>
<p>client.println(" margin: 0;");</p>
<p>client.println(" }");</p>
<p>client.println("");</p>
<p>client.println(".group-wrapper {");</p>
<p>client.println(" margin: 9px;");</p>
<p>client.println(" }");</p>
<p>client.println("");</p>
<p>client.println(".group-wrapper h2 {");</p>
<p>client.println(" color: #4c566c;");</p>
<p>client.println(" font-size: 17px;");</p>
<p>client.println(" line-height: 0.8;");</p>
<p>client.println(" font-weight: bold;");</p>
<p>client.println(" text-shadow: #fff 0 1px 0;");</p>
<p>client.println(" margin: 20px 10px 12px;");</p>
<p>client.println(" }");</p>
<p>client.println("");</p>
<p>client.println(".group-wrapper h3 {");</p>
<p>client.println(" color: #4c566c;");</p>
<p>client.println(" font-size: 12px;");</p>
<p>client.println(" line-height: 1;");</p>
<p>client.println(" font-weight: bold;");</p>
<p>client.println(" text-shadow: #fff 0 1px 0;");</p>
<p>client.println(" margin: 20px 10px 12px;");</p>
<p>client.println(" }");</p>
<p>client.println("");</p>
<p>client.println(".group-wrapper h4 {"); //Text for description</p>
<p>client.println(" color: #212121;");</p>
<p>client.println(" font-size: 14px;");</p>
<p>client.println(" line-height: 1;");</p>
<p>client.println(" font-weight: bold;");</p>
<p>client.println(" text-shadow: #aaa 1px 1px 3px;");</p>
<p>client.println(" margin: 5px 5px 5px;");</p>
<p>client.println(" }");</p>
<p>client.println("");</p>
<p>client.println(".group-wrapper table {");</p>
<p>client.println(" background-color: #fff;");</p>
<p>client.println(" -webkit-border-radius: 10px;");</p>
<p>client.println(" -moz-border-radius: 10px;");</p>
<p>client.println(" -khtml-border-radius: 10px;");</p>
<p>client.println(" border-radius: 10px;");</p>
<p>client.println(" font-size: 17px;");</p>
<p>client.println(" line-height: 20px;");</p>
<p>client.println(" margin: 9px 0 20px;");</p>
<p>client.println(" border: solid 1px #a9abae;");</p>
<p>client.println(" padding: 11px 3px 12px 3px;");</p>
<p>client.println(" margin-left:auto;");</p>
<p>client.println(" margin-right:auto;");</p>
<p>client.println(" -moz-transform :scale(1);"); //Code for Mozilla Firefox</p>
<p>client.println(" -moz-transform-origin: 0 0;");</p>
<p>client.println(" }");</p>
<p>client.println("");</p>
<p>//how the green (ON) LED will look</p>
<p>client.println(".green-circle {");</p>
<p>client.println(" display: block;");</p>
<p>client.println(" height: 23px;");</p>
<p>client.println(" width: 23px;");</p>
<p>client.println(" background-color: #0f0;");</p>
<p>//client.println(" background-color: rgba(60, 132, 198, 0.8);");</p>
<p>client.println(" -moz-border-radius: 11px;");</p>
<p>client.println(" -webkit-border-radius: 11px;");</p>
<p>client.println(" -khtml-border-radius: 11px;");</p>
<p>client.println(" border-radius: 11px;");</p>
<p>client.println(" margin-left: 1px;");</p>
<p>client.println(" background-image: -webkit-gradient(linear, 0% 0%, 0% 90%, from(rgba(46, 184, 0, 0.8)), to(rgba(148, 255, 112, .9)));@");</p>
<p>client.println(" border: 2px solid #ccc;");</p>
<p>client.println(" -webkit-box-shadow: rgba(11, 140, 27, 0.5) 0px 10px 16px;");</p>
<p>client.println(" -moz-box-shadow: rgba(11, 140, 27, 0.5) 0px 10px 16px; /* FF 3.5+ */");</p>
<p>client.println(" box-shadow: rgba(11, 140, 27, 0.5) 0px 10px 16px; /* FF 3.5+ */");</p>
<p>client.println(" }");</p>
<p>client.println("");</p>
<p>//how the black (off)LED will look</p>
<p>client.println(".black-circle {");</p>
<p>client.println(" display: block;");</p>
<p>client.println(" height: 23px;");</p>
<p>client.println(" width: 23px;");</p>
<p>client.println(" background-color: #040;");</p>
<p>client.println(" -moz-border-radius: 11px;");</p>
<p>client.println(" -webkit-border-radius: 11px;");</p>
<p>client.println(" -khtml-border-radius: 11px;");</p>
<p>client.println(" border-radius: 11px;");</p>
<p>client.println(" margin-left: 1px;");</p>
<p>client.println(" -webkit-box-shadow: rgba(11, 140, 27, 0.5) 0px 10px 16px;");</p>
<p>client.println(" -moz-box-shadow: rgba(11, 140, 27, 0.5) 0px 10px 16px; /* FF 3.5+ */");</p>
<p>client.println(" box-shadow: rgba(11, 140, 27, 0.5) 0px 10px 16px; /* FF 3.5+ */");</p>
<p>client.println(" }");</p>
<p>client.println("");</p>
<p>//isso irá adicionar o brilho a ambos os LEDs</p>
<p>client.println(" .glare {");</p>
<p>client.println(" position: relative;");</p>
<p>client.println(" top: 1;");</p>
<p>client.println(" left: 5px;");</p>
<p>client.println(" -webkit-border-radius: 10px;");</p>
<p>client.println(" -moz-border-radius: 10px;");</p>
<p>client.println(" -khtml-border-radius: 10px;");</p>
<p>client.println(" border-radius: 10px;");</p>
<p>client.println(" height: 1px;");</p>
<p>client.println(" width: 13px;");</p>
<p>client.println(" padding: 5px 0;");</p>
<p>client.println(" background-color: rgba(200, 200, 200, 0.25);");</p>
<p>client.println(" background-image: -webkit-gradient(linear, 0% 0%, 0% 95%, from(rgba(255, 255, 255, 0.7)), to(rgba(255, 255, 255, 0)));");</p>
<p>client.println(" }");</p>
<p>client.println("");</p>
<p>//e finalmente este é o fim dos dados de estilo e cabeçalho</p>
<p>client.println("</style>");</p>
<p>client.println("</head>");</p>
<p>// agora imprimindo a própria página</p>
<p>client.println("<body>");</p>
<p>client.println("<div class=\"view\">");</p>
<p>client.println(" <div class=\"header-wrapper\">");</p>
<p>client.println(" <h1>ROBERTO CORTES</h1>");</p>
<p>client.println(" </div>");</p>
<p>//////</p>
<p>} //end of htmlHeader</p>
<p>////////////////////////////////////////////////////////////////////////</p>
<p>//htmlFooter Function</p>
<p>////////////////////////////////////////////////////////////////////////</p>
<p>//Prints html footer</p>
<p>void printHtmlFooter(EthernetClient client){</p>
<p>//Set Variables Before Exiting</p>
<p>printLastCommandOnce = false;</p>
<p>printButtonMenuOnce = false;</p>
<p>allOn = "";</p>
<p>allOff = "";</p>
<p>//imprimindo a última parte do html</p>
<p>client.println("\n<h3 align=\"center\">");</p>
<p>client.println(rev);</p>
<p>client.println("</h3></div>\n</div>\n</body>\n</html>");</p>
<p>delay(1); // dê tempo ao navegador da web para receber os dados</p>
<p>client.stop(); // close the connection:</p>
<p>Serial.println(" - Done, Closing Connection.");</p>
<p>delay (2); <br/>// demora para dar tempo para que o buffer do cliente seja limpo e não repita várias páginas.</p>
<p>} //end of htmlFooter</p>
<p>////////////////////////////////////////////////////////////////////////</p>
<p>//printHtmlButtonTitle Function</p>
<p>////////////////////////////////////////////////////////////////////////</p>
<p>//Prints html button title</p>
<p>void printHtmlButtonTitle(EthernetClient client){</p>
<p>client.println("<div class=\"group-wrapper\">");</p>
<p>client.println(" <h2></h2>");</p>
<p>client.println();</p>
<p>}</p>
<p>////////////////////////////////////////////////////////////////////////</p>
<p>//printLoginTitle Function</p>
<p>////////////////////////////////////////////////////////////////////////</p>
<p>//Imprime o título do botão html</p>
<p>void printLoginTitle(EthernetClient client){</p>
<p>// client.println("<div class=\"group-wrapper\">");</p>
<p>client.println(" <h2>Please enter the user data to login.</h2>");</p>
<p>client.println();</p>
<p>}</p>