Anda di halaman 1dari 3

17/5/2016 unicarlos.com/pezverde/codigos/servidorEthernetHtml/servidorEthernetHtml.

pde

//unicarlos.dyndns.org:88(ipdemirouterqueseactualizaautomaticamente)
//yfuncionaconlaconfiguraciondelrouterdeabrirpuertoeip
//ysepuedanencenderyapagarleds(Pinesdigitalesdel2al9).
//Pines10,11,12y13losusaparacomunicarseconlaethernet

#include<SPI.h>
#include<WString.h>
#include<Ethernet.h>

bytemac[]={0xDE,0xAD,0xBE,0xEF,0xFF,0xEE};//direccionMACdetuEthernet
byteip[]={192,168,10,15};//ipqueleponesdentrodeturedcomofijay
configuradaenturouter
Serverserver(88);//88puertoporelaccedemosalservidor.Normalmenteseriala80

intdig[]={2,3,4,5,6,7,8,9};//pinesdigitalesausar.Nouso0y1quesonde
transmisinserie
//Tampocousoel10,11,12y13yaquelosusoparala
ethernet
intdigTotal=8;//Numerodepinesausar
intvdig[]={0,0,0,0,0,0,0,0};//valoresiniciales(Tantoscomopinesusemos)
intpin;
intnivel;
Stringcad=String(100);

voidsetup()
{
Ethernet.begin(mac,ip);//iniciolaEthernet
server.begin();//inicioelservidor
Serial.begin(9600);//inicioelserialmonitor
for(inti=0;i<digTotal;i++)
{
pinMode(dig[i],OUTPUT);//inicializolospinesdigitalescomosalida
digitalWrite(dig[i],vdig[i]);//lospongoanivelbajoLOW=0
}
}

voidloop()
{
cad="";//inicializolacaddondealmacenolosdatosrecibidos
Clientcliente=server.available();
if(cliente)
{
while(cliente.connected())
{
if(cliente.available())
{
charc=cliente.read();
cad=cad+c;
Serial.print(c);

if(c=='\n')
{
if(cad.lastIndexOf("dig")>1)//silavariablecadcontiene'dig'hacer...
{
pin=pinElegido(cad);
intposicionPin;
for(inti=0;i<digTotal;i++)
{
if(dig[i]==pin)
{
posicionPin=i;
break;
}
}

http://unicarlos.com/pezverde/codigos/servidorEthernetHtml/servidorEthernetHtml.pde 1/3
17/5/2016 unicarlos.com/pezverde/codigos/servidorEthernetHtml/servidorEthernetHtml.pde

nivel=nivelElegido(cad);
vdig[posicionPin]=nivel;

Serial.print(pin);//comprobamosqueelpinelegidoeselcorrecto
Serial.println("pin.");
Serial.print(nivel);//comprobamossunivel0=LOWy1=HIGH
Serial.println("nivel");

digitalWrite(pin,nivel);//activamosodesactivamoselpinelegido

}//...hastaaqui'dig'

if(cad.lastIndexOf("apaga")>1)//silavariablecadcontiene'apaga'
ejecuta
{//lafuncionapagaTodos()
apagaTodos();
}

if(cad.lastIndexOf("encender")>1)//sicadcontiene'encender'ejecuta
{//lafuncionenciendeTodos()
enciendeTodos();
}
//Comienzalatransmisiondedatosdesdeelservidoralcliente
cliente.println("HTTP/1.1200OK");
cliente.println("ContentType:text/html");
cliente.println();

for(inti=0;i<digTotal;i++)
{
cliente.print("Digital");
cliente.print(dig[i]);
cliente.print("");

if(vdig[i]==1)
{
cliente.println("<fontcolor='green'>ON</font>");
cliente.print("<formmethod=get><inputtype=hiddenname=dig");
cliente.print(dig[i]);
cliente.print("value=0><inputtype=submitvalue=OFF></form>");
}
if(vdig[i]==0)
{
cliente.println("<fontcolor='grey'>OFF</font>");
//cliente.println("<td>");
cliente.print("<formmethod=get>");
cliente.print("<inputtype=hiddenname=dig");
cliente.print(dig[i]);
cliente.print("value=1>");
cliente.print("<inputtype=submitvalue=ON>");
cliente.print("</form>");
}
}
cliente.print("<formmethod=get><inputtype=hiddenname=apaga");
cliente.println("value=1><inputtype=submitvalue=APAGA_TODOS></form>");

cliente.println("<formmethod=get><inputtype=hiddenname=encender");
cliente.println("value=1><inputtype=submitvalue=ENCENDER_TODOS></form>");

cliente.stop();
}
}
}
}
}

http://unicarlos.com/pezverde/codigos/servidorEthernetHtml/servidorEthernetHtml.pde 2/3
17/5/2016 unicarlos.com/pezverde/codigos/servidorEthernetHtml/servidorEthernetHtml.pde

//////////////FUNCIONES/////////////////7
//Funcion:Extraeelpindelarraycad(contienelalecturadeloqueelclientedevuelve)
intpinElegido(Stringcad)
{

intpos_dig=cad.lastIndexOf("dig");
intpos_igual=cad.lastIndexOf("=");
Stringvpin1=cad.charAt(pos_dig+3);
Stringvpin2=cad.charAt(pos_dig+4);
if(vpin2!='=')
{
vpin1+=vpin2;
}

intpinElegido=vpin1.toInt();
returnpinElegido;
}
//Funcion:Extraeenniveldelacadenacad
intnivelElegido(Stringcad)
{
intpos_igual=cad.lastIndexOf("=");
Stringv=cad.charAt(pos_igual+1);
if(v==0)return0;
if(v==1)return1;
}
//Funcionparaapagartodoslosledsaltiempo
voidapagaTodos()
{
for(inti=0;i<digTotal;i++)
{
vdig[i]=0;
digitalWrite(dig[i],vdig[i]);
}
}
//Funcionparaencendertodoslosledsaltiempo
voidenciendeTodos()
{
for(inti=0;i<digTotal;i++)
{
vdig[i]=1;
digitalWrite(dig[i],vdig[i]);
}
}

http://unicarlos.com/pezverde/codigos/servidorEthernetHtml/servidorEthernetHtml.pde 3/3

Anda mungkin juga menyukai