{"version":"1.1","schema_version":"1.1.0","plugin_version":"1.1.2","url":"https://tutos-gameserver.fr/2020/04/20/entree-et-sortie-du-serveur-web-arduino-serveur-dimpression/","llm_html_url":"https://tutos-gameserver.fr/2020/04/20/entree-et-sortie-du-serveur-web-arduino-serveur-dimpression/llm","llm_json_url":"https://tutos-gameserver.fr/2020/04/20/entree-et-sortie-du-serveur-web-arduino-serveur-dimpression/llm.json","manifest_url":"https://tutos-gameserver.fr/llm-endpoints-manifest.json","language":"fr-FR","locale":"fr_FR","title":"Entrée et sortie du serveur Web Arduino\n\n &#8211; Serveur d&rsquo;impression","site":{"name":"Tutos GameServer","url":"https://tutos-gameserver.fr/"},"author":{"id":1,"name":"Titanfall","url":"https://tutos-gameserver.fr/author/titanfall/"},"published_at":"2020-04-20T03:14:27+00:00","modified_at":"2020-04-20T03:14:27+00:00","word_count":1914,"reading_time_seconds":575,"summary":"Créé le: 5 avril 2013 Partie 16 du didacticiel du serveur Web Arduino Ethernet Shield Dans cette partie du didacticiel, tout ce qui a été traité jusqu&#39;à présent est réuni. HTML, JavaScript, CSS, HTTP, Ajax et la carte SD sont utilisés pour créer une page Web qui affiche les entrées analogiques et numériques Arduino et [&hellip;]","summary_points":["Créé le: 5 avril 2013\nPartie 16 du didacticiel du serveur Web Arduino Ethernet Shield\nDans cette partie du didacticiel, tout ce qui a été traité jusqu&#39;à présent est réuni.","HTML, JavaScript, CSS, HTTP, Ajax et la carte SD sont utilisés pour créer une page Web qui affiche les entrées analogiques et numériques Arduino et permet de contrôler les sorties numériques.","Le serveur Web Arduino héberge une page Web qui affiche quatre valeurs d&#39;entrée analogique et l&#39;état de trois commutateurs.","La page Web permet de contrôler quatre LED &#8211; deux LED sont contrôlées à l&#39;aide de cases à cocher et deux LED sont contrôlées à l&#39;aide de boutons."],"topics":["Serveur d'impression"],"entities":[],"entities_metadata":[{"id":10,"name":"Serveur d'impression","slug":"serveur-dimpression","taxonomy":"category","count":3907,"url":"https://tutos-gameserver.fr/category/serveur-dimpression/"}],"tags":["Serveur d'impression"],"content_hash":"b78f094b6201ec07c602c2cd28612760","plain_text":"Créé le: 5 avril 2013\nPartie 16 du didacticiel du serveur Web Arduino Ethernet Shield\nDans cette partie du didacticiel, tout ce qui a été traité jusqu&#39;à présent est réuni. HTML, JavaScript, CSS, HTTP, Ajax et la carte SD sont utilisés pour créer une page Web qui affiche les entrées analogiques et numériques Arduino et permet de contrôler les sorties numériques.\nLe serveur Web Arduino héberge une page Web qui affiche quatre valeurs d&#39;entrée analogique et l&#39;état de trois commutateurs. La page Web permet de contrôler quatre LED &#8211; deux LED sont contrôlées à l&#39;aide de cases à cocher et deux LED sont contrôlées à l&#39;aide de boutons.\nLorsque plusieurs ordinateurs (navigateur Web) sont connectés au serveur Web Arduino, les sorties (LED) allumées à l&#39;aide d&#39;un ordinateur seront mises à jour sur l&#39;autre ordinateur &#8211; c&#39;est-à-dire lorsqu&#39;une case à cocher est activée pour allumer une LED à partir d&#39;un ordinateur, la case sera également cochée automatiquement sur l&#39;autre ordinateur.\nLa vidéo suivante montre deux ordinateurs connectés au serveur Web Arduino et lorsque des modifications sont apportées sur la page Web sur un ordinateur, elles sont mises à jour sur l&#39;autre.\nSchéma du circuit d&#39;E / S du serveur Web\nLe schéma de circuit de cette partie du didacticiel est illustré ici:\n\t\nDans la vidéo, A3 était connecté à un diviseur de tension, A4 était connecté via une résistance à GND et A5 était connecté via une résistance à + 5V &#8211; non représenté sur le schéma de circuit.\nPrésentation du fonctionnement du serveur Web\nAprès qu&#39;un navigateur Web a demandé et chargé la page Web à partir du serveur Web Arduino, le JavaScript de la page Web enverra une demande Ajax de données de l&#39;Arduino chaque seconde.\nLa page Web hébergée par le serveur Web Arduino est affichée ici:\n\t\nPage Web hébergée par le serveur Web Arduino\nL&#39;Arduino répondra à chaque demande Ajax en renvoyant un fichier XML au navigateur Web. Le fichier XML contient les valeurs des quatre entrées analogiques de l&#39;Arduino (A2 à A5), l&#39;état de trois broches (commutateurs sur les broches 2, 3 et 5) et l&#39;état des quatre LED.\n\t\nFichier XML envoyé par Arduino\nLorsqu&#39;une LED est allumée à partir de la page Web en cochant une case, le JavaScript enverra l&#39;état de la case à cocher (envoyer une instruction pour allumer la LED) avec la prochaine demande Ajax. La même chose se produira si la LED est éteinte ou si l&#39;un des boutons est utilisé pour allumer ou éteindre une LED.\nCode source\nLe code source de l&#39;esquisse Arduino et de la page Web est un peu gros à inclure sur cette page. Il est suggéré de télécharger ces fichiers ci-dessous et de les ouvrir dans votre éditeur préféré en suivant les explications ci-dessous.\nCroquis et page Web Arduino:\n\tweb_server_IO.zip (4,7 ko)\nExécuter l&#39;exemple\nPour exécuter cet exemple, copiez d&#39;abord la page Web (index.htm) du téléchargement ci-dessus sur une carte micro SD. Insérez la carte micro SD dans la fente pour carte du blindage Ethernet. Le blindage Ethernet doit être branché sur une carte Arduino, connecté à votre réseau et alimenté par USB ou une alimentation externe.\nConstruisez autant de circuits que vous le souhaitez. Si vous ne connectez rien aux broches d&#39;entrée, elles peuvent simplement basculer au hasard pendant qu&#39;elles captent du bruit. Les entrées peuvent toujours être tirées vers le haut ou le bas via une résistance si vous ne souhaitez pas les connecter à des commutateurs ou à un potentiomètre.\nChargez l&#39;esquisse Arduino (eth_websrv_SD_Ajax_in_out) à partir du téléchargement ci-dessus sur l&#39;Arduino.\nNaviguez jusqu&#39;à l&#39;adresse IP définie dans l&#39;esquisse à l&#39;aide d&#39;un navigateur Web &#8211; vous devriez voir la page Web chargée et les valeurs analogiques et les valeurs de commutation mises à jour chaque seconde.\nComment fonctionne l&#39;exemple\nL&#39;esquisse Arduino et la page Web sont essentiellement des versions modifiées du code des exemples précédents de ce tutoriel en plusieurs parties. Les fichiers sont des versions modifiées des exemples qui utilisent Ajax avec XML (partie 14 et partie 15).\nEntrées analogiques et numériques\nLes entrées analogiques (valeurs analogiques) et numériques (états de commutation) sont demandées et reçues de la même manière que celle expliquée dans la partie 14 de ce didacticiel, sauf que les valeurs analogiques sont toutes incluses dans  les balises et les états de commutation sont tous inclus dans  tags &#8211; c&#39;est-à-dire qu&#39;ils n&#39;utilisent pas de noms de tag uniques pour chaque entrée.\nLorsque le JavaScript de la page Web reçoit le fichier XML de l&#39;Arduino, il en utilise un pour boucle pour extraire les valeurs analogiques et une seconde pour boucle pour extraire les états de commutation.\nLe code JavaScript pour extraire les valeurs analogiques du fichier XML est affiché ici:\n\n\n\n\nvar num_an = this.responseXML.getElementsByTagName (&#39;analog&#39;). length;\npour (count = 0; count &lt;num_an; count ++) \n    document.getElementsByClassName (&quot;analogique&quot;)[count].innerHTML =\n        this.responseXML.getElementsByTagName (&#39;analogique&#39;)[count].childNodes[0].nodeValue;\n\n\nLa première ligne du code ci-dessus obtient le nombre d&#39;éléments du fichier XML inclus dans  les balise et les stocke dans la variable num_an qui est ensuite utilisé dans le pour boucle pour obtenir le nombre correct de valeurs analogiques.\ndans le pour boucle, le code suivant s&#39;empare de chaque HTML envergure qui a la classe analogique:\n\n\n\n\ndocument.getElementsByClassName (&quot;analogique&quot;)[count].innerHTML\n\nQui s&#39;empare de chacun envergure élément dans le code HTML suivant:\n\nA2: ...\nA3: ...\nA4: ...\nA5: ...\n\nCette ligne de code obtient ensuite tour à tour chaque valeur analogique du fichier XML:\n\n\n\n\nthis.responseXML.getElementsByTagName (&#39;analogique&#39;)[count].childNodes[0].nodeValue;\n\nAinsi, les deux lignes de code JavaScript ci-dessus travaillant ensemble récupèrent chaque valeur analogique du fichier XML dans l&#39;ordre dans lequel elles apparaissent dans le fichier et insèrent ces valeurs dans chaque envergure dans l&#39;ordre où ils apparaissent dans le HTML.\nLes valeurs de commutateur fonctionnent de la même manière, mais chaque code HTML envergure avec le nom de la classe interrupteurs a une valeur du fichier XML avec la balise commutateur inséré dans l&#39;ordre dans lequel ils apparaissent.\nLEDs\nL&#39;Arduino garde la trace des LED allumées et des LED éteintes. Ces informations sont renvoyées dans le cadre du fichier XML en réponse à la demande Ajax qui se produit toutes les secondes.\nDans l&#39;esquisse Arduino, le tableau suivant stocke les états des LED (stocke 1 pour la LED «  allumée &#39;&#39; et 0 pour la LED «  éteinte &#39;&#39;):\n\n\n\n\nboolean LED_state[4] = 0; // stocke les états des LED\n\nCe tableau est initialisé avec des zéros &#8211; toutes les LED éteintes. Chaque élément du réseau correspond à une LED dans l&#39;ordre de LED1 à LED4, c&#39;est-à-dire LED_state[0] stocke l&#39;état de la LED 1, LED_state[1] stocke l&#39;état de la LED 2, etc.\nLED utilisant des cases à cocher\nDans le code JavaScript, les lignes de code suivantes montrent comment l&#39;état de la LED 1 est extrait du fichier XML reçu et utilisé pour mettre à jour la case à cocher &#8211; c&#39;est-à-dire pour la marquer comme cochée ou décochée, selon l&#39;état de la LED.\n\n\n\n\n// LED 1\nif (this.responseXML.getElementsByTagName (&#39;LED&#39;)[0].childNodes[0].nodeValue\n                                                             === &quot;vérifié&quot;) \n    document.LED_form.LED1.checked = true;\n\nautre \n    document.LED_form.LED1.checked = false;\n\n\nDans le code ci-dessus, si la première valeur (c&#39;est-à-dire pour la LED 1) du fichier XML dans un  la balise contient le texte vérifié alors la case correspondante est cochée en utilisant cette ligne de JavaScript:\n\n\n\n\ndocument.LED_form.LED1.checked = true;\n\nSinon, la case n&#39;est pas cochée.\nCela garantit que chaque navigateur qui se connecte au serveur Web Arduino affiche les états corrects des LED car ils reçoivent les états des LED chaque seconde.\nLorsqu&#39;un utilisateur coche ou décoche une case à cocher, la prochaine demande Ajax inclura le nom et l&#39;état de la LED avec la prochaine demande HTTP GET.\nLa fonction JavaScript GetCheck () est exécuté chaque fois qu&#39;une case est cochée. Si la case à cocher pour la LED 1 est cochée, la valeur d&#39;une chaîne pour la LED 1 est définie:\n\n\n\n\nstrLED1 = &quot;&amp; LED1 = 1&quot;;\n\nSi la case n&#39;est pas cochée, la chaîne est définie comme suit:\n\n\n\n\nstrLED1 = &quot;&amp; LED1 = 0&quot;;\n\nLa prochaine fois que GetArduinoIO () la fonction est appelée, qui se produit chaque seconde, la strLED1 la chaîne ne sera plus vide. Cette chaîne sera désormais incluse dans la requête GET:\n\n\n\n\nrequest.open (&quot;GET&quot;, &quot;ajax_inputs&quot; + strLED1 + strLED2 + strLED3 + strLED4\n                                                                + nocache, vrai);\n\nToutes les autres chaînes de LED seront vides si une case à cocher ou un bouton n&#39;a pas été cliqué, donc ne seront pas inclus avec la demande GET.\nAprès que la demande get se soit produite, toutes les chaînes de LED sont remises à vide:\n\n\n\n\nstrLED1 = &quot;&quot;;\nstrLED2 = &quot;&quot;;\nstrLED3 = &quot;&quot;;\nstrLED4 = &quot;&quot;;\n\nLorsque l&#39;Arduino reçoit la demande Ajax GET, le SetLEDs () La fonction dans l&#39;esquisse Arduino vérifie un changement d&#39;état de la LED dans la demande GET reçue et s&#39;il en trouve une, allumera ou éteindra la LED correspondante, puis enregistrera l&#39;état de la LED dans le LED_state[]    tableau.\nLED utilisant des boutons\nLes boutons qui contrôlent les LED fonctionnent de la même manière que les cases à cocher, sauf que chaque bouton a sa propre fonction JavaScript qui s&#39;exécute lorsqu&#39;un bouton est cliqué.\nLe texte sur les boutons est mis à jour pour montrer l&#39;état des LED qu&#39;ils contrôlent.\nLes boutons n&#39;ont pas de propriété &quot;vérifiée&quot;, donc l&#39;état actuel de la LED de chaque bouton est stocké dans une variable:\n\n\n\n\nvar LED3_state = 0;\nvar LED4_state = 0;\n\nLe stockage de l&#39;état du bouton est nécessaire pour que lorsque vous cliquez à nouveau sur le bouton, il sache s&#39;il faut mettre à jour la chaîne envoyée avec la demande GET pour allumer ou éteindre la LED.\nLorsque l&#39;Arduino envoie l&#39;état des LED dans le fichier XML qui sont contrôlées par les boutons, il insère &quot;on&quot; ou &quot;off&quot; entre les  balises au lieu de &quot;coché&quot; ou &quot;non coché&quot; comme pour les cases à cocher.\nCSS\nLe CSS utilisé dans cet exemple place chaque ensemble d&#39;entrées ou de sorties dans leurs propres cases avec une bordure bleue. Il positionne également les boîtes les unes à côté des autres. Si la fenêtre du navigateur est redimensionnée sur sa largeur, les cases de droite se déplaceront sous les cases de gauche.\nLe CSS dans cette partie du tutoriel ne sera pas expliqué ici, mais sera expliqué dans les prochaines parties de ce tutoriel où nous regardons plus de CSS.\n\nVeuillez activer JavaScript pour afficher les commentaires fournis par Disqus.\n\nClick to rate this post!\r\n                                   \r\n                               [Total: 0  Average: 0]","paragraphs":["Créé le: 5 avril 2013\nPartie 16 du didacticiel du serveur Web Arduino Ethernet Shield\nDans cette partie du didacticiel, tout ce qui a été traité jusqu&#39;à présent est réuni. HTML, JavaScript, CSS, HTTP, Ajax et la carte SD sont utilisés pour créer une page Web qui affiche les entrées analogiques et numériques Arduino et permet de contrôler les sorties numériques.\nLe serveur Web Arduino héberge une page Web qui affiche quatre valeurs d&#39;entrée analogique et l&#39;état de trois commutateurs. La page Web permet de contrôler quatre LED &#8211; deux LED sont contrôlées à l&#39;aide de cases à cocher et deux LED sont contrôlées à l&#39;aide de boutons.\nLorsque plusieurs ordinateurs (navigateur Web) sont connectés au serveur Web Arduino, les sorties (LED) allumées à l&#39;aide d&#39;un ordinateur seront mises à jour sur l&#39;autre ordinateur &#8211; c&#39;est-à-dire lorsqu&#39;une case à cocher est activée pour allumer une LED à partir d&#39;un ordinateur, la case sera également cochée automatiquement sur l&#39;autre ordinateur.\nLa vidéo suivante montre deux ordinateurs connectés au serveur Web Arduino et lorsque des modifications sont apportées sur la page Web sur un ordinateur, elles sont mises à jour sur l&#39;autre.\nSchéma du circuit d&#39;E / S du serveur Web\nLe schéma de circuit de cette partie du didacticiel est illustré ici:\n\t\nDans la vidéo, A3 était connecté à un diviseur de tension, A4 était connecté via une résistance à GND et A5 était connecté via une résistance à + 5V &#8211; non représenté sur le schéma de circuit.\nPrésentation du fonctionnement du serveur Web\nAprès qu&#39;un navigateur Web a demandé et chargé la page Web à partir du serveur Web Arduino, le JavaScript de la page Web enverra une demande Ajax de données de l&#39;Arduino chaque seconde.\nLa page Web hébergée par le serveur Web Arduino est affichée ici:\n\t\nPage Web hébergée par le serveur Web Arduino\nL&#39;Arduino répondra à chaque demande Ajax en renvoyant un fichier XML au navigateur Web. Le fichier XML contient les valeurs des quatre entrées analogiques de l&#39;Arduino (A2 à A5), l&#39;état de trois broches (commutateurs sur les broches 2, 3 et 5) et l&#39;état des quatre LED.\n\t\nFichier XML envoyé par Arduino\nLorsqu&#39;une LED est allumée à partir de la page Web en cochant une case, le JavaScript enverra l&#39;état de la case à cocher (envoyer une instruction pour allumer la LED) avec la prochaine demande Ajax. La même chose se produira si la LED est éteinte ou si l&#39;un des boutons est utilisé pour allumer ou éteindre une LED.\nCode source\nLe code source de l&#39;esquisse Arduino et de la page Web est un peu gros à inclure sur cette page. Il est suggéré de télécharger ces fichiers ci-dessous et de les ouvrir dans votre éditeur préféré en suivant les explications ci-dessous.\nCroquis et page Web Arduino:\n\tweb_server_IO.zip (4,7 ko)\nExécuter l&#39;exemple\nPour exécuter cet exemple, copiez d&#39;abord la page Web (index.htm) du téléchargement ci-dessus sur une carte micro SD. Insérez la carte micro SD dans la fente pour carte du blindage Ethernet. Le blindage Ethernet doit être branché sur une carte Arduino, connecté à votre réseau et alimenté par USB ou une alimentation externe.\nConstruisez autant de circuits que vous le souhaitez. Si vous ne connectez rien aux broches d&#39;entrée, elles peuvent simplement basculer au hasard pendant qu&#39;elles captent du bruit. Les entrées peuvent toujours être tirées vers le haut ou le bas via une résistance si vous ne souhaitez pas les connecter à des commutateurs ou à un potentiomètre.\nChargez l&#39;esquisse Arduino (eth_websrv_SD_Ajax_in_out) à partir du téléchargement ci-dessus sur l&#39;Arduino.\nNaviguez jusqu&#39;à l&#39;adresse IP définie dans l&#39;esquisse à l&#39;aide d&#39;un navigateur Web &#8211; vous devriez voir la page Web chargée et les valeurs analogiques et les valeurs de commutation mises à jour chaque seconde.\nComment fonctionne l&#39;exemple\nL&#39;esquisse Arduino et la page Web sont essentiellement des versions modifiées du code des exemples précédents de ce tutoriel en plusieurs parties. Les fichiers sont des versions modifiées des exemples qui utilisent Ajax avec XML (partie 14 et partie 15).\nEntrées analogiques et numériques\nLes entrées analogiques (valeurs analogiques) et numériques (états de commutation) sont demandées et reçues de la même manière que celle expliquée dans la partie 14 de ce didacticiel, sauf que les valeurs analogiques sont toutes incluses dans  les balises et les états de commutation sont tous inclus dans  tags &#8211; c&#39;est-à-dire qu&#39;ils n&#39;utilisent pas de noms de tag uniques pour chaque entrée.\nLorsque le JavaScript de la page Web reçoit le fichier XML de l&#39;Arduino, il en utilise un pour boucle pour extraire les valeurs analogiques et une seconde pour boucle pour extraire les états de commutation.\nLe code JavaScript pour extraire les valeurs analogiques du fichier XML est affiché ici:","var num_an = this.responseXML.getElementsByTagName (&#39;analog&#39;). length;\npour (count = 0; count &lt;num_an; count ++) \n    document.getElementsByClassName (&quot;analogique&quot;)[count].innerHTML =\n        this.responseXML.getElementsByTagName (&#39;analogique&#39;)[count].childNodes[0].nodeValue;","La première ligne du code ci-dessus obtient le nombre d&#39;éléments du fichier XML inclus dans  les balise et les stocke dans la variable num_an qui est ensuite utilisé dans le pour boucle pour obtenir le nombre correct de valeurs analogiques.\ndans le pour boucle, le code suivant s&#39;empare de chaque HTML envergure qui a la classe analogique:","document.getElementsByClassName (&quot;analogique&quot;)[count].innerHTML","Qui s&#39;empare de chacun envergure élément dans le code HTML suivant:","A2: ...\nA3: ...\nA4: ...\nA5: ...","Cette ligne de code obtient ensuite tour à tour chaque valeur analogique du fichier XML:","this.responseXML.getElementsByTagName (&#39;analogique&#39;)[count].childNodes[0].nodeValue;","Ainsi, les deux lignes de code JavaScript ci-dessus travaillant ensemble récupèrent chaque valeur analogique du fichier XML dans l&#39;ordre dans lequel elles apparaissent dans le fichier et insèrent ces valeurs dans chaque envergure dans l&#39;ordre où ils apparaissent dans le HTML.\nLes valeurs de commutateur fonctionnent de la même manière, mais chaque code HTML envergure avec le nom de la classe interrupteurs a une valeur du fichier XML avec la balise commutateur inséré dans l&#39;ordre dans lequel ils apparaissent.\nLEDs\nL&#39;Arduino garde la trace des LED allumées et des LED éteintes. Ces informations sont renvoyées dans le cadre du fichier XML en réponse à la demande Ajax qui se produit toutes les secondes.\nDans l&#39;esquisse Arduino, le tableau suivant stocke les états des LED (stocke 1 pour la LED «  allumée &#39;&#39; et 0 pour la LED «  éteinte &#39;&#39;):","boolean LED_state[4] = 0; // stocke les états des LED","Ce tableau est initialisé avec des zéros &#8211; toutes les LED éteintes. Chaque élément du réseau correspond à une LED dans l&#39;ordre de LED1 à LED4, c&#39;est-à-dire LED_state[0] stocke l&#39;état de la LED 1, LED_state[1] stocke l&#39;état de la LED 2, etc.\nLED utilisant des cases à cocher\nDans le code JavaScript, les lignes de code suivantes montrent comment l&#39;état de la LED 1 est extrait du fichier XML reçu et utilisé pour mettre à jour la case à cocher &#8211; c&#39;est-à-dire pour la marquer comme cochée ou décochée, selon l&#39;état de la LED.","// LED 1\nif (this.responseXML.getElementsByTagName (&#39;LED&#39;)[0].childNodes[0].nodeValue\n                                                             === &quot;vérifié&quot;) \n    document.LED_form.LED1.checked = true;","autre \n    document.LED_form.LED1.checked = false;","Dans le code ci-dessus, si la première valeur (c&#39;est-à-dire pour la LED 1) du fichier XML dans un  la balise contient le texte vérifié alors la case correspondante est cochée en utilisant cette ligne de JavaScript:","document.LED_form.LED1.checked = true;","Sinon, la case n&#39;est pas cochée.\nCela garantit que chaque navigateur qui se connecte au serveur Web Arduino affiche les états corrects des LED car ils reçoivent les états des LED chaque seconde.\nLorsqu&#39;un utilisateur coche ou décoche une case à cocher, la prochaine demande Ajax inclura le nom et l&#39;état de la LED avec la prochaine demande HTTP GET.\nLa fonction JavaScript GetCheck () est exécuté chaque fois qu&#39;une case est cochée. Si la case à cocher pour la LED 1 est cochée, la valeur d&#39;une chaîne pour la LED 1 est définie:","strLED1 = &quot;&amp; LED1 = 1&quot;;","Si la case n&#39;est pas cochée, la chaîne est définie comme suit:","strLED1 = &quot;&amp; LED1 = 0&quot;;","La prochaine fois que GetArduinoIO () la fonction est appelée, qui se produit chaque seconde, la strLED1 la chaîne ne sera plus vide. Cette chaîne sera désormais incluse dans la requête GET:","request.open (&quot;GET&quot;, &quot;ajax_inputs&quot; + strLED1 + strLED2 + strLED3 + strLED4\n                                                                + nocache, vrai);","Toutes les autres chaînes de LED seront vides si une case à cocher ou un bouton n&#39;a pas été cliqué, donc ne seront pas inclus avec la demande GET.\nAprès que la demande get se soit produite, toutes les chaînes de LED sont remises à vide:","strLED1 = &quot;&quot;;\nstrLED2 = &quot;&quot;;\nstrLED3 = &quot;&quot;;\nstrLED4 = &quot;&quot;;","Lorsque l&#39;Arduino reçoit la demande Ajax GET, le SetLEDs () La fonction dans l&#39;esquisse Arduino vérifie un changement d&#39;état de la LED dans la demande GET reçue et s&#39;il en trouve une, allumera ou éteindra la LED correspondante, puis enregistrera l&#39;état de la LED dans le LED_state[]    tableau.\nLED utilisant des boutons\nLes boutons qui contrôlent les LED fonctionnent de la même manière que les cases à cocher, sauf que chaque bouton a sa propre fonction JavaScript qui s&#39;exécute lorsqu&#39;un bouton est cliqué.\nLe texte sur les boutons est mis à jour pour montrer l&#39;état des LED qu&#39;ils contrôlent.\nLes boutons n&#39;ont pas de propriété &quot;vérifiée&quot;, donc l&#39;état actuel de la LED de chaque bouton est stocké dans une variable:","var LED3_state = 0;\nvar LED4_state = 0;","Le stockage de l&#39;état du bouton est nécessaire pour que lorsque vous cliquez à nouveau sur le bouton, il sache s&#39;il faut mettre à jour la chaîne envoyée avec la demande GET pour allumer ou éteindre la LED.\nLorsque l&#39;Arduino envoie l&#39;état des LED dans le fichier XML qui sont contrôlées par les boutons, il insère &quot;on&quot; ou &quot;off&quot; entre les  balises au lieu de &quot;coché&quot; ou &quot;non coché&quot; comme pour les cases à cocher.\nCSS\nLe CSS utilisé dans cet exemple place chaque ensemble d&#39;entrées ou de sorties dans leurs propres cases avec une bordure bleue. Il positionne également les boîtes les unes à côté des autres. Si la fenêtre du navigateur est redimensionnée sur sa largeur, les cases de droite se déplaceront sous les cases de gauche.\nLe CSS dans cette partie du tutoriel ne sera pas expliqué ici, mais sera expliqué dans les prochaines parties de ce tutoriel où nous regardons plus de CSS.","Veuillez activer JavaScript pour afficher les commentaires fournis par Disqus.","Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]"],"content_blocks":[{"id":"text-1","type":"text","heading":"","plain_text":"Créé le: 5 avril 2013\nPartie 16 du didacticiel du serveur Web Arduino Ethernet Shield\nDans cette partie du didacticiel, tout ce qui a été traité jusqu&#39;à présent est réuni. HTML, JavaScript, CSS, HTTP, Ajax et la carte SD sont utilisés pour créer une page Web qui affiche les entrées analogiques et numériques Arduino et permet de contrôler les sorties numériques.\nLe serveur Web Arduino héberge une page Web qui affiche quatre valeurs d&#39;entrée analogique et l&#39;état de trois commutateurs. La page Web permet de contrôler quatre LED &#8211; deux LED sont contrôlées à l&#39;aide de cases à cocher et deux LED sont contrôlées à l&#39;aide de boutons.\nLorsque plusieurs ordinateurs (navigateur Web) sont connectés au serveur Web Arduino, les sorties (LED) allumées à l&#39;aide d&#39;un ordinateur seront mises à jour sur l&#39;autre ordinateur &#8211; c&#39;est-à-dire lorsqu&#39;une case à cocher est activée pour allumer une LED à partir d&#39;un ordinateur, la case sera également cochée automatiquement sur l&#39;autre ordinateur.\nLa vidéo suivante montre deux ordinateurs connectés au serveur Web Arduino et lorsque des modifications sont apportées sur la page Web sur un ordinateur, elles sont mises à jour sur l&#39;autre.\nSchéma du circuit d&#39;E / S du serveur Web\nLe schéma de circuit de cette partie du didacticiel est illustré ici:\n\t\nDans la vidéo, A3 était connecté à un diviseur de tension, A4 était connecté via une résistance à GND et A5 était connecté via une résistance à + 5V &#8211; non représenté sur le schéma de circuit.\nPrésentation du fonctionnement du serveur Web\nAprès qu&#39;un navigateur Web a demandé et chargé la page Web à partir du serveur Web Arduino, le JavaScript de la page Web enverra une demande Ajax de données de l&#39;Arduino chaque seconde.\nLa page Web hébergée par le serveur Web Arduino est affichée ici:\n\t\nPage Web hébergée par le serveur Web Arduino\nL&#39;Arduino répondra à chaque demande Ajax en renvoyant un fichier XML au navigateur Web. Le fichier XML contient les valeurs des quatre entrées analogiques de l&#39;Arduino (A2 à A5), l&#39;état de trois broches (commutateurs sur les broches 2, 3 et 5) et l&#39;état des quatre LED.\n\t\nFichier XML envoyé par Arduino\nLorsqu&#39;une LED est allumée à partir de la page Web en cochant une case, le JavaScript enverra l&#39;état de la case à cocher (envoyer une instruction pour allumer la LED) avec la prochaine demande Ajax. La même chose se produira si la LED est éteinte ou si l&#39;un des boutons est utilisé pour allumer ou éteindre une LED.\nCode source\nLe code source de l&#39;esquisse Arduino et de la page Web est un peu gros à inclure sur cette page. Il est suggéré de télécharger ces fichiers ci-dessous et de les ouvrir dans votre éditeur préféré en suivant les explications ci-dessous.\nCroquis et page Web Arduino:\n\tweb_server_IO.zip (4,7 ko)\nExécuter l&#39;exemple\nPour exécuter cet exemple, copiez d&#39;abord la page Web (index.htm) du téléchargement ci-dessus sur une carte micro SD. Insérez la carte micro SD dans la fente pour carte du blindage Ethernet. Le blindage Ethernet doit être branché sur une carte Arduino, connecté à votre réseau et alimenté par USB ou une alimentation externe.\nConstruisez autant de circuits que vous le souhaitez. Si vous ne connectez rien aux broches d&#39;entrée, elles peuvent simplement basculer au hasard pendant qu&#39;elles captent du bruit. Les entrées peuvent toujours être tirées vers le haut ou le bas via une résistance si vous ne souhaitez pas les connecter à des commutateurs ou à un potentiomètre.\nChargez l&#39;esquisse Arduino (eth_websrv_SD_Ajax_in_out) à partir du téléchargement ci-dessus sur l&#39;Arduino.\nNaviguez jusqu&#39;à l&#39;adresse IP définie dans l&#39;esquisse à l&#39;aide d&#39;un navigateur Web &#8211; vous devriez voir la page Web chargée et les valeurs analogiques et les valeurs de commutation mises à jour chaque seconde.\nComment fonctionne l&#39;exemple\nL&#39;esquisse Arduino et la page Web sont essentiellement des versions modifiées du code des exemples précédents de ce tutoriel en plusieurs parties. Les fichiers sont des versions modifiées des exemples qui utilisent Ajax avec XML (partie 14 et partie 15).\nEntrées analogiques et numériques\nLes entrées analogiques (valeurs analogiques) et numériques (états de commutation) sont demandées et reçues de la même manière que celle expliquée dans la partie 14 de ce didacticiel, sauf que les valeurs analogiques sont toutes incluses dans  les balises et les états de commutation sont tous inclus dans  tags &#8211; c&#39;est-à-dire qu&#39;ils n&#39;utilisent pas de noms de tag uniques pour chaque entrée.\nLorsque le JavaScript de la page Web reçoit le fichier XML de l&#39;Arduino, il en utilise un pour boucle pour extraire les valeurs analogiques et une seconde pour boucle pour extraire les états de commutation.\nLe code JavaScript pour extraire les valeurs analogiques du fichier XML est affiché ici:","html":"<p>Créé le: 5 avril 2013\nPartie 16 du didacticiel du serveur Web Arduino Ethernet Shield\nDans cette partie du didacticiel, tout ce qui a été traité jusqu&#039;à présent est réuni. HTML, JavaScript, CSS, HTTP, Ajax et la carte SD sont utilisés pour créer une page Web qui affiche les entrées analogiques et numériques Arduino et permet de contrôler les sorties numériques.\nLe serveur Web Arduino héberge une page Web qui affiche quatre valeurs d&#039;entrée analogique et l&#039;état de trois commutateurs. La page Web permet de contrôler quatre LED &#8211; deux LED sont contrôlées à l&#039;aide de cases à cocher et deux LED sont contrôlées à l&#039;aide de boutons.\nLorsque plusieurs ordinateurs (navigateur Web) sont connectés au serveur Web Arduino, les sorties (LED) allumées à l&#039;aide d&#039;un ordinateur seront mises à jour sur l&#039;autre ordinateur &#8211; c&#039;est-à-dire lorsqu&#039;une case à cocher est activée pour allumer une LED à partir d&#039;un ordinateur, la case sera également cochée automatiquement sur l&#039;autre ordinateur.\nLa vidéo suivante montre deux ordinateurs connectés au serveur Web Arduino et lorsque des modifications sont apportées sur la page Web sur un ordinateur, elles sont mises à jour sur l&#039;autre.\nSchéma du circuit d&#039;E / S du serveur Web\nLe schéma de circuit de cette partie du didacticiel est illustré ici:\n\t\nDans la vidéo, A3 était connecté à un diviseur de tension, A4 était connecté via une résistance à GND et A5 était connecté via une résistance à + 5V &#8211; non représenté sur le schéma de circuit.\nPrésentation du fonctionnement du serveur Web\nAprès qu&#039;un navigateur Web a demandé et chargé la page Web à partir du serveur Web Arduino, le JavaScript de la page Web enverra une demande Ajax de données de l&#039;Arduino chaque seconde.\nLa page Web hébergée par le serveur Web Arduino est affichée ici:\n\t\nPage Web hébergée par le serveur Web Arduino\nL&#039;Arduino répondra à chaque demande Ajax en renvoyant un fichier XML au navigateur Web. Le fichier XML contient les valeurs des quatre entrées analogiques de l&#039;Arduino (A2 à A5), l&#039;état de trois broches (commutateurs sur les broches 2, 3 et 5) et l&#039;état des quatre LED.\n\t\nFichier XML envoyé par Arduino\nLorsqu&#039;une LED est allumée à partir de la page Web en cochant une case, le JavaScript enverra l&#039;état de la case à cocher (envoyer une instruction pour allumer la LED) avec la prochaine demande Ajax. La même chose se produira si la LED est éteinte ou si l&#039;un des boutons est utilisé pour allumer ou éteindre une LED.\nCode source\nLe code source de l&#039;esquisse Arduino et de la page Web est un peu gros à inclure sur cette page. Il est suggéré de télécharger ces fichiers ci-dessous et de les ouvrir dans votre éditeur préféré en suivant les explications ci-dessous.\nCroquis et page Web Arduino:\n\tweb_server_IO.zip (4,7 ko)\nExécuter l&#039;exemple\nPour exécuter cet exemple, copiez d&#039;abord la page Web (index.htm) du téléchargement ci-dessus sur une carte micro SD. Insérez la carte micro SD dans la fente pour carte du blindage Ethernet. Le blindage Ethernet doit être branché sur une carte Arduino, connecté à votre réseau et alimenté par USB ou une alimentation externe.\nConstruisez autant de circuits que vous le souhaitez. Si vous ne connectez rien aux broches d&#039;entrée, elles peuvent simplement basculer au hasard pendant qu&#039;elles captent du bruit. Les entrées peuvent toujours être tirées vers le haut ou le bas via une résistance si vous ne souhaitez pas les connecter à des commutateurs ou à un potentiomètre.\nChargez l&#039;esquisse Arduino (eth_websrv_SD_Ajax_in_out) à partir du téléchargement ci-dessus sur l&#039;Arduino.\nNaviguez jusqu&#039;à l&#039;adresse IP définie dans l&#039;esquisse à l&#039;aide d&#039;un navigateur Web &#8211; vous devriez voir la page Web chargée et les valeurs analogiques et les valeurs de commutation mises à jour chaque seconde.\nComment fonctionne l&#039;exemple\nL&#039;esquisse Arduino et la page Web sont essentiellement des versions modifiées du code des exemples précédents de ce tutoriel en plusieurs parties. Les fichiers sont des versions modifiées des exemples qui utilisent Ajax avec XML (partie 14 et partie 15).\nEntrées analogiques et numériques\nLes entrées analogiques (valeurs analogiques) et numériques (états de commutation) sont demandées et reçues de la même manière que celle expliquée dans la partie 14 de ce didacticiel, sauf que les valeurs analogiques sont toutes incluses dans  les balises et les états de commutation sont tous inclus dans  tags &#8211; c&#039;est-à-dire qu&#039;ils n&#039;utilisent pas de noms de tag uniques pour chaque entrée.\nLorsque le JavaScript de la page Web reçoit le fichier XML de l&#039;Arduino, il en utilise un pour boucle pour extraire les valeurs analogiques et une seconde pour boucle pour extraire les états de commutation.\nLe code JavaScript pour extraire les valeurs analogiques du fichier XML est affiché ici:</p>"},{"id":"text-2","type":"text","heading":"","plain_text":"var num_an = this.responseXML.getElementsByTagName (&#39;analog&#39;). length;\npour (count = 0; count &lt;num_an; count ++) \n    document.getElementsByClassName (&quot;analogique&quot;)[count].innerHTML =\n        this.responseXML.getElementsByTagName (&#39;analogique&#39;)[count].childNodes[0].nodeValue;","html":"<p>var num_an = this.responseXML.getElementsByTagName (&#039;analog&#039;). length;\npour (count = 0; count &lt;num_an; count ++) \n    document.getElementsByClassName (&quot;analogique&quot;)[count].innerHTML =\n        this.responseXML.getElementsByTagName (&#039;analogique&#039;)[count].childNodes[0].nodeValue;</p>"},{"id":"text-3","type":"text","heading":"","plain_text":"La première ligne du code ci-dessus obtient le nombre d&#39;éléments du fichier XML inclus dans  les balise et les stocke dans la variable num_an qui est ensuite utilisé dans le pour boucle pour obtenir le nombre correct de valeurs analogiques.\ndans le pour boucle, le code suivant s&#39;empare de chaque HTML envergure qui a la classe analogique:","html":"<p>La première ligne du code ci-dessus obtient le nombre d&#039;éléments du fichier XML inclus dans  les balise et les stocke dans la variable num_an qui est ensuite utilisé dans le pour boucle pour obtenir le nombre correct de valeurs analogiques.\ndans le pour boucle, le code suivant s&#039;empare de chaque HTML envergure qui a la classe analogique:</p>"},{"id":"text-4","type":"text","heading":"","plain_text":"document.getElementsByClassName (&quot;analogique&quot;)[count].innerHTML","html":"<p>document.getElementsByClassName (&quot;analogique&quot;)[count].innerHTML</p>"},{"id":"text-5","type":"text","heading":"","plain_text":"Qui s&#39;empare de chacun envergure élément dans le code HTML suivant:","html":"<p>Qui s&#039;empare de chacun envergure élément dans le code HTML suivant:</p>"},{"id":"text-6","type":"text","heading":"","plain_text":"A2: ...\nA3: ...\nA4: ...\nA5: ...","html":"<p>A2: ...\nA3: ...\nA4: ...\nA5: ...</p>"},{"id":"text-7","type":"text","heading":"","plain_text":"Cette ligne de code obtient ensuite tour à tour chaque valeur analogique du fichier XML:","html":"<p>Cette ligne de code obtient ensuite tour à tour chaque valeur analogique du fichier XML:</p>"},{"id":"text-8","type":"text","heading":"","plain_text":"this.responseXML.getElementsByTagName (&#39;analogique&#39;)[count].childNodes[0].nodeValue;","html":"<p>this.responseXML.getElementsByTagName (&#039;analogique&#039;)[count].childNodes[0].nodeValue;</p>"},{"id":"text-9","type":"text","heading":"","plain_text":"Ainsi, les deux lignes de code JavaScript ci-dessus travaillant ensemble récupèrent chaque valeur analogique du fichier XML dans l&#39;ordre dans lequel elles apparaissent dans le fichier et insèrent ces valeurs dans chaque envergure dans l&#39;ordre où ils apparaissent dans le HTML.\nLes valeurs de commutateur fonctionnent de la même manière, mais chaque code HTML envergure avec le nom de la classe interrupteurs a une valeur du fichier XML avec la balise commutateur inséré dans l&#39;ordre dans lequel ils apparaissent.\nLEDs\nL&#39;Arduino garde la trace des LED allumées et des LED éteintes. Ces informations sont renvoyées dans le cadre du fichier XML en réponse à la demande Ajax qui se produit toutes les secondes.\nDans l&#39;esquisse Arduino, le tableau suivant stocke les états des LED (stocke 1 pour la LED «  allumée &#39;&#39; et 0 pour la LED «  éteinte &#39;&#39;):","html":"<p>Ainsi, les deux lignes de code JavaScript ci-dessus travaillant ensemble récupèrent chaque valeur analogique du fichier XML dans l&#039;ordre dans lequel elles apparaissent dans le fichier et insèrent ces valeurs dans chaque envergure dans l&#039;ordre où ils apparaissent dans le HTML.\nLes valeurs de commutateur fonctionnent de la même manière, mais chaque code HTML envergure avec le nom de la classe interrupteurs a une valeur du fichier XML avec la balise commutateur inséré dans l&#039;ordre dans lequel ils apparaissent.\nLEDs\nL&#039;Arduino garde la trace des LED allumées et des LED éteintes. Ces informations sont renvoyées dans le cadre du fichier XML en réponse à la demande Ajax qui se produit toutes les secondes.\nDans l&#039;esquisse Arduino, le tableau suivant stocke les états des LED (stocke 1 pour la LED «  allumée &#039;&#039; et 0 pour la LED «  éteinte &#039;&#039;):</p>"},{"id":"text-10","type":"text","heading":"","plain_text":"boolean LED_state[4] = 0; // stocke les états des LED","html":"<p>boolean LED_state[4] = 0; // stocke les états des LED</p>"},{"id":"text-11","type":"text","heading":"","plain_text":"Ce tableau est initialisé avec des zéros &#8211; toutes les LED éteintes. Chaque élément du réseau correspond à une LED dans l&#39;ordre de LED1 à LED4, c&#39;est-à-dire LED_state[0] stocke l&#39;état de la LED 1, LED_state[1] stocke l&#39;état de la LED 2, etc.\nLED utilisant des cases à cocher\nDans le code JavaScript, les lignes de code suivantes montrent comment l&#39;état de la LED 1 est extrait du fichier XML reçu et utilisé pour mettre à jour la case à cocher &#8211; c&#39;est-à-dire pour la marquer comme cochée ou décochée, selon l&#39;état de la LED.","html":"<p>Ce tableau est initialisé avec des zéros &#8211; toutes les LED éteintes. Chaque élément du réseau correspond à une LED dans l&#039;ordre de LED1 à LED4, c&#039;est-à-dire LED_state[0] stocke l&#039;état de la LED 1, LED_state[1] stocke l&#039;état de la LED 2, etc.\nLED utilisant des cases à cocher\nDans le code JavaScript, les lignes de code suivantes montrent comment l&#039;état de la LED 1 est extrait du fichier XML reçu et utilisé pour mettre à jour la case à cocher &#8211; c&#039;est-à-dire pour la marquer comme cochée ou décochée, selon l&#039;état de la LED.</p>"},{"id":"text-12","type":"text","heading":"","plain_text":"// LED 1\nif (this.responseXML.getElementsByTagName (&#39;LED&#39;)[0].childNodes[0].nodeValue\n                                                             === &quot;vérifié&quot;) \n    document.LED_form.LED1.checked = true;","html":"<p>// LED 1\nif (this.responseXML.getElementsByTagName (&#039;LED&#039;)[0].childNodes[0].nodeValue\n                                                             === &quot;vérifié&quot;) \n    document.LED_form.LED1.checked = true;</p>"},{"id":"text-13","type":"text","heading":"","plain_text":"autre \n    document.LED_form.LED1.checked = false;","html":"<p>autre \n    document.LED_form.LED1.checked = false;</p>"},{"id":"text-14","type":"text","heading":"","plain_text":"Dans le code ci-dessus, si la première valeur (c&#39;est-à-dire pour la LED 1) du fichier XML dans un  la balise contient le texte vérifié alors la case correspondante est cochée en utilisant cette ligne de JavaScript:","html":"<p>Dans le code ci-dessus, si la première valeur (c&#039;est-à-dire pour la LED 1) du fichier XML dans un  la balise contient le texte vérifié alors la case correspondante est cochée en utilisant cette ligne de JavaScript:</p>"},{"id":"text-15","type":"text","heading":"","plain_text":"document.LED_form.LED1.checked = true;","html":"<p>document.LED_form.LED1.checked = true;</p>"},{"id":"text-16","type":"text","heading":"","plain_text":"Sinon, la case n&#39;est pas cochée.\nCela garantit que chaque navigateur qui se connecte au serveur Web Arduino affiche les états corrects des LED car ils reçoivent les états des LED chaque seconde.\nLorsqu&#39;un utilisateur coche ou décoche une case à cocher, la prochaine demande Ajax inclura le nom et l&#39;état de la LED avec la prochaine demande HTTP GET.\nLa fonction JavaScript GetCheck () est exécuté chaque fois qu&#39;une case est cochée. Si la case à cocher pour la LED 1 est cochée, la valeur d&#39;une chaîne pour la LED 1 est définie:","html":"<p>Sinon, la case n&#039;est pas cochée.\nCela garantit que chaque navigateur qui se connecte au serveur Web Arduino affiche les états corrects des LED car ils reçoivent les états des LED chaque seconde.\nLorsqu&#039;un utilisateur coche ou décoche une case à cocher, la prochaine demande Ajax inclura le nom et l&#039;état de la LED avec la prochaine demande HTTP GET.\nLa fonction JavaScript GetCheck () est exécuté chaque fois qu&#039;une case est cochée. Si la case à cocher pour la LED 1 est cochée, la valeur d&#039;une chaîne pour la LED 1 est définie:</p>"},{"id":"text-17","type":"text","heading":"","plain_text":"strLED1 = &quot;&amp; LED1 = 1&quot;;","html":"<p>strLED1 = &quot;&amp; LED1 = 1&quot;;</p>"},{"id":"text-18","type":"text","heading":"","plain_text":"Si la case n&#39;est pas cochée, la chaîne est définie comme suit:","html":"<p>Si la case n&#039;est pas cochée, la chaîne est définie comme suit:</p>"},{"id":"text-19","type":"text","heading":"","plain_text":"strLED1 = &quot;&amp; LED1 = 0&quot;;","html":"<p>strLED1 = &quot;&amp; LED1 = 0&quot;;</p>"},{"id":"text-20","type":"text","heading":"","plain_text":"La prochaine fois que GetArduinoIO () la fonction est appelée, qui se produit chaque seconde, la strLED1 la chaîne ne sera plus vide. Cette chaîne sera désormais incluse dans la requête GET:","html":"<p>La prochaine fois que GetArduinoIO () la fonction est appelée, qui se produit chaque seconde, la strLED1 la chaîne ne sera plus vide. Cette chaîne sera désormais incluse dans la requête GET:</p>"},{"id":"text-21","type":"text","heading":"","plain_text":"request.open (&quot;GET&quot;, &quot;ajax_inputs&quot; + strLED1 + strLED2 + strLED3 + strLED4\n                                                                + nocache, vrai);","html":"<p>request.open (&quot;GET&quot;, &quot;ajax_inputs&quot; + strLED1 + strLED2 + strLED3 + strLED4\n                                                                + nocache, vrai);</p>"},{"id":"text-22","type":"text","heading":"","plain_text":"Toutes les autres chaînes de LED seront vides si une case à cocher ou un bouton n&#39;a pas été cliqué, donc ne seront pas inclus avec la demande GET.\nAprès que la demande get se soit produite, toutes les chaînes de LED sont remises à vide:","html":"<p>Toutes les autres chaînes de LED seront vides si une case à cocher ou un bouton n&#039;a pas été cliqué, donc ne seront pas inclus avec la demande GET.\nAprès que la demande get se soit produite, toutes les chaînes de LED sont remises à vide:</p>"},{"id":"text-23","type":"text","heading":"","plain_text":"strLED1 = &quot;&quot;;\nstrLED2 = &quot;&quot;;\nstrLED3 = &quot;&quot;;\nstrLED4 = &quot;&quot;;","html":"<p>strLED1 = &quot;&quot;;\nstrLED2 = &quot;&quot;;\nstrLED3 = &quot;&quot;;\nstrLED4 = &quot;&quot;;</p>"},{"id":"text-24","type":"text","heading":"","plain_text":"Lorsque l&#39;Arduino reçoit la demande Ajax GET, le SetLEDs () La fonction dans l&#39;esquisse Arduino vérifie un changement d&#39;état de la LED dans la demande GET reçue et s&#39;il en trouve une, allumera ou éteindra la LED correspondante, puis enregistrera l&#39;état de la LED dans le LED_state[]    tableau.\nLED utilisant des boutons\nLes boutons qui contrôlent les LED fonctionnent de la même manière que les cases à cocher, sauf que chaque bouton a sa propre fonction JavaScript qui s&#39;exécute lorsqu&#39;un bouton est cliqué.\nLe texte sur les boutons est mis à jour pour montrer l&#39;état des LED qu&#39;ils contrôlent.\nLes boutons n&#39;ont pas de propriété &quot;vérifiée&quot;, donc l&#39;état actuel de la LED de chaque bouton est stocké dans une variable:","html":"<p>Lorsque l&#039;Arduino reçoit la demande Ajax GET, le SetLEDs () La fonction dans l&#039;esquisse Arduino vérifie un changement d&#039;état de la LED dans la demande GET reçue et s&#039;il en trouve une, allumera ou éteindra la LED correspondante, puis enregistrera l&#039;état de la LED dans le LED_state[]    tableau.\nLED utilisant des boutons\nLes boutons qui contrôlent les LED fonctionnent de la même manière que les cases à cocher, sauf que chaque bouton a sa propre fonction JavaScript qui s&#039;exécute lorsqu&#039;un bouton est cliqué.\nLe texte sur les boutons est mis à jour pour montrer l&#039;état des LED qu&#039;ils contrôlent.\nLes boutons n&#039;ont pas de propriété &quot;vérifiée&quot;, donc l&#039;état actuel de la LED de chaque bouton est stocké dans une variable:</p>"},{"id":"text-25","type":"text","heading":"","plain_text":"var LED3_state = 0;\nvar LED4_state = 0;","html":"<p>var LED3_state = 0;\nvar LED4_state = 0;</p>"},{"id":"text-26","type":"text","heading":"","plain_text":"Le stockage de l&#39;état du bouton est nécessaire pour que lorsque vous cliquez à nouveau sur le bouton, il sache s&#39;il faut mettre à jour la chaîne envoyée avec la demande GET pour allumer ou éteindre la LED.\nLorsque l&#39;Arduino envoie l&#39;état des LED dans le fichier XML qui sont contrôlées par les boutons, il insère &quot;on&quot; ou &quot;off&quot; entre les  balises au lieu de &quot;coché&quot; ou &quot;non coché&quot; comme pour les cases à cocher.\nCSS\nLe CSS utilisé dans cet exemple place chaque ensemble d&#39;entrées ou de sorties dans leurs propres cases avec une bordure bleue. Il positionne également les boîtes les unes à côté des autres. Si la fenêtre du navigateur est redimensionnée sur sa largeur, les cases de droite se déplaceront sous les cases de gauche.\nLe CSS dans cette partie du tutoriel ne sera pas expliqué ici, mais sera expliqué dans les prochaines parties de ce tutoriel où nous regardons plus de CSS.","html":"<p>Le stockage de l&#039;état du bouton est nécessaire pour que lorsque vous cliquez à nouveau sur le bouton, il sache s&#039;il faut mettre à jour la chaîne envoyée avec la demande GET pour allumer ou éteindre la LED.\nLorsque l&#039;Arduino envoie l&#039;état des LED dans le fichier XML qui sont contrôlées par les boutons, il insère &quot;on&quot; ou &quot;off&quot; entre les  balises au lieu de &quot;coché&quot; ou &quot;non coché&quot; comme pour les cases à cocher.\nCSS\nLe CSS utilisé dans cet exemple place chaque ensemble d&#039;entrées ou de sorties dans leurs propres cases avec une bordure bleue. Il positionne également les boîtes les unes à côté des autres. Si la fenêtre du navigateur est redimensionnée sur sa largeur, les cases de droite se déplaceront sous les cases de gauche.\nLe CSS dans cette partie du tutoriel ne sera pas expliqué ici, mais sera expliqué dans les prochaines parties de ce tutoriel où nous regardons plus de CSS.</p>"},{"id":"text-27","type":"text","heading":"","plain_text":"Veuillez activer JavaScript pour afficher les commentaires fournis par Disqus.","html":"<p>Veuillez activer JavaScript pour afficher les commentaires fournis par Disqus.</p>"},{"id":"text-28","type":"text","heading":"","plain_text":"Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]","html":"<p>Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]</p>"}],"sections":[{"id":"text-1","heading":"Text","content":"Créé le: 5 avril 2013\nPartie 16 du didacticiel du serveur Web Arduino Ethernet Shield\nDans cette partie du didacticiel, tout ce qui a été traité jusqu&#39;à présent est réuni. HTML, JavaScript, CSS, HTTP, Ajax et la carte SD sont utilisés pour créer une page Web qui affiche les entrées analogiques et numériques Arduino et permet de contrôler les sorties numériques.\nLe serveur Web Arduino héberge une page Web qui affiche quatre valeurs d&#39;entrée analogique et l&#39;état de trois commutateurs. La page Web permet de contrôler quatre LED &#8211; deux LED sont contrôlées à l&#39;aide de cases à cocher et deux LED sont contrôlées à l&#39;aide de boutons.\nLorsque plusieurs ordinateurs (navigateur Web) sont connectés au serveur Web Arduino, les sorties (LED) allumées à l&#39;aide d&#39;un ordinateur seront mises à jour sur l&#39;autre ordinateur &#8211; c&#39;est-à-dire lorsqu&#39;une case à cocher est activée pour allumer une LED à partir d&#39;un ordinateur, la case sera également cochée automatiquement sur l&#39;autre ordinateur.\nLa vidéo suivante montre deux ordinateurs connectés au serveur Web Arduino et lorsque des modifications sont apportées sur la page Web sur un ordinateur, elles sont mises à jour sur l&#39;autre.\nSchéma du circuit d&#39;E / S du serveur Web\nLe schéma de circuit de cette partie du didacticiel est illustré ici:\n\t\nDans la vidéo, A3 était connecté à un diviseur de tension, A4 était connecté via une résistance à GND et A5 était connecté via une résistance à + 5V &#8211; non représenté sur le schéma de circuit.\nPrésentation du fonctionnement du serveur Web\nAprès qu&#39;un navigateur Web a demandé et chargé la page Web à partir du serveur Web Arduino, le JavaScript de la page Web enverra une demande Ajax de données de l&#39;Arduino chaque seconde.\nLa page Web hébergée par le serveur Web Arduino est affichée ici:\n\t\nPage Web hébergée par le serveur Web Arduino\nL&#39;Arduino répondra à chaque demande Ajax en renvoyant un fichier XML au navigateur Web. Le fichier XML contient les valeurs des quatre entrées analogiques de l&#39;Arduino (A2 à A5), l&#39;état de trois broches (commutateurs sur les broches 2, 3 et 5) et l&#39;état des quatre LED.\n\t\nFichier XML envoyé par Arduino\nLorsqu&#39;une LED est allumée à partir de la page Web en cochant une case, le JavaScript enverra l&#39;état de la case à cocher (envoyer une instruction pour allumer la LED) avec la prochaine demande Ajax. La même chose se produira si la LED est éteinte ou si l&#39;un des boutons est utilisé pour allumer ou éteindre une LED.\nCode source\nLe code source de l&#39;esquisse Arduino et de la page Web est un peu gros à inclure sur cette page. Il est suggéré de télécharger ces fichiers ci-dessous et de les ouvrir dans votre éditeur préféré en suivant les explications ci-dessous.\nCroquis et page Web Arduino:\n\tweb_server_IO.zip (4,7 ko)\nExécuter l&#39;exemple\nPour exécuter cet exemple, copiez d&#39;abord la page Web (index.htm) du téléchargement ci-dessus sur une carte micro SD. Insérez la carte micro SD dans la fente pour carte du blindage Ethernet. Le blindage Ethernet doit être branché sur une carte Arduino, connecté à votre réseau et alimenté par USB ou une alimentation externe.\nConstruisez autant de circuits que vous le souhaitez. Si vous ne connectez rien aux broches d&#39;entrée, elles peuvent simplement basculer au hasard pendant qu&#39;elles captent du bruit. Les entrées peuvent toujours être tirées vers le haut ou le bas via une résistance si vous ne souhaitez pas les connecter à des commutateurs ou à un potentiomètre.\nChargez l&#39;esquisse Arduino (eth_websrv_SD_Ajax_in_out) à partir du téléchargement ci-dessus sur l&#39;Arduino.\nNaviguez jusqu&#39;à l&#39;adresse IP définie dans l&#39;esquisse à l&#39;aide d&#39;un navigateur Web &#8211; vous devriez voir la page Web chargée et les valeurs analogiques et les valeurs de commutation mises à jour chaque seconde.\nComment fonctionne l&#39;exemple\nL&#39;esquisse Arduino et la page Web sont essentiellement des versions modifiées du code des exemples précédents de ce tutoriel en plusieurs parties. Les fichiers sont des versions modifiées des exemples qui utilisent Ajax avec XML (partie 14 et partie 15).\nEntrées analogiques et numériques\nLes entrées analogiques (valeurs analogiques) et numériques (états de commutation) sont demandées et reçues de la même manière que celle expliquée dans la partie 14 de ce didacticiel, sauf que les valeurs analogiques sont toutes incluses dans  les balises et les états de commutation sont tous inclus dans  tags &#8211; c&#39;est-à-dire qu&#39;ils n&#39;utilisent pas de noms de tag uniques pour chaque entrée.\nLorsque le JavaScript de la page Web reçoit le fichier XML de l&#39;Arduino, il en utilise un pour boucle pour extraire les valeurs analogiques et une seconde pour boucle pour extraire les états de commutation.\nLe code JavaScript pour extraire les valeurs analogiques du fichier XML est affiché ici:"},{"id":"text-2","heading":"Text","content":"var num_an = this.responseXML.getElementsByTagName (&#39;analog&#39;). length;\npour (count = 0; count &lt;num_an; count ++) \n    document.getElementsByClassName (&quot;analogique&quot;)[count].innerHTML =\n        this.responseXML.getElementsByTagName (&#39;analogique&#39;)[count].childNodes[0].nodeValue;"},{"id":"text-3","heading":"Text","content":"La première ligne du code ci-dessus obtient le nombre d&#39;éléments du fichier XML inclus dans  les balise et les stocke dans la variable num_an qui est ensuite utilisé dans le pour boucle pour obtenir le nombre correct de valeurs analogiques.\ndans le pour boucle, le code suivant s&#39;empare de chaque HTML envergure qui a la classe analogique:"},{"id":"text-4","heading":"Text","content":"document.getElementsByClassName (&quot;analogique&quot;)[count].innerHTML"},{"id":"text-5","heading":"Text","content":"Qui s&#39;empare de chacun envergure élément dans le code HTML suivant:"},{"id":"text-6","heading":"Text","content":"A2: ...\nA3: ...\nA4: ...\nA5: ..."},{"id":"text-7","heading":"Text","content":"Cette ligne de code obtient ensuite tour à tour chaque valeur analogique du fichier XML:"},{"id":"text-8","heading":"Text","content":"this.responseXML.getElementsByTagName (&#39;analogique&#39;)[count].childNodes[0].nodeValue;"},{"id":"text-9","heading":"Text","content":"Ainsi, les deux lignes de code JavaScript ci-dessus travaillant ensemble récupèrent chaque valeur analogique du fichier XML dans l&#39;ordre dans lequel elles apparaissent dans le fichier et insèrent ces valeurs dans chaque envergure dans l&#39;ordre où ils apparaissent dans le HTML.\nLes valeurs de commutateur fonctionnent de la même manière, mais chaque code HTML envergure avec le nom de la classe interrupteurs a une valeur du fichier XML avec la balise commutateur inséré dans l&#39;ordre dans lequel ils apparaissent.\nLEDs\nL&#39;Arduino garde la trace des LED allumées et des LED éteintes. Ces informations sont renvoyées dans le cadre du fichier XML en réponse à la demande Ajax qui se produit toutes les secondes.\nDans l&#39;esquisse Arduino, le tableau suivant stocke les états des LED (stocke 1 pour la LED «  allumée &#39;&#39; et 0 pour la LED «  éteinte &#39;&#39;):"},{"id":"text-10","heading":"Text","content":"boolean LED_state[4] = 0; // stocke les états des LED"},{"id":"text-11","heading":"Text","content":"Ce tableau est initialisé avec des zéros &#8211; toutes les LED éteintes. Chaque élément du réseau correspond à une LED dans l&#39;ordre de LED1 à LED4, c&#39;est-à-dire LED_state[0] stocke l&#39;état de la LED 1, LED_state[1] stocke l&#39;état de la LED 2, etc.\nLED utilisant des cases à cocher\nDans le code JavaScript, les lignes de code suivantes montrent comment l&#39;état de la LED 1 est extrait du fichier XML reçu et utilisé pour mettre à jour la case à cocher &#8211; c&#39;est-à-dire pour la marquer comme cochée ou décochée, selon l&#39;état de la LED."},{"id":"text-12","heading":"Text","content":"// LED 1\nif (this.responseXML.getElementsByTagName (&#39;LED&#39;)[0].childNodes[0].nodeValue\n                                                             === &quot;vérifié&quot;) \n    document.LED_form.LED1.checked = true;"},{"id":"text-13","heading":"Text","content":"autre \n    document.LED_form.LED1.checked = false;"},{"id":"text-14","heading":"Text","content":"Dans le code ci-dessus, si la première valeur (c&#39;est-à-dire pour la LED 1) du fichier XML dans un  la balise contient le texte vérifié alors la case correspondante est cochée en utilisant cette ligne de JavaScript:"},{"id":"text-15","heading":"Text","content":"document.LED_form.LED1.checked = true;"},{"id":"text-16","heading":"Text","content":"Sinon, la case n&#39;est pas cochée.\nCela garantit que chaque navigateur qui se connecte au serveur Web Arduino affiche les états corrects des LED car ils reçoivent les états des LED chaque seconde.\nLorsqu&#39;un utilisateur coche ou décoche une case à cocher, la prochaine demande Ajax inclura le nom et l&#39;état de la LED avec la prochaine demande HTTP GET.\nLa fonction JavaScript GetCheck () est exécuté chaque fois qu&#39;une case est cochée. Si la case à cocher pour la LED 1 est cochée, la valeur d&#39;une chaîne pour la LED 1 est définie:"},{"id":"text-17","heading":"Text","content":"strLED1 = &quot;&amp; LED1 = 1&quot;;"},{"id":"text-18","heading":"Text","content":"Si la case n&#39;est pas cochée, la chaîne est définie comme suit:"},{"id":"text-19","heading":"Text","content":"strLED1 = &quot;&amp; LED1 = 0&quot;;"},{"id":"text-20","heading":"Text","content":"La prochaine fois que GetArduinoIO () la fonction est appelée, qui se produit chaque seconde, la strLED1 la chaîne ne sera plus vide. Cette chaîne sera désormais incluse dans la requête GET:"},{"id":"text-21","heading":"Text","content":"request.open (&quot;GET&quot;, &quot;ajax_inputs&quot; + strLED1 + strLED2 + strLED3 + strLED4\n                                                                + nocache, vrai);"},{"id":"text-22","heading":"Text","content":"Toutes les autres chaînes de LED seront vides si une case à cocher ou un bouton n&#39;a pas été cliqué, donc ne seront pas inclus avec la demande GET.\nAprès que la demande get se soit produite, toutes les chaînes de LED sont remises à vide:"},{"id":"text-23","heading":"Text","content":"strLED1 = &quot;&quot;;\nstrLED2 = &quot;&quot;;\nstrLED3 = &quot;&quot;;\nstrLED4 = &quot;&quot;;"},{"id":"text-24","heading":"Text","content":"Lorsque l&#39;Arduino reçoit la demande Ajax GET, le SetLEDs () La fonction dans l&#39;esquisse Arduino vérifie un changement d&#39;état de la LED dans la demande GET reçue et s&#39;il en trouve une, allumera ou éteindra la LED correspondante, puis enregistrera l&#39;état de la LED dans le LED_state[]    tableau.\nLED utilisant des boutons\nLes boutons qui contrôlent les LED fonctionnent de la même manière que les cases à cocher, sauf que chaque bouton a sa propre fonction JavaScript qui s&#39;exécute lorsqu&#39;un bouton est cliqué.\nLe texte sur les boutons est mis à jour pour montrer l&#39;état des LED qu&#39;ils contrôlent.\nLes boutons n&#39;ont pas de propriété &quot;vérifiée&quot;, donc l&#39;état actuel de la LED de chaque bouton est stocké dans une variable:"},{"id":"text-25","heading":"Text","content":"var LED3_state = 0;\nvar LED4_state = 0;"},{"id":"text-26","heading":"Text","content":"Le stockage de l&#39;état du bouton est nécessaire pour que lorsque vous cliquez à nouveau sur le bouton, il sache s&#39;il faut mettre à jour la chaîne envoyée avec la demande GET pour allumer ou éteindre la LED.\nLorsque l&#39;Arduino envoie l&#39;état des LED dans le fichier XML qui sont contrôlées par les boutons, il insère &quot;on&quot; ou &quot;off&quot; entre les  balises au lieu de &quot;coché&quot; ou &quot;non coché&quot; comme pour les cases à cocher.\nCSS\nLe CSS utilisé dans cet exemple place chaque ensemble d&#39;entrées ou de sorties dans leurs propres cases avec une bordure bleue. Il positionne également les boîtes les unes à côté des autres. Si la fenêtre du navigateur est redimensionnée sur sa largeur, les cases de droite se déplaceront sous les cases de gauche.\nLe CSS dans cette partie du tutoriel ne sera pas expliqué ici, mais sera expliqué dans les prochaines parties de ce tutoriel où nous regardons plus de CSS."},{"id":"text-27","heading":"Text","content":"Veuillez activer JavaScript pour afficher les commentaires fournis par Disqus."},{"id":"text-28","heading":"Text","content":"Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]"}],"media":{"primary_image":""},"relations":[{"rel":"canonical","href":"https://tutos-gameserver.fr/2020/04/20/entree-et-sortie-du-serveur-web-arduino-serveur-dimpression/"},{"rel":"alternate","href":"https://tutos-gameserver.fr/2020/04/20/entree-et-sortie-du-serveur-web-arduino-serveur-dimpression/llm","type":"text/html"},{"rel":"alternate","href":"https://tutos-gameserver.fr/2020/04/20/entree-et-sortie-du-serveur-web-arduino-serveur-dimpression/llm.json","type":"application/json"},{"rel":"llm-manifest","href":"https://tutos-gameserver.fr/llm-endpoints-manifest.json","type":"application/json"}],"http_headers":{"X-LLM-Friendly":"1","X-LLM-Schema":"1.1.0","Content-Security-Policy":"default-src 'none'; img-src * data:; style-src 'unsafe-inline'"},"license":"CC BY-ND 4.0","attribution_required":true,"allow_cors":false}