Pour réaliser l'application, il vous faut :
- une carte arduino;
- un shield ethernet;
- une del;
- un potentiomètre ou un capteur analogique.
Avec ce programme vous pourrez, à partir d'une page html, visualiser la valeur analogique du potentiomètre et allumer une del .
#include <SPI.h>
#include <Ethernet.h>
//Valeur d'une entree analogique
int valeurDuCAN;
//Pour la gestion de la requete recus
String buffer; //mise en mémolre de la requete
boolean requeteGET ;
char buff[6]; //tableau de char pour recuperer la requete GET
int compteur;
//Pour la gestion des broches digitales
int brocheD;
boolean valeurD;
//Déclaration de l'adresse mac de la carte
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
//byte ip[] = { 192, 168, 1, 102 }; //Si on veut une Adresse IP fixe
EthernetServer server(80); //le protocole http est sur le port 80
void setup()
{
// start the server
//Ethernet.begin(mac, ip); //SI on veut une Adresse IP fixe
Ethernet.begin(mac); //Adresse donnée par DHCP
server.begin();
Serial.begin(9600);
delay(1000); // Delai pour l'initialisation de la carte Ethernet
//Affichage sur le port serie de l'adresse Ip de la carte
Serial.print("L'adresse Ip de la carte : ");
IPAddress monAddressIp = Ethernet.localIP();
Serial.print(monAddressIp);
//initialisation de la borne 2
pinMode( 2 , OUTPUT);
//intialisation des variables
buffer = "";
compteur = 0;
}
void loop()
{
// Attend une requete
EthernetClient client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
char c = client.read();
//Serial.print(c);
//recupere les donnees recues dans la requete GET
if ( requeteGET ) { buffer += c ;
buff[compteur] = c;
compteur++;
}
if ( c == '?' ) //Enregistre les données après ?
{requeteGET = true; }
//Recuperation des donnees terminée
if ( c == ' ' && requeteGET )
{requeteGET = false;
Serial.println(buffer);
if (buff[0]='D') {
if (buff[1]='O')
brocheD = int(buff[2]) - 48; //en Ascii 0 = 48
valeurD = int(buff[4]) - 48;
Serial.println(brocheD);
Serial.println(buff[4]);
digitalWrite( brocheD , valeurD);
}
compteur = 0;
buffer = "";
}
// Attend la fin de la requete HTTP reçu pour envoyer la page
if (c == '\n') {
// Protocole HTTP utilisaté pour envoyer la page internet
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
//en-tête de la page
client.println("<!DOCTYPE html>");
client.println("<html>");
client.println("<head>");
client.println("<meta charset=\"utf-8\">");
//rafraichissement de la page toutes les 1 secondes
//client.println("<meta http-equiv=\"refresh\" content=\"1\">");
client.println("<title>Ethernet Arduino STI2D</title>");
//style de la page (css)
client.println("<style type=\"text/css\">");
client.println("article,header, footer , div {display: block;}");
client.println("form {display : inline ;}");
client.println("body header { background-color : #008181 ; color : #ffffff ; ");
client.println("border:solid 1px black; text-align : center ; }");
client.println("body article {text-align : center ; height:300px;background-color: #ffffff;}");
client.println("body div {padding : 5px ; width = 300}");
client.println("body footer { padding : 5px ; border:solid 1px black;");
client.println("background-color : #4db7bb ; color : #002325 ;text-align : center ; }");
client.println("</style>");
client.println("</head>");
//corps de la page internet
client.println("<body>");
//en-tete du document
client.println("<header>");
client.println("<h1>Ethernet Arduino STI2D</h1>");
client.println("</header>");
//contenu du document
client.println("<article>");
client.println("<div>");
client.println("Valeur de l'entree analogique A0 :");
//Recuperation de la valeur numérique de l'entrée analogique A0
valeurDuCAN = analogRead(A0);
client.println( valeurDuCAN );
client.println("</div>");
client.println("<div>");
client.println("DEL 2 :");
client.print("<form method=get name=LED ><input type='hidden' name='DO2'");
client.println(" value='0'><input type='submit' value='Off'/></form>");
client.print("<form method=get name=LED ><input type='hidden' name='DO2'");
client.println(" value='1'><input type='submit' value='On'/></form>");
client.println(" Etat ");
client.println( digitalRead(2) );
client.println("</div>");
client.println("</article>");
//pied de page du document
client.println("<footer>");
client.println("Ecrit par Richard GAUTHIER");
client.println("</footer>");
client.println("</body>");
client.println("</html>");
break;
}
}
}
// Temps d'attente pour que les donnees de ia page internet est le temps d'etre envoyee
delay(1);
//fermer la connexion:
client.stop();
}
}