SERVIDOR de LED Ethernet Shield (4 / 5 paso)

Paso 4: El programa

El sketch de arduino está basado en el ejemplo de webserver.pde con algunas modificaciones. Una copia de mi boceto es post anterior para su fácil descarga.
Tengo que utilizar algunos trucos para cargar una página web con más información. El código HTML se almacena en la memoria del programa, por lo tanto, tenemos suficiente RAM para otras cosas. Pregunte cualquier duda sobre el código.

Consejo: después de descargar el archivo, cámbiele el nombre de .tmp a .ino si es necesario

Aquí está el código:

#include < Ethernet.h >
#include < SPI.h >
#include < avr/pgmspace.h >

prog_char string_0 [] PROGMEM = "< html >< cuerpo >< h2 > control de LED pela Internet < / h2 >< tamaño de la fuente = 4 >< método del formulario = GET >";
prog_char string_1 [] PROGMEM = "< br >< tipo de entrada = enviar nombre = valor b1 = Led1 >";
prog_char string_2 [] PROGMEM = "< br >< tipo de entrada = enviar nombre = valor b2 = Led2 >";
prog_char string_3 [] PROGMEM = "< br >< tipo de entrada = enviar nombre = valor de b3 = Led3 >";
prog_char string_4 [] PROGMEM = "< br >< tipo de entrada = enviar nombre = valor b4 = Led4 >";
prog_char string_5 [] PROGMEM = "";  "< br > Insertar aquí su nombre:";
prog_char string_6 [] PROGMEM = "";  "< nombre de entrada = valor msg = no_name MAXLENGTH = 20 >";
prog_char string_7 [] PROGMEM = "< / forma >< cuerpo / >< / html >";
prog_char string_8 [] PROGMEM = "Ligada (ON)";
prog_char string_9 [] PROGMEM = "Desligada (OFF)";

prog_char string_10 [] PROGMEM = "< meta http-equiv = refresh content = 30 >"; para la actualización automática

Const char PROGMEM * string_table [] = / / cambiar el nombre de "string_table" para adaptarse a
{
string_0,
string_1,
string_2,
string_3,
string_4,
string_5,
string_6,
string_7,
string_8,
string_9,
string_10
};

buffer de Char [85];    Asegúrese de que este es suficientemente grande para que la cadena más grande que debe contener el

mac de bytes [] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
byte ip [] = {192 168 1, 134};
puerta de entrada de bytes [] = {192, 168, 1, 1};
subred de bytes [] = {255, 255, 255, 0};

InString de cadena = String(35);

Server(8246) de EthernetServer;

led1 boolean = false;
led2 boolean = false;
led3 boolean = false;
led4 boolean = false;

String msg = "";
int tam = 0;
int st1 = 9, st2 = 9, st3 = 9, st4 = 9;

void setup()
{
Serial.Begin(9600);
Ethernet.Begin (mac, ip, puerta de enlace, subred);
Server.Begin();
Serial.println ("Serial listo");
Serial.println ("Ethernet listo");
Serial.println ("servidor listo");
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,INPUT);
pinMode(9,INPUT);
}

void loop()
{

Cliente EthernetClient = server.available();

led int = 0;
Si {} (cliente)

una solicitud http termina con una línea en blanco
Boolean current_line_is_blank = true;
mientras (client.connected()) {}

Si (client.available()) {}

char c = client.read();
Si hemos llegado al final de la línea (recibió una nueva línea
carácter) y la línea está en blanco, ha terminado la solicitud http,
para que podamos enviarle una respuesta
Si (inString.length() < 35) {}
inString.concat(c);

}
Si (c == '\n' & & current_line_is_blank) {}

if(inString.IndexOf("B1") > 0) {}

{if(LED1==false)}
ST1 = 8;
LED1 = true;
digitalWrite(4,HIGH);
}
Else {}
ST1 = 9;
LED1 = false;
digitalWrite(4,LOW);
}
LED = 1;

}
if(inString.IndexOf("B2") > 0) {}

{if(LED2==false)}
ST2 = 8;
LED2 = true;
digitalWrite(5,HIGH);
}
Else {}
ST2 = 9;
LED2 = false;
digitalWrite(5,LOW);
}
LED = 2;

}
if(inString.IndexOf("B3") > 0) {}

{if(LED3==false)}
ST3 = 8;
LED3 = true;
digitalWrite(6,HIGH);
}
Else {}
ST3 = 9;
LED3 = false;
digitalWrite(6,LOW);
}
LED = 3;

}
if(inString.IndexOf("B4") > 0) {}

{if(LED4==false)}
ST4 = 8;
LED4 = true;
digitalWrite(7,HIGH);
}
Else {}
ST4 = 9;
LED4 = false;
digitalWrite(7,LOW);
}
LED = 4;

}
/*
if(inString.IndexOf("msg") > 0) {}
char charBuf1 [50];
char charBuf2 [50];
strcpy (msg,(char*) inString.substring (inString.indexOf ("g") +2,inString.indexOf ("H")));
Serial.Print ("msg:");
Serial.println(MSG);
}
*/
Enviar un encabezado de respuesta http estándar
Client.println ("HTTP/1.1 200 OK");
Client.println ("tipo de contenido: texto/html");
Client.println();

strcpy_P (buffer, (char *) pgm_read_word (&(string_table[0]))); Modelos necesarios y la eliminación de referencias, sólo tienes que copiar.
Client.println (buffer);
para (int i = 1; i < 8; i ++)
{
strcpy_P (buffer, (char *) pgm_read_word (&(string_table[i]))); Modelos necesarios y la eliminación de referencias, sólo tienes que copiar.
Client.println (buffer);
{Switch(i)}

caso 1: strcpy_P (buffer, (char *) pgm_read_word (&(string_table[st1]))); Client.println (buffer); rotura;
caso 2: strcpy_P (buffer, (char *) pgm_read_word (&(string_table[st2]))); Client.println (buffer); rotura;
caso 3: strcpy_P (buffer, (char *) pgm_read_word (&(string_table[st3]))); Client.println (buffer); rotura;
caso 4: strcpy_P (buffer, (char *) pgm_read_word (&(string_table[st4]))); Client.println (buffer); rotura;

}
Delay(30);
}
{if(digitalRead(8)==High)}
Client.println ("< br > 1 Botao, ON");
} else {}
Client.println ("< br > Botao 1, OFF");
}
{if(digitalRead(9)==High)}
Client.println ("< br > 2 Botao, ON");
} else {}
Client.println ("< br > 2 Botao, OFF");
}

strcpy_P (buffer, (char *) pgm_read_word (&(string_table[10]))); Client.println (buffer);


rotura;
}
Si (c == '\n') {}
Estamos empezando una nueva línea
current_line_is_blank = true;
} else if (c! = '\r') {}
hemos conseguido un carácter en la línea actual
current_line_is_blank = false;
}
}
}
darle tiempo al navegador de web para recibir los datos
Delay(1);
inString = "";
Client.STOP();
}
}

Artículos Relacionados

[Tutorial para 4DIY.ORG] - Cómo controlar LED con iphone usando [4DIY.ORG] App y Ethernet Shield

[Tutorial para 4DIY.ORG] - Cómo controlar LED con iphone usando [4DIY.ORG] App y Ethernet Shield

Paso 1: Materiales y herramientas1. Arduino Uno R3.2. Arduino Ethernet Shield.3. [4DIY.ORG] de la aplicación (soporte iOS y Android).4. RJ45 Cable.5. rompa la Junta.6. ROJO LED.7. resistencia.8. alambre.Paso 2: Subir el Sketch de Arduino Archivo de d
Tutorial de Arduino Ethernet Shield

Tutorial de Arduino Ethernet Shield

The Arduino Ethernet Shield permite conectar fácilmente tu Arduino a internet. Este escudo permite su Arduino enviar y recibir datos desde cualquier lugar del mundo con conexión a internet. Se puede utilizar para hacer divertidas cosas como controlar
Ejemplo de automatización remoto hogar - Arduino + Ethernet Shield

Ejemplo de automatización remoto hogar - Arduino + Ethernet Shield

bienvenida otra vez!En este Instructable, detallará cómo utilizar varios sensores y elementos con internet conectado Arduino. En mi opinión, esto fue muy divertido proyecto para armar y jugar con! Además, tengo que repasar mi HTML y Java (aunque fue
LinkSprite Ethernet Shield + control de remoto WEB yeelink IO

LinkSprite Ethernet Shield + control de remoto WEB yeelink IO

Ethernet Shield al instante permite la conectividad de internet para proyectos de Arduino. Un controlador de ethernet de Wiz5100 a bordo maneja hasta cuatro conexiones TCP y UDP, sólo la pila en un Arduino para crear sus propios dispositivos en red.
Control de Arduino Board inalámbricamente con iPhone, iPad o iPod iArduino de uso de la aplicación y Ethernet Shield

Control de Arduino Board inalámbricamente con iPhone, iPad o iPod iArduino de uso de la aplicación y Ethernet Shield

este tutorial te guiará a cómo hacer la configuración entera a tu Arduino Board con iArduino aplicación de control. Para entender, de usar Led y se cambiará lo encendido y apagado con la ayuda de la aplicación iArduino. De esto usted conseguirá la id
Mostrar datos en un sitio web - olla electrónica [Arduino Nano + Ethernet Shield]

Mostrar datos en un sitio web - olla electrónica [Arduino Nano + Ethernet Shield]

Siempre quise una planta en mi cuarto, que llenaría el espacio entre proyectos inacabados y caro, pero innecesario de componentes electrónicos. Así surgió la idea de una olla electrónica – The Arduino E-Pot – que se mide las necesidades básicas de la
Inicio Proyecto DIY de automatización utilizando Arduino UNO y Ethernet Shield

Inicio Proyecto DIY de automatización utilizando Arduino UNO y Ethernet Shield

"El objetivo principal de este proyecto es que, cómo controlar electrodomésticos como TV, ventilador, tubo de luz o algo usando su ordenador o portátil"El corazón de este proyecto es Ethernet escudo y definitivamente el cerebro de este proyecto
TouchOSC y Arduino Ethernet Shield para control de energía (A.M.P.A.E).

TouchOSC y Arduino Ethernet Shield para control de energía (A.M.P.A.E).

Día tras día, personas utilizan una gran cantidad de gadgets y perder mucha energía no tener ninguna preocupación. Básicamente la idea es una aplicación móvil para tabletas y smartphones que ofrece al usuario un control total de todos los recursos de
Mi 1 º dispositivo de Iot con GeekNesia + Arduino Uno + Ethernet Shield y DHT21 via PubSub método

Mi 1 º dispositivo de Iot con GeekNesia + Arduino Uno + Ethernet Shield y DHT21 via PubSub método

Geeknesia es una plataforma de Internet de las cosas, como ThingSpeak pero es :) de Indonesia. GeekNesia todavía Beta espero que habrá algún otro rasgo bueno pronto. Usar Arduino uno y shield Ethernet para enviar datos de DHT21 (Humadity y temperatur
Android Arduino LED control usando Ethernet Shield

Android Arduino LED control usando Ethernet Shield

cosas que usted necesita:hardware:Arduino UnoEscudo de EthernetPC LED 2.2pcs de resistencias.Breadboard(optional)cables (cobre, cable de ethernet)RouterconectarLED 1--> pin 6 a tierraLED 2--> pin 7 a masasoftware:Eclipse IDEIDE de Arduino 1.x.xPaso
Gráficas en línea usando nada pero un Arduino Ethernet Shield y Sensor

Gráficas en línea usando nada pero un Arduino Ethernet Shield y Sensor

Finalmente he decidido poner algunos de mis proyectos actuales en instructables. Esta es una adaptación de mi proyecto de registrador de datos de gráficos Super.¿Qué es el registrador de datos gráficas de Super (SGDL)? Es un proyecto de Arduino que i
Casa inteligente con Arduino Ethernet shield y Teleduino (con web app)

Casa inteligente con Arduino Ethernet shield y Teleduino (con web app)

Este proyecto es una solución simple para aquellos que quieren un sistema casero elegante pero no tienen un gran presupuesto y para los perezosos que no quieren levantarse de la cama para apagar las luces o en.También es el proyecto de un estudiante
Arduino Nano con Ethernet Shield

Arduino Nano con Ethernet Shield

Hace poco compré un escudo Arduino Ethernet diseñado para el Arduino Uno y pensado que sólo fácilmente puede pude conectarlo a mi Arduino Nano existentes. Me equivoqué!No pude encontrar mucha informacion en todo sobre cómo hacer esto, excepto que alg
Arduino enrutamiento protocolo RIPv1 Spoofer / red Jammer - Ethernet Shield Tutorial

Arduino enrutamiento protocolo RIPv1 Spoofer / red Jammer - Ethernet Shield Tutorial

Esto es una intstructable rápida con alguna prueba de código de concepto para demostrar que los protocolos de enrutamiento pueden ser falseados utilizando Arduino. También sirve como una introducción rápida a usando el shield ethernet y obtiene su ar