Commutation Ethernet - avec Arduino (2 / 5 étapes)

Étape 2: Ethernet commutation - avec Arduino - programme

//Ethernet switch
//
Intro :
Cette volonté swich sur et en dehors des sorties fosse de votre appareil mobile.
Aucune images ou liens vers des images. Utilisation de CSS3 et HTML5.
Bien que cela fonctionne avec les autre navigateur web, nous vous suggérons de Safari pour une meilleure expérience.
//
Version : Web serveur Ethernet commutation Version 3.05
Auteur : Claudio Vella - Malte
Code de initial : http://bildr.org/2011/06/arduino-ethernet-pin-control/
Fait beaucoup de commentaires pour les débutants.

ARDUINO 1.0 + SEULEMENT

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

////////////////////////////////////////////////////////////////////////
CONFIGURER
////////////////////////////////////////////////////////////////////////

Réglages manuels IP
la propriété intellectuelle de Byte [] = {192, 168, 1, 177} ;   Installation manuelle uniquement
la passerelle de Byte [] = {192, 168, 1, 254} ; Installation manuelle uniquement
sous-réseau Byte = {255, 255, 255, 0} ; Installation manuelle uniquement

Si besoin de changer l’adresse MAC (très Rare)
la mac de Byte [] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED} ;

Port Ethernet
Serveur EthernetServer = EthernetServer(80) ; port 80 du html par défaut

Le nombre de sorties va être changé.
int outputQuantity = 8 ;  Lorsqu’on ajoute outputLowest résultat ne doit pas dépasser 10

La broche de sortie plus bas, de que nous ne partons pas
int outputLowest = 2 ;    Devrait se situer entre 2 à 9
////////////////////////////////////////////////////////////////////////

Déclaration de variable
sortie int = 0 ;
printLastCommandOnce booléen = false ;
printButtonMenuOnce booléen = false ;
Boolean initialPrint = true ;
String allOn = "" ;
String allOff = "" ;
lecture booléen = false ;
readInput booléen [10] ; Créer une matrice booléenne pour la quantité maximale.

Début du programme
void setup() {}
Serial.Begin(9600) ;

Broches 10,11,12 et 13 sont utilisés par le shield ethernet
Ensemble de broches comme sorties
pour (int var = outputLowest ; var < outputLowest + outputQuantity ; var ++) {}
pinMode (var, sortie) ;
}

Configurer l’adresse IP. Commentez, celui que vous n’avez pas besoin.
Ethernet.Begin(Mac) ; pour adresse DHCP. (Adresse sera imprimé dans la série.)
Ethernet.Begin (mac, ip, passerelle, sous-réseau) ; pour une configuration manuelle. (L’adresse est celui configuré plus haut.)

Server.Begin() ;
Serial.println(Ethernet.localIP()) ;
}

void loop() {}

écoute des clients entrants et traiter les demandes.
checkForClient() ;
}

void checkForClient() {}

EthernetClient client = server.available() ;

Si {(client)

une requête http se termine par une ligne vide
Boolean currentLineIsBlank = true ;
sentHeader booléen = false ;

tandis que (client.connected()) {}
Si (client.available()) {}

{if(!sentHeader)}
Envoyer un en-tête de réponse http standard
client.println ("HTTP/1.1 200 OK") ;
client.println ("Content-Type : text/html") ;
client.println ("connexion : fermer") ;
client.println() ;
client.println ("< ! DOCTYPE HTML > ") ;
client.println ("< head >") ;

Ajouter un titre de page
client.println ("< titre > commutation Ethernet < /title >") ;
client.println ("< nom meta = \ « description\ » content = \ « Ethernet Switching\ » / >") ;

Ajoutez une balise refresh meta, pour que le navigateur tire encore une fois toutes les 5 secondes :
client.println ("< meta http-equiv = \ « refresh\ » content = \" 10 ; url = / \ ">") ;

Ajouter les autre configuration du navigateur
client.println ("< nom meta = \" apple-mobile-web-app-capable\ "contenu = \ « yes\ » >") ;
client.println ("< meta name=\"apple-mobile-web-app-status-bar-style\ "contenu = \ « default\ » >") ;
client.println ("< nom meta = \ « viewport\ » content = \" largeur = dispositif-largeur, utilisateur évolutive = no\ "/ >") ;

Insérer les données de styles, se trouve habituellement dans les fichiers CSS.
client.println ("< style type = \" texte/css\ ">") ;
client.println("") ;

Celle-ci définira comment la page va s’afficher graphiquement
client.println ("html {height : 100 %;}") ;

client.println ("body {") ;
client.println ("height : 100 %;") ;
client.println ("marge: 0;") ;
client.println ("font-family : helvetica, sans-serif;") ;
client.println ("- webkit-text-size-adjust : none;") ;
client.println("}") ;
client.println("") ;
client.println ("body {") ;
client.println ("- webkit-background-size : 100 % 21px;") ;
client.println ("background-color : #c5ccd3;") ;
client.println ("background-image:") ;
client.println ("- webkit-gradient(linear, left top, right top,") ;
client.println ("couleur-stop(.75, transparent),") ;
client.println ("couleur-stop(.75, rgba(255,255,255,.1)));") ;
client.println ("- webkit-fond-taille : 7px;") ;
client.println("}") ;
client.println("") ;
client.println (".Voir {") ;
client.println (« min-height : 100 %; ") ;
client.println ("overflow : auto; ») ;
client.println("}") ;
client.println("") ;
client.println (".header-wrapper {") ;
client.println ("hauteur : 44px;") ;
client.println ("font-weight : bold;") ;
client.println ("text-shadow : rgba(0,0,0,0.7) 0 - 1px 0;") ;
client.println ("border-top : 1px solid rgba(255,255,255,0.6);") ;
client.println ("border-bottom : 1px solid rgba(0,0,0,0.6);") ;
client.println ("couleur : #fff;") ;
client.println ("background-color: #8195af;") ;
client.println ("background-image:") ;
client.println ("- webkit-gradient(linear, left top, left bottom,") ;
client.println ("from(rgba(255,255,255,.4)),") ;
client.println("to(RGBA(255,255,255,.05))),") ;
client.println ("- webkit-gradient(linear, left top, left bottom,") ;
client.println ("from(transparent),") ;
client.println("to(RGBA(0,0,64,.1)));") ;
client.println ("background-repeat : repeat-non;") ;
client.println ("background-position : haut, gauche, bas gauche;") ;
client.println ("- webkit-fond-taille : 21px 100 %, 100 % 22px;") ;
client.println ("- webkit-box-sizing : frontière-boîte;") ;
client.println("}") ;
client.println("") ;
client.println (".header-wrapper h1 {") ;
client.println ("text-align : center;") ;
client.println ("taille de la police : 20px;") ;
client.println ("line-height : 44px;") ;
client.println ("marge: 0;") ;
client.println("}") ;
client.println("") ;
client.println (".group-wrapper {") ;
client.println ("marge : 9px;") ;
client.println("}") ;
client.println("") ;
client.println (".group-wrapper h2 {") ;
client.println ("color: #4c566c;") ;
client.println ("taille de la police : 17px;") ;
client.println ("line-height : 0,8;") ;
client.println ("font-weight : bold;") ;
client.println ("text-shadow : #fff 0 1px 0;") ;
client.println ("marge : 20px 10px 12px;") ;
client.println("}") ;
client.println("") ;
client.println (".group-wrapper h3 {") ;
client.println ("color: #4c566c;") ;
client.println ("font-size : 12px;") ;
client.println ("line-height: 1;") ;
client.println ("font-weight : bold;") ;
client.println ("text-shadow : #fff 0 1px 0;") ;
client.println ("marge : 20px 10px 12px;") ;
client.println("}") ;
client.println("") ;
client.println ("table .group-wrapper {") ;
client.println ("background-color : #fff;") ;
client.println ("- webkit-border-radius : 10px;") ;

client.println ("- moz-border-radius : 10px;") ;
client.println ("- khtml-border-radius : 10px;") ;
client.println ("border-radius : 10px;") ;

client.println ("taille de la police : 17px;") ;
client.println ("line-height : 20px;") ;
client.println ("marge : 9px 0 20px;") ;
client.println ("border : 1px solid #a9abae;") ;
client.println ("padding : 11px 3px 3px de 12px;") ;
client.println ("marge-left : auto; ») ;
client.println ("marge-droit : auto; ») ;

client.println ("- moz-transform : scale(1);") ; Code pour Mozilla Firefox
client.println ("- moz-transform-origin: 0 0;") ;

client.println("}") ;
client.println("") ;

aspect de la LED verte (ON)
client.println (".green-cercle {") ;
client.println ("display : block;") ;
client.println ("hauteur : 23px;") ;
client.println ("width : 23px;") ;
client.println ("background-color: #0f0;") ;
client.println ("background-color : rgba (60, 132, 198, 0,8);") ;
client.println ("- moz-border-radius : 11px;") ;
client.println ("- webkit-border-radius : 11px;") ;
client.println ("- khtml-border-radius : 11px;") ;
client.println ("border-radius : 11px;") ;
client.println ("marge-left : 1px;") ;

client.println ("background-image: - webkit-gradient (linéaire, 0 % 0 %, 0 % 90 %, de (rgba (46, 184, 0, 0,8)), à (RVBA (148, 255, 112,. 9))) ;
client.println ("border : 2px solid #ccc;") ;
client.println ("- webkit-box-shadow : rgba (11, 140, 27, 0.5) 0px 10px 16px;") ;
client.println ("- moz-box-shadow : rgba (11, 140, 27, 0.5) 0px 10px 16px ; / * FF 3.5 + * / ") ;
client.println ("box-shadow : rgba (11, 140, 27, 0.5) 0px 10px 16px ; / * FF 3.5 + * / ") ;

client.println("}") ;
client.println("") ;

aspect noir (off) LED
client.println (".black-cercle {") ;
client.println ("display : block;") ;
client.println ("hauteur : 23px;") ;
client.println ("width : 23px;") ;
client.println ("background-color: #040;") ;
client.println ("- moz-border-radius : 11px;") ;
client.println ("- webkit-border-radius : 11px;") ;
client.println ("- khtml-border-radius : 11px;") ;
client.println ("border-radius : 11px;") ;
client.println ("marge-left : 1px;") ;
client.println ("- webkit-box-shadow : rgba (11, 140, 27, 0.5) 0px 10px 16px;") ;
client.println ("- moz-box-shadow : rgba (11, 140, 27, 0.5) 0px 10px 16px ; / * FF 3.5 + * / ") ;
client.println ("box-shadow : rgba (11, 140, 27, 0.5) 0px 10px 16px ; / * FF 3.5 + * / ") ;
client.println("}") ;
client.println("") ;

Cela va ajouter de l’éclat à la fois des LEDs
client.println (".glare {") ;
client.println (« position : relative; ») ;
client.println ("haut: 1;") ;
client.println ("left : 5px; ») ;
client.println ("- webkit-border-radius : 10px;") ;
client.println ("- moz-border-radius : 10px;") ;
client.println ("- khtml-border-radius : 10px;") ;
client.println ("border-radius : 10px;") ;
client.println ("height : 1px;") ;
client.println ("largeur : 13px;") ;
client.println (« padding : 5px 0; ") ;
client.println ("background-color : rgba (200, 200, 200, 0,25);") ;
client.println ("background-image: - webkit-gradient (linéaire, 0 % 0 %, 0 % 95 %, de (rgba (255, 255, 255, 0,7)), à (rgba (255, 255, 255, 0)));") ;
client.println("}") ;
client.println("") ;


et enfin, c’est la fin des données de style et en-tête
client.println ("</style >") ;
client.println ("</head >") ;

maintenant imprimer la page elle-même
client.println ("< body >") ;
client.println ("< div class = \ « view\ » >") ;
client.println ("< div class = \" en-tête-wrapper\ ">") ;
client.println ("< h1 > Ethernet commutation </h1 >") ;
client.println ("</div >") ;
client.println ("< div class = \" groupe-wrapper\ ">") ;
client.println ("< h2 > interrupteur la sortie requise. </h2 >") ;
client.println() ;

C’est pour l’arduino pour construire la page à la volée.
sentHeader = true ;
}

char c = client.read() ;

Si (lecture & & c == "") {}
lecture = false ;
}

Serial.Print(c) ;


Si (c == '?') {
lecture = true ; trouvé le?, commencer à lire les infos
}

{if(Reading)}
Si (c == « H ») {sortie = 1;}
Si (c == « L ») {sortie = 0;}
Serial.Print(c) ;   imprimer la valeur de c pour communication série
Serial.Print(outp) ;
Serial.Print('\n') ;

Switch (c) {}
affaire « 2 » :
Ajoutez le code ici pour déclencher sur 2
triggerPin (2, client, sortie) ;
rupture ;
affaire « 3 » :
Ajoutez le code ici pour déclencher sur 3
triggerPin (3, client, sortie) ;
rupture ;
affaire « 4 » :
Ajoutez le code ici pour déclencher sur 4
triggerPin (4, client, sortie) ;
rupture ;
affaire « 5 » :
Ajoutez le code ici pour déclencher sur 5
triggerPin (5, client, sortie) ;
printHtml(client) ;
rupture ;
affaire « 6 » :
Ajoutez le code ici pour déclencher sur 6
triggerPin (6, client, sortie) ;
rupture ;
affaire « 7 » :
Ajoutez le code ici pour déclencher sur 7
triggerPin (7, client, sortie) ;
rupture ;
affaire « 8 » :
Ajoutez le code ici pour déclencher sur 8
triggerPin (8, client, sortie) ;
rupture ;
cas « 9 » :
Ajoutez le code ici pour déclencher sur 9
triggerPin (9, client, sortie) ;
rupture ;
}

}

Si (c == « \n » & & currentLineIsBlank) {}
printLastCommandOnce = true ;
printButtonMenuOnce = true ;
triggerPin (777, client, sortie) ; Appel pour lire le menu saisie et impression. 777 sert ne pas à mettre à jour des sorties
rupture ;
}
}
}

Set Variables avant de repartir
printLastCommandOnce = false ;
printButtonMenuOnce = false ;

allOn = "" ;
allOff = "" ;
client.println ("\n < h3 align = \ « center\ » > & copie ; Auteur - Claudio Vella < br > Malte - octobre - 2012 < / h3 > ") ;
client.println ("</div > \n </div > \n </body > \n </html >") ;

Delay(1) ; donner le temps de navigateur web pour recevoir les données
client.Stop() ; fermer la connexion :

}

}

void triggerPin (int code pin, EthernetClient client, sortie int) {}
Mise en marche ou arrêt sorties, lit les sorties et les imprime les boutons

Définition de sorties
Si (broche! = 777) {}
if(outp == 1) {}
digitalWrite (tige, haute) ;
}
if(outp == 0) {}
digitalWrite (broches, faible) ;
}
}
Actualiser la lecture des résultats
readOutputStatuses() ;


Imprime les boutons
Si (printButtonMenuOnce == true) {}
printHtmlButtons(client) ;
printButtonMenuOnce = false ;
}

}

imprimer les boutons html pour la mise en marche/arrêt des canaux
void printHtmlButtons (EthernetClient client) {}

Commencez à créer la table html
client.println("") ;
client.println ("< p >") ;
client.println ("< FORM >") ;
client.println ("< table frontière = \ « 0\ » align = \ « center\ » >") ;

Lancer l’impression par bouton
pour (int var = outputLowest ; var < outputLowest + outputQuantity ; var ++) {}

commande Set pour tous marche/arrêt
allOn += « H » ;
allOn += var ;
allOff += « L » ;
allOff += var ;


Imprimer le début du rang
client.Print ("< tr > \n") ;

Imprime la ON boutons
client.Print ("< td >< INPUT TYPE = \ « button\ » VALUE = \" Switch ON - Pin ") ;
client.Print(var) ;
client.Print ("\" onClick=\"parent.location='/ ? H") ;
client.Print(var) ;
client.Print (« ' \ ">< /td > \n") ;

Imprime les boutons OFF
client.Print ("< td >< INPUT TYPE = \ « button\ » VALUE = \" Switch OFF - Pin ") ;
client.Print(var) ;
client.Print ("\" onClick=\"parent.location='/ ? « « « L ») ;
client.Print(var) ;
client.Print (« ' \ ">< /td > \n") ;


Imprimer la première partie des cercles ou les LEDs
Si (readInput [var] == true) {}
client.Print ("< td >< div class =' cercle vert ' >< div class = « lueur » >< / div >< / div >< /td > \n") ;
} else
{
client.Print ("< td >< div class =' noir-circle' >< div class = « lueur » >< / div >< / div >< /td > \n") ;
}


Impression de fin de ligne
client.Print ("< /tr > \n") ;
}

Imprime le ON tous les Pins bouton
client.Print ("\n < tr > < td >< INPUT TYPE = \ « button\ » VALUE = \" allumer toutes les broches") ;
client.Print ("\" onClick=\"parent.location='/?") ;
client.Print(allOn) ;
client.Print (« ' \ ">< /td > \n") ;

Imprime le OFF All Pins bouton
client.Print ("< td >< INPUT TYPE = \ « button\ » VALUE = \" éteins toutes les quilles ») ;
client.Print ("\" onClick=\"parent.location='/?") ;
client.Print(allOff) ;
client.Print (« ' \ ">< \n /td > < td >< /td > \n < /tr > \n") ;

Fermeture de la table et la forme
client.println ("< /table >") ;
client.println ("</font >") ;
client.println ("< /p >") ;

}

Lire les statuts de sortie
void readOutputStatuses() {}
pour (int var = outputLowest ; var < outputLowest + outputQuantity ; var ++) {}
readInput [var] = digitalRead(var) ;
Serial.Print(readInput[var]) ;
}

}

Articles Liés

Mesurer la température sur le web avec Arduino Ethernet et DS18B20 capteur

Mesurer la température sur le web avec Arduino Ethernet et DS18B20 capteur

Bonjour à tous,Tout d'abord, je tiens à vous dire que je ne suis pas un programmeur. Mais j'aime faire de nouvelles choses, surtout quand elle est liée à l'électronique. Ici, j'ai intégré un serveur Web pour Arduino Ethernet avec un capteur de tempér
Mesurer la température avec Arduino Ethernet + DS18B20 + Thingspeak

Mesurer la température avec Arduino Ethernet + DS18B20 + Thingspeak

Bonjour à tousIci je vais vous savent lire la température à l'aide de capteur DS180B20 et Arduino Ethernet et envoyer les données à Thingspeak. Vous pouvez accéder à ma page de Thingspeak ici :https://thingspeak.com/Channels/25037J'ai utilisé mon ard
Smart Home Automation avec Android + Ethernet Internet + Arduino

Smart Home Automation avec Android + Ethernet Internet + Arduino

Domotique devient de plus en plus populaire et abordable et fascine les gens. Internet offre de telles possibilités comme jamais auparavant. Impressionnez vos amis montrant sur Smartphone que vous pouvez mise en marche/arrêt lampe dans vos milles app
Place de parking System avec Ethernet sur arduino

Place de parking System avec Ethernet sur arduino

C'est le système de stationnement avec Ethernet et arduino.Ethernet est shiled WIZnet W5500 Ethernet.Il est très facilement possible en utilisant la connexion ethernet. Ethernet ou internet utilise initialement communication du protocole TCP/IP.Et à
Comment faire un système d’alarme avec Arduino

Comment faire un système d’alarme avec Arduino

Avec Arduino est vraiment possible de faire des projets complexes, notamment par le biais de l'Internet, vous pouvez l'utiliser à travers le bouclier différents disponibles pour le microcontrôleur. Dans cet article, nous allons voir comment faire un
Banc d’alimentation PSU de vieux ATX avec Arduino et moniteur LCD

Banc d’alimentation PSU de vieux ATX avec Arduino et moniteur LCD

Bonjour à tous et Bienvenue sur mon premier Instructable.J'ai toujours voulu un banc PSU pour faciliter l'accès à une source d'alimentation et quelque chose que je peux compter sur quand on travaille sur divers projets. J'ai voulu un bloc d'alimentat
IoT murale avec Arduino et ESP8266

IoT murale avec Arduino et ESP8266

Dans ce instructable, je vous montrer comment ajouter accessibilité améliorée, intelligence et une connectivité à une prise murale ordinaire. Cela se fait avec une combinaison de microcontrôleurs, Arduino, divers capteurs, ESP8266 et un mélange de pr
Programmation ESP8266 ESP-12F NodeMCU v1.0 avec Arduino IDE dans l’enregistreur de température sans fil

Programmation ESP8266 ESP-12F NodeMCU v1.0 avec Arduino IDE dans l’enregistreur de température sans fil

Retour à fin 2014 et 2015 au début, votre vraiment tombé surCette ESP8266 de puce WiFi astucieux (l'ESP-01) et dois bataille parmi les documentations incompatibles provenant de diverses sources. Pour l'instant de l'éperon, il a documenté ses frustrat
L’utilisation de télécommandes IR avec Arduino (actuels et mis à jour)

L’utilisation de télécommandes IR avec Arduino (actuels et mis à jour)

Je suis fatigué de ces tutoriels de programmation compliquées sur l'utilisation de certaines choses. J'aime simple, facile à comprendre, étape par étape les instructions. Mon plus gros problème était avec IR et de POV. J'ai enfin maîtrisé comment con
AtoZ de modelisme + bricolage radio avec ARDUINO

AtoZ de modelisme + bricolage radio avec ARDUINO

Wikipedia définit RC-véhiculeUn véhicule de contrôle à distance est un véhicule qui est contrôlé à distance par un moyen qui ne limite pas son mouvement avec une origine externe à l'appareil. Il s'agit souvent d'un dispositif de commande radio, câble
LED Cube avec Arduino et PCB personnalisé

LED Cube avec Arduino et PCB personnalisé

cette instructable détaille la conception et la construction des processus pour une 5 x 5 x 5 cube LED, contrôlée avec un Arduino, qui réside sur un circuits imprimés personnalisés.Vidéos, photos et informations supplémentaires se trouvent sur mon si
BRICOLAGE à la main Hexapod avec arduino (Hexdrake)

BRICOLAGE à la main Hexapod avec arduino (Hexdrake)

Bonjour, je suis David, et dans ce instructable je vais montrer comment j'ai fait cette hexapode dont le nom est Hexdrake.Étant donné que j'avais 16 ans je me suis intéressé en électronique et en robotique. Après être certaine et programmation de com
Ligne de base suivant Robot avec Arduino

Ligne de base suivant Robot avec Arduino

07/09/2015Il a été quelques années puisque nous avons affiché initialement ce Robot suivant ligne de base avec tutorial Arduino, et il semble tellement de gens a jugé utile que nous devrions poster une mise à jour qui se déroule courant Arduino bibli
Comment faire un téléphone Mobile et l’ordinateur contrôlé 3D Robot imprimé avec Arduino - IoBot.

Comment faire un téléphone Mobile et l’ordinateur contrôlé 3D Robot imprimé avec Arduino - IoBot.

Si vous cherchez un moyen de contrôler un Arduino basé des périphériques, cette instruction vous montrera comment le faire en s'appuyant simple robot.Le IoBot peut être contrôlé par une application mobile et l'ordinateur via LAN ou câble USB. L'appli