<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
		<id>http://wiki.lesfabriquesduponant.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mathis</id>
		<title>Les Fabriques du Ponant - Contributions de l’utilisateur [fr]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.lesfabriquesduponant.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mathis"/>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Sp%C3%A9cial:Contributions/Mathis"/>
		<updated>2026-05-14T16:19:55Z</updated>
		<subtitle>Contributions de l’utilisateur</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2020_:_Elevator&amp;diff=12966</id>
		<title>ENIB 2020 : Elevator</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2020_:_Elevator&amp;diff=12966"/>
				<updated>2020-01-17T15:00:24Z</updated>
		
		<summary type="html">&lt;p&gt;Mathis : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Photo de l'équipe==&lt;br /&gt;
[[Fichier:groupeelevator.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
L'Elevator est un dispositif composé d'une nacelle qui monte et descend à la manière d'un ascenseur. Une fois arrivée dans la partie haute de sa course, une temporisation permet de l'immobiliser, puis elle reprend sa course dans l'autre sens et descend. Des leds s'allument en fonction de la position de la plateforme : rouge pour la position haute, orange pour la position intermédiaire et vert pour la position basse. &lt;br /&gt;
&lt;br /&gt;
====Principe de fonctionnement====&lt;br /&gt;
&lt;br /&gt;
Un capteur à ultrasons permet de mesurer la distance qui sépare la nacelle du sol. Elle envoie cette mesure à une carte WEMOS qui commande le servomoteur. En fonction de la distance fournie et convertie en millimètres, la bobine doit s'enrouler, se dérouler ou arrêter de tourner. Une information est envoyée aux leds à chaque changement d'état.&lt;br /&gt;
&lt;br /&gt;
Une application permet de contrôler la mise en route du dispositif via une connection wifi.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 carte WEMOS&lt;br /&gt;
* 1 batterie de 5V&lt;br /&gt;
* 1 capteur à ultrasons (HC-SR04)&lt;br /&gt;
* 3 leds (rouge, orange, vert)&lt;br /&gt;
* 1 servomoteur&lt;br /&gt;
* 1 bobine de fil&lt;br /&gt;
* 2 plaques de câblage&lt;br /&gt;
* Fils de connection&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// on appelle la bibliothèque qui gère le Wemos D1 mini&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt; &lt;br /&gt;
&lt;br /&gt;
// Gestion du Wifi&lt;br /&gt;
#include &amp;lt;ESP8266WebServer.h&amp;gt;&lt;br /&gt;
#include &amp;lt;DNSServer.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ESP8266mDNS.h&amp;gt;&lt;br /&gt;
#include &amp;lt;WiFiClient.h&amp;gt; &lt;br /&gt;
/* Constantes pour les broches */&lt;br /&gt;
const byte TRIGGER_PIN = D2; // Broche TRIGGER&lt;br /&gt;
const byte ECHO_PIN = D3;    // Broche ECHO&lt;br /&gt;
 &lt;br /&gt;
/* Constantes pour le timeout */&lt;br /&gt;
const unsigned long MEASURE_TIMEOUT = 25000UL; // 25ms = ~8m à 340m/s&lt;br /&gt;
&lt;br /&gt;
/* Vitesse du son dans l'air en mm/us */&lt;br /&gt;
const float SOUND_SPEED = 340.0 / 1000;&lt;br /&gt;
int ledV_PIN = D4;&lt;br /&gt;
int ledR_PIN = D5;&lt;br /&gt;
int ledO_PIN = D6;&lt;br /&gt;
&lt;br /&gt;
//  Definition du WiFi &lt;br /&gt;
const char *nomDuReseau = &amp;quot;Mongolfiere&amp;quot;;     // Nom du réseau wifi du petit bot&lt;br /&gt;
const char *motDePasse = &amp;quot;&amp;quot;;    // Mot de passe du réseau wifi du petit bot&lt;br /&gt;
// ATTENTION - le mot de passe doit faire soit 0 caractères soit 8 ou plus sinon&lt;br /&gt;
// La configuration de votre réseau wifi ne se fera pas (ni mot de passe, ni nom de réseau !).&lt;br /&gt;
//création du monServeur&lt;br /&gt;
ESP8266WebServer monServeur(80);               // Création de l'objet monServeur&lt;br /&gt;
&lt;br /&gt;
//Gestion des servomoteurs&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;   //appel de la bibliothèque qui gère les servomoteurs&lt;br /&gt;
// création des servomoteurs &lt;br /&gt;
Servo servogauche;   // Nom du servo qui gère la première roue&lt;br /&gt;
Servo servodroit;    // Seconde roue&lt;br /&gt;
&lt;br /&gt;
//déclaration des Variables&lt;br /&gt;
//int --- en cours &lt;br /&gt;
int val = -1; // Val nous sert à stocker la commande de l'utilisateur (stop, avance, ...).&lt;br /&gt;
&lt;br /&gt;
void setup(){&lt;br /&gt;
   /* Initialise le port série */&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
   &lt;br /&gt;
  /* Initialise les broches */&lt;br /&gt;
  pinMode(TRIGGER_PIN, OUTPUT);&lt;br /&gt;
  digitalWrite(TRIGGER_PIN, LOW); // La broche TRIGGER doit être à LOW au repos&lt;br /&gt;
  pinMode(ECHO_PIN, INPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(ledR_PIN, OUTPUT); // led rouge&lt;br /&gt;
  pinMode(ledV_PIN, OUTPUT); // led vert&lt;br /&gt;
  pinMode(ledO_PIN, OUTPUT); // led Orange&lt;br /&gt;
  delay(1000);&lt;br /&gt;
 // Serial.begin(9600); // Ouvre une connexion série pour monitorer le fonctionnement du code quand on reste branché à l'ordinateur&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  Serial.println();  &lt;br /&gt;
  configDuWifi();&lt;br /&gt;
  servodroit.detach();  // Place les servos hors tension&lt;br /&gt;
  servogauche.detach(); &lt;br /&gt;
  pinMode(LED_BUILTIN, OUTPUT);    //met la led du Wemos en sortie&lt;br /&gt;
  digitalWrite(LED_BUILTIN, LOW);  //met la led du Wemos sur le niveau bas ce qui l'allume.&lt;br /&gt;
  pinMode(15, OUTPUT); //met D8 comme une sortie &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop(){&lt;br /&gt;
  ///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
   /* 1. Lance une mesure de distance en envoyant une impulsion HIGH de 10µs sur la broche TRIGGER */&lt;br /&gt;
  digitalWrite(TRIGGER_PIN, HIGH);&lt;br /&gt;
  delayMicroseconds(10);&lt;br /&gt;
  digitalWrite(TRIGGER_PIN, LOW);&lt;br /&gt;
  &lt;br /&gt;
  /* 2. Mesure le temps entre l'envoi de l'impulsion ultrasonique et son écho (si il existe) */&lt;br /&gt;
  long measure = pulseIn(ECHO_PIN, HIGH, MEASURE_TIMEOUT);&lt;br /&gt;
   &lt;br /&gt;
  /* 3. Calcul la distance à partir du temps mesuré */&lt;br /&gt;
  float distance_mm = measure / 2.0 * SOUND_SPEED;&lt;br /&gt;
   &lt;br /&gt;
  /* Affiche les résultats en mm, cm et m */&lt;br /&gt;
  Serial.print(F(&amp;quot;Distance: &amp;quot;));&lt;br /&gt;
  Serial.print(distance_mm);&lt;br /&gt;
  Serial.print(F(&amp;quot;mm (&amp;quot;));&lt;br /&gt;
  Serial.print(distance_mm / 10.0, 2);&lt;br /&gt;
  Serial.print(F(&amp;quot;cm, &amp;quot;));&lt;br /&gt;
  Serial.print(distance_mm / 1000.0, 2);&lt;br /&gt;
  Serial.println(F(&amp;quot;m)&amp;quot;));&lt;br /&gt;
   &lt;br /&gt;
  /* Délai d'attente pour éviter d'afficher trop de résultats à la seconde */&lt;br /&gt;
  delay(100);&lt;br /&gt;
   if (distance_mm &amp;gt;= 90 &amp;amp;&amp;amp; distance_mm &amp;lt;= 400  ) {digitalWrite(ledO_PIN, HIGH);}&lt;br /&gt;
   else {digitalWrite(ledO_PIN, LOW);}&lt;br /&gt;
&lt;br /&gt;
   if (distance_mm &amp;lt;= 90) &lt;br /&gt;
   {&lt;br /&gt;
    digitalWrite(val==2 &amp;amp;&amp;amp; ledV_PIN, HIGH);&lt;br /&gt;
    servodroit.write(90);&lt;br /&gt;
    }&lt;br /&gt;
   else {digitalWrite(ledV_PIN, LOW);}&lt;br /&gt;
    &lt;br /&gt;
   if (val==1 &amp;amp;&amp;amp; distance_mm &amp;gt;= 400 ) {&lt;br /&gt;
      digitalWrite(ledR_PIN, HIGH);&lt;br /&gt;
      servodroit.write(90);&lt;br /&gt;
   }&lt;br /&gt;
   else {digitalWrite(ledR_PIN, LOW);}&lt;br /&gt;
  &lt;br /&gt;
  /////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
    val = -1;&lt;br /&gt;
    monServeur.handleClient();&lt;br /&gt;
    //Clignotement de la LED sur D8&lt;br /&gt;
    digitalWrite(15, HIGH);   // turn the LED on (HIGH is the voltage level)&lt;br /&gt;
         delay(1000);                  // wait for a second&lt;br /&gt;
    digitalWrite(15, LOW);    // turn the LED off by making the voltage LOW&lt;br /&gt;
                        // wait for a second&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
///////////////////////GESTION DES INSTRUCTIONS///////////////////////////&lt;br /&gt;
void GestionDesClics() {&lt;br /&gt;
  monServeur.on(&amp;quot;/avance&amp;quot;, HTTP_GET, []() {&lt;br /&gt;
  val = 1;&lt;br /&gt;
  Serial.println(&amp;quot;avance&amp;quot;);    &lt;br /&gt;
  redactionPageWeb();&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  monServeur.on(&amp;quot;/recule&amp;quot;, HTTP_GET, []() {&lt;br /&gt;
  val = 2;&lt;br /&gt;
  Serial.println(&amp;quot;recule&amp;quot;);&lt;br /&gt;
  redactionPageWeb();&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  monServeur.on(&amp;quot;/droite&amp;quot;, HTTP_GET, []() {&lt;br /&gt;
  val = 4;&lt;br /&gt;
  Serial.println(&amp;quot;droite&amp;quot;);&lt;br /&gt;
  redactionPageWeb();&lt;br /&gt;
  });&lt;br /&gt;
  &lt;br /&gt;
  monServeur.on(&amp;quot;/gauche&amp;quot;, HTTP_GET, []() {&lt;br /&gt;
  val = 3;&lt;br /&gt;
  Serial.println(&amp;quot;gauche&amp;quot;);&lt;br /&gt;
  redactionPageWeb();&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  monServeur.on(&amp;quot;/stop&amp;quot;, HTTP_GET, []() {&lt;br /&gt;
  val = 0;&lt;br /&gt;
  Serial.println(&amp;quot;stop&amp;quot;);&lt;br /&gt;
  redactionPageWeb();&lt;br /&gt;
  });&lt;br /&gt;
  &lt;br /&gt;
  monServeur.on(&amp;quot;/&amp;quot;, HTTP_GET, []() {&lt;br /&gt;
  val = -1;&lt;br /&gt;
  redactionPageWeb();&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
///////////////////////////LA PAGE WEB DE CONROLE DU PETIT BOT/////////////////////////////////////////&lt;br /&gt;
void redactionPageWeb(){&lt;br /&gt;
  // Prépare la page web de réponse (le code HTML sera écrit dans la chaine de caractère &amp;quot;pageWeb&amp;quot;).&lt;br /&gt;
  String pageWeb = &amp;quot;&amp;lt;!DOCTYPE HTML&amp;gt;\r\n&amp;quot;;&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;html&amp;gt;\r\n&amp;quot;;&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;center&amp;gt;&amp;quot;;    //On ouvre la balise qui va centrer les boutons&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;h1 style=\&amp;quot;font-size:300%;\&amp;quot;\&amp;gt; Le petit bot &amp;quot;;&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;style type=\&amp;quot;text/css\&amp;quot;&amp;gt;  body { color: #101820; background-color: #45B5AA } &amp;lt;/style&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  // On finalise l'écriture de la page Web et on donne les instructions aux servos&lt;br /&gt;
  pageWeb += instruction(val); // pour cela on appelle la fonction &amp;quot;instruction&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  // On termine l'écriture de la page Web&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;/h1&amp;gt;&amp;quot;;&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;br&amp;gt;&amp;quot;; //aller à la ligne&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;br&amp;gt;&amp;quot;; //aller à la ligne&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;a href=\&amp;quot;/stop\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 18%; background-color:#FFE800; border-radius: 12px\&amp;quot;\&amp;gt;Stop &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;\r\n&amp;quot;;      // créer un bouton &amp;quot;Stop&amp;quot;, qui envoie sur l'URL /stop&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;a href=\&amp;quot;/avance\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 18%; background-color:#FFE800; border-radius: 12px\&amp;quot;\&amp;gt;Avance &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;\r\n&amp;quot;;  // créer un bouton &amp;quot;Avance&amp;quot;...&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;a href=\&amp;quot;/recule\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 18%; background-color:#FFE800; border-radius: 12px\&amp;quot;\&amp;gt;Recule &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;\r\n&amp;quot;;&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;a href=\&amp;quot;/droite\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 18%; background-color:#FFE800; border-radius: 12px\&amp;quot;\&amp;gt;Droite &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;\r\n&amp;quot;;&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;a href=\&amp;quot;/gauche\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 18%; background-color:#FFE800; border-radius: 12px\&amp;quot;\&amp;gt;Gauche &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;\r\n&amp;quot;;&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;/center&amp;gt;&amp;quot;; // tout est centré sur la page&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;/html&amp;gt;\n&amp;quot;; //Fin de la page Web&lt;br /&gt;
&lt;br /&gt;
  // On envoie la page web&lt;br /&gt;
  monServeur.send(200, &amp;quot;text/html&amp;quot;, pageWeb);&lt;br /&gt;
  delay(1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
///////////////////INSTRUCTIONS/////////////////////////////////////////////////////////&lt;br /&gt;
String instruction(int valeur){ //Cette fonction traite les instructions qui sont reçues&lt;br /&gt;
  int gauche;                           // Variable dont la valeur 180 ou 0 fera tourner le servo gauche dans un sens ou l'autre&lt;br /&gt;
  int droite;                           // Idem pour le servo droit&lt;br /&gt;
  String completePage;                  // Déclaration de la chaine de caractère qui sera renvoyée par cette fonction pour compléter la page web &lt;br /&gt;
  switch(valeur){                       // En fonction de la variable valeur on va donner un ordre aux servos &lt;br /&gt;
    case 0 :                            // et un texte à la chaine de caractère &amp;quot;completePage&amp;quot;&lt;br /&gt;
    completePage = &amp;quot; est à l'arrêt &amp;quot;;&lt;br /&gt;
    droite = 90;&lt;br /&gt;
    gauche = 90;&lt;br /&gt;
    break;&lt;br /&gt;
    case 1 :&lt;br /&gt;
    completePage = &amp;quot; avance &amp;quot;;&lt;br /&gt;
    droite = 180;&lt;br /&gt;
    gauche =  0;&lt;br /&gt;
    break;&lt;br /&gt;
    case 2 :&lt;br /&gt;
    completePage = &amp;quot; recule &amp;quot;;&lt;br /&gt;
    droite = 0;&lt;br /&gt;
    gauche =  180;&lt;br /&gt;
    break;&lt;br /&gt;
    case 3 :&lt;br /&gt;
    completePage = &amp;quot; tourne à gauche &amp;quot;;&lt;br /&gt;
    droite = 180;&lt;br /&gt;
    gauche =  90;&lt;br /&gt;
    break;&lt;br /&gt;
    case 4 :&lt;br /&gt;
    completePage = &amp;quot; tourne à droite &amp;quot;;&lt;br /&gt;
    droite = 90;&lt;br /&gt;
    gauche = 0;&lt;br /&gt;
    break;&lt;br /&gt;
    // que faire du cas ou val = -1 ? marquer ici ce qui doit être fait.&lt;br /&gt;
  }&lt;br /&gt;
  servogauche.attach(D7);     // Broche D2&lt;br /&gt;
  servodroit.attach(D8);      // Broche D1&lt;br /&gt;
  servogauche.write(gauche); &lt;br /&gt;
  servodroit.write(droite);&lt;br /&gt;
  return completePage;        // on renvoie la chaine de caractère pour compléter la page web&lt;br /&gt;
}&lt;br /&gt;
////////////////////////CONFIGURATION WIFI///////////////////////////////////////////////&lt;br /&gt;
void configDuWifi(){  // Fonction de configuratio du Wifi&lt;br /&gt;
  WiFi.mode(WIFI_AP); // le wemos est en mode &amp;quot;Point d'Accès&amp;quot; (il déploie un réseau wifi)&lt;br /&gt;
  WiFi.softAP(nomDuReseau, motDePasse, 2); // on démarre le &amp;quot;Point d'Accès&amp;quot;.&lt;br /&gt;
  MDNS.begin(nomDuReseau);                 // gérer les DNS ce qui rendra votre petit bot accessible&lt;br /&gt;
  MDNS.addService(&amp;quot;http&amp;quot;, &amp;quot;tcp&amp;quot;, 80);      // via http://nomDuReseau.local&lt;br /&gt;
  IPAddress monIP = WiFi.softAPIP();       // on récupère l'adresse IP du petit Bot&lt;br /&gt;
  Serial.print(&amp;quot;Adresse IP de ce Point d'Accès : &amp;quot;);&lt;br /&gt;
  Serial.println(monIP);                   // on l'écrit sur le moniteur série&lt;br /&gt;
  GestionDesClics();&lt;br /&gt;
  monServeur.begin();                          //Démarrage du monServeur&lt;br /&gt;
  Serial.println(&amp;quot;Serveur HTTP démarré&amp;quot;);&lt;br /&gt;
  instruction(val);&lt;br /&gt;
  return;                                  // on retourne à l'endroit ou la fonction a été appelée.&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Catégories==&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2020]]&lt;/div&gt;</summary>
		<author><name>Mathis</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:Groupeelevator.jpg&amp;diff=12965</id>
		<title>Fichier:Groupeelevator.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:Groupeelevator.jpg&amp;diff=12965"/>
				<updated>2020-01-17T14:59:36Z</updated>
		
		<summary type="html">&lt;p&gt;Mathis : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mathis</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2020_:_Elevator&amp;diff=12964</id>
		<title>ENIB 2020 : Elevator</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2020_:_Elevator&amp;diff=12964"/>
				<updated>2020-01-17T14:58:07Z</updated>
		
		<summary type="html">&lt;p&gt;Mathis : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Photo de l'équipe==&lt;br /&gt;
[[Fichier:Groupe_elevator.jpeg|600px]]&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
L'Elevator est un dispositif composé d'une nacelle qui monte et descend à la manière d'un ascenseur. Une fois arrivée dans la partie haute de sa course, une temporisation permet de l'immobiliser, puis elle reprend sa course dans l'autre sens et descend. Des leds s'allument en fonction de la position de la plateforme : rouge pour la position haute, orange pour la position intermédiaire et vert pour la position basse. &lt;br /&gt;
&lt;br /&gt;
====Principe de fonctionnement====&lt;br /&gt;
&lt;br /&gt;
Un capteur à ultrasons permet de mesurer la distance qui sépare la nacelle du sol. Elle envoie cette mesure à une carte WEMOS qui commande le servomoteur. En fonction de la distance fournie et convertie en millimètres, la bobine doit s'enrouler, se dérouler ou arrêter de tourner. Une information est envoyée aux leds à chaque changement d'état.&lt;br /&gt;
&lt;br /&gt;
Une application permet de contrôler la mise en route du dispositif via une connection wifi.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 carte WEMOS&lt;br /&gt;
* 1 batterie de 5V&lt;br /&gt;
* 1 capteur à ultrasons (HC-SR04)&lt;br /&gt;
* 3 leds (rouge, orange, vert)&lt;br /&gt;
* 1 servomoteur&lt;br /&gt;
* 1 bobine de fil&lt;br /&gt;
* 2 plaques de câblage&lt;br /&gt;
* Fils de connection&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// on appelle la bibliothèque qui gère le Wemos D1 mini&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt; &lt;br /&gt;
&lt;br /&gt;
// Gestion du Wifi&lt;br /&gt;
#include &amp;lt;ESP8266WebServer.h&amp;gt;&lt;br /&gt;
#include &amp;lt;DNSServer.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ESP8266mDNS.h&amp;gt;&lt;br /&gt;
#include &amp;lt;WiFiClient.h&amp;gt; &lt;br /&gt;
/* Constantes pour les broches */&lt;br /&gt;
const byte TRIGGER_PIN = D2; // Broche TRIGGER&lt;br /&gt;
const byte ECHO_PIN = D3;    // Broche ECHO&lt;br /&gt;
 &lt;br /&gt;
/* Constantes pour le timeout */&lt;br /&gt;
const unsigned long MEASURE_TIMEOUT = 25000UL; // 25ms = ~8m à 340m/s&lt;br /&gt;
&lt;br /&gt;
/* Vitesse du son dans l'air en mm/us */&lt;br /&gt;
const float SOUND_SPEED = 340.0 / 1000;&lt;br /&gt;
int ledV_PIN = D4;&lt;br /&gt;
int ledR_PIN = D5;&lt;br /&gt;
int ledO_PIN = D6;&lt;br /&gt;
&lt;br /&gt;
//  Definition du WiFi &lt;br /&gt;
const char *nomDuReseau = &amp;quot;Mongolfiere&amp;quot;;     // Nom du réseau wifi du petit bot&lt;br /&gt;
const char *motDePasse = &amp;quot;&amp;quot;;    // Mot de passe du réseau wifi du petit bot&lt;br /&gt;
// ATTENTION - le mot de passe doit faire soit 0 caractères soit 8 ou plus sinon&lt;br /&gt;
// La configuration de votre réseau wifi ne se fera pas (ni mot de passe, ni nom de réseau !).&lt;br /&gt;
//création du monServeur&lt;br /&gt;
ESP8266WebServer monServeur(80);               // Création de l'objet monServeur&lt;br /&gt;
&lt;br /&gt;
//Gestion des servomoteurs&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;   //appel de la bibliothèque qui gère les servomoteurs&lt;br /&gt;
// création des servomoteurs &lt;br /&gt;
Servo servogauche;   // Nom du servo qui gère la première roue&lt;br /&gt;
Servo servodroit;    // Seconde roue&lt;br /&gt;
&lt;br /&gt;
//déclaration des Variables&lt;br /&gt;
//int --- en cours &lt;br /&gt;
int val = -1; // Val nous sert à stocker la commande de l'utilisateur (stop, avance, ...).&lt;br /&gt;
&lt;br /&gt;
void setup(){&lt;br /&gt;
   /* Initialise le port série */&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
   &lt;br /&gt;
  /* Initialise les broches */&lt;br /&gt;
  pinMode(TRIGGER_PIN, OUTPUT);&lt;br /&gt;
  digitalWrite(TRIGGER_PIN, LOW); // La broche TRIGGER doit être à LOW au repos&lt;br /&gt;
  pinMode(ECHO_PIN, INPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(ledR_PIN, OUTPUT); // led rouge&lt;br /&gt;
  pinMode(ledV_PIN, OUTPUT); // led vert&lt;br /&gt;
  pinMode(ledO_PIN, OUTPUT); // led Orange&lt;br /&gt;
  delay(1000);&lt;br /&gt;
 // Serial.begin(9600); // Ouvre une connexion série pour monitorer le fonctionnement du code quand on reste branché à l'ordinateur&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  Serial.println();  &lt;br /&gt;
  configDuWifi();&lt;br /&gt;
  servodroit.detach();  // Place les servos hors tension&lt;br /&gt;
  servogauche.detach(); &lt;br /&gt;
  pinMode(LED_BUILTIN, OUTPUT);    //met la led du Wemos en sortie&lt;br /&gt;
  digitalWrite(LED_BUILTIN, LOW);  //met la led du Wemos sur le niveau bas ce qui l'allume.&lt;br /&gt;
  pinMode(15, OUTPUT); //met D8 comme une sortie &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop(){&lt;br /&gt;
  ///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
   /* 1. Lance une mesure de distance en envoyant une impulsion HIGH de 10µs sur la broche TRIGGER */&lt;br /&gt;
  digitalWrite(TRIGGER_PIN, HIGH);&lt;br /&gt;
  delayMicroseconds(10);&lt;br /&gt;
  digitalWrite(TRIGGER_PIN, LOW);&lt;br /&gt;
  &lt;br /&gt;
  /* 2. Mesure le temps entre l'envoi de l'impulsion ultrasonique et son écho (si il existe) */&lt;br /&gt;
  long measure = pulseIn(ECHO_PIN, HIGH, MEASURE_TIMEOUT);&lt;br /&gt;
   &lt;br /&gt;
  /* 3. Calcul la distance à partir du temps mesuré */&lt;br /&gt;
  float distance_mm = measure / 2.0 * SOUND_SPEED;&lt;br /&gt;
   &lt;br /&gt;
  /* Affiche les résultats en mm, cm et m */&lt;br /&gt;
  Serial.print(F(&amp;quot;Distance: &amp;quot;));&lt;br /&gt;
  Serial.print(distance_mm);&lt;br /&gt;
  Serial.print(F(&amp;quot;mm (&amp;quot;));&lt;br /&gt;
  Serial.print(distance_mm / 10.0, 2);&lt;br /&gt;
  Serial.print(F(&amp;quot;cm, &amp;quot;));&lt;br /&gt;
  Serial.print(distance_mm / 1000.0, 2);&lt;br /&gt;
  Serial.println(F(&amp;quot;m)&amp;quot;));&lt;br /&gt;
   &lt;br /&gt;
  /* Délai d'attente pour éviter d'afficher trop de résultats à la seconde */&lt;br /&gt;
  delay(100);&lt;br /&gt;
   if (distance_mm &amp;gt;= 90 &amp;amp;&amp;amp; distance_mm &amp;lt;= 400  ) {digitalWrite(ledO_PIN, HIGH);}&lt;br /&gt;
   else {digitalWrite(ledO_PIN, LOW);}&lt;br /&gt;
&lt;br /&gt;
   if (distance_mm &amp;lt;= 90) &lt;br /&gt;
   {&lt;br /&gt;
    digitalWrite(val==2 &amp;amp;&amp;amp; ledV_PIN, HIGH);&lt;br /&gt;
    servodroit.write(90);&lt;br /&gt;
    }&lt;br /&gt;
   else {digitalWrite(ledV_PIN, LOW);}&lt;br /&gt;
    &lt;br /&gt;
   if (val==1 &amp;amp;&amp;amp; distance_mm &amp;gt;= 400 ) {&lt;br /&gt;
      digitalWrite(ledR_PIN, HIGH);&lt;br /&gt;
      servodroit.write(90);&lt;br /&gt;
   }&lt;br /&gt;
   else {digitalWrite(ledR_PIN, LOW);}&lt;br /&gt;
  &lt;br /&gt;
  /////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
    val = -1;&lt;br /&gt;
    monServeur.handleClient();&lt;br /&gt;
    //Clignotement de la LED sur D8&lt;br /&gt;
    digitalWrite(15, HIGH);   // turn the LED on (HIGH is the voltage level)&lt;br /&gt;
         delay(1000);                  // wait for a second&lt;br /&gt;
    digitalWrite(15, LOW);    // turn the LED off by making the voltage LOW&lt;br /&gt;
                        // wait for a second&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
///////////////////////GESTION DES INSTRUCTIONS///////////////////////////&lt;br /&gt;
void GestionDesClics() {&lt;br /&gt;
  monServeur.on(&amp;quot;/avance&amp;quot;, HTTP_GET, []() {&lt;br /&gt;
  val = 1;&lt;br /&gt;
  Serial.println(&amp;quot;avance&amp;quot;);    &lt;br /&gt;
  redactionPageWeb();&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  monServeur.on(&amp;quot;/recule&amp;quot;, HTTP_GET, []() {&lt;br /&gt;
  val = 2;&lt;br /&gt;
  Serial.println(&amp;quot;recule&amp;quot;);&lt;br /&gt;
  redactionPageWeb();&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  monServeur.on(&amp;quot;/droite&amp;quot;, HTTP_GET, []() {&lt;br /&gt;
  val = 4;&lt;br /&gt;
  Serial.println(&amp;quot;droite&amp;quot;);&lt;br /&gt;
  redactionPageWeb();&lt;br /&gt;
  });&lt;br /&gt;
  &lt;br /&gt;
  monServeur.on(&amp;quot;/gauche&amp;quot;, HTTP_GET, []() {&lt;br /&gt;
  val = 3;&lt;br /&gt;
  Serial.println(&amp;quot;gauche&amp;quot;);&lt;br /&gt;
  redactionPageWeb();&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  monServeur.on(&amp;quot;/stop&amp;quot;, HTTP_GET, []() {&lt;br /&gt;
  val = 0;&lt;br /&gt;
  Serial.println(&amp;quot;stop&amp;quot;);&lt;br /&gt;
  redactionPageWeb();&lt;br /&gt;
  });&lt;br /&gt;
  &lt;br /&gt;
  monServeur.on(&amp;quot;/&amp;quot;, HTTP_GET, []() {&lt;br /&gt;
  val = -1;&lt;br /&gt;
  redactionPageWeb();&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
///////////////////////////LA PAGE WEB DE CONROLE DU PETIT BOT/////////////////////////////////////////&lt;br /&gt;
void redactionPageWeb(){&lt;br /&gt;
  // Prépare la page web de réponse (le code HTML sera écrit dans la chaine de caractère &amp;quot;pageWeb&amp;quot;).&lt;br /&gt;
  String pageWeb = &amp;quot;&amp;lt;!DOCTYPE HTML&amp;gt;\r\n&amp;quot;;&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;html&amp;gt;\r\n&amp;quot;;&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;center&amp;gt;&amp;quot;;    //On ouvre la balise qui va centrer les boutons&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;h1 style=\&amp;quot;font-size:300%;\&amp;quot;\&amp;gt; Le petit bot &amp;quot;;&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;style type=\&amp;quot;text/css\&amp;quot;&amp;gt;  body { color: #101820; background-color: #45B5AA } &amp;lt;/style&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  // On finalise l'écriture de la page Web et on donne les instructions aux servos&lt;br /&gt;
  pageWeb += instruction(val); // pour cela on appelle la fonction &amp;quot;instruction&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  // On termine l'écriture de la page Web&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;/h1&amp;gt;&amp;quot;;&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;br&amp;gt;&amp;quot;; //aller à la ligne&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;br&amp;gt;&amp;quot;; //aller à la ligne&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;a href=\&amp;quot;/stop\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 18%; background-color:#FFE800; border-radius: 12px\&amp;quot;\&amp;gt;Stop &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;\r\n&amp;quot;;      // créer un bouton &amp;quot;Stop&amp;quot;, qui envoie sur l'URL /stop&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;a href=\&amp;quot;/avance\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 18%; background-color:#FFE800; border-radius: 12px\&amp;quot;\&amp;gt;Avance &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;\r\n&amp;quot;;  // créer un bouton &amp;quot;Avance&amp;quot;...&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;a href=\&amp;quot;/recule\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 18%; background-color:#FFE800; border-radius: 12px\&amp;quot;\&amp;gt;Recule &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;\r\n&amp;quot;;&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;a href=\&amp;quot;/droite\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 18%; background-color:#FFE800; border-radius: 12px\&amp;quot;\&amp;gt;Droite &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;\r\n&amp;quot;;&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;a href=\&amp;quot;/gauche\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 18%; background-color:#FFE800; border-radius: 12px\&amp;quot;\&amp;gt;Gauche &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;\r\n&amp;quot;;&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;/center&amp;gt;&amp;quot;; // tout est centré sur la page&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;/html&amp;gt;\n&amp;quot;; //Fin de la page Web&lt;br /&gt;
&lt;br /&gt;
  // On envoie la page web&lt;br /&gt;
  monServeur.send(200, &amp;quot;text/html&amp;quot;, pageWeb);&lt;br /&gt;
  delay(1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
///////////////////INSTRUCTIONS/////////////////////////////////////////////////////////&lt;br /&gt;
String instruction(int valeur){ //Cette fonction traite les instructions qui sont reçues&lt;br /&gt;
  int gauche;                           // Variable dont la valeur 180 ou 0 fera tourner le servo gauche dans un sens ou l'autre&lt;br /&gt;
  int droite;                           // Idem pour le servo droit&lt;br /&gt;
  String completePage;                  // Déclaration de la chaine de caractère qui sera renvoyée par cette fonction pour compléter la page web &lt;br /&gt;
  switch(valeur){                       // En fonction de la variable valeur on va donner un ordre aux servos &lt;br /&gt;
    case 0 :                            // et un texte à la chaine de caractère &amp;quot;completePage&amp;quot;&lt;br /&gt;
    completePage = &amp;quot; est à l'arrêt &amp;quot;;&lt;br /&gt;
    droite = 90;&lt;br /&gt;
    gauche = 90;&lt;br /&gt;
    break;&lt;br /&gt;
    case 1 :&lt;br /&gt;
    completePage = &amp;quot; avance &amp;quot;;&lt;br /&gt;
    droite = 180;&lt;br /&gt;
    gauche =  0;&lt;br /&gt;
    break;&lt;br /&gt;
    case 2 :&lt;br /&gt;
    completePage = &amp;quot; recule &amp;quot;;&lt;br /&gt;
    droite = 0;&lt;br /&gt;
    gauche =  180;&lt;br /&gt;
    break;&lt;br /&gt;
    case 3 :&lt;br /&gt;
    completePage = &amp;quot; tourne à gauche &amp;quot;;&lt;br /&gt;
    droite = 180;&lt;br /&gt;
    gauche =  90;&lt;br /&gt;
    break;&lt;br /&gt;
    case 4 :&lt;br /&gt;
    completePage = &amp;quot; tourne à droite &amp;quot;;&lt;br /&gt;
    droite = 90;&lt;br /&gt;
    gauche = 0;&lt;br /&gt;
    break;&lt;br /&gt;
    // que faire du cas ou val = -1 ? marquer ici ce qui doit être fait.&lt;br /&gt;
  }&lt;br /&gt;
  servogauche.attach(D7);     // Broche D2&lt;br /&gt;
  servodroit.attach(D8);      // Broche D1&lt;br /&gt;
  servogauche.write(gauche); &lt;br /&gt;
  servodroit.write(droite);&lt;br /&gt;
  return completePage;        // on renvoie la chaine de caractère pour compléter la page web&lt;br /&gt;
}&lt;br /&gt;
////////////////////////CONFIGURATION WIFI///////////////////////////////////////////////&lt;br /&gt;
void configDuWifi(){  // Fonction de configuratio du Wifi&lt;br /&gt;
  WiFi.mode(WIFI_AP); // le wemos est en mode &amp;quot;Point d'Accès&amp;quot; (il déploie un réseau wifi)&lt;br /&gt;
  WiFi.softAP(nomDuReseau, motDePasse, 2); // on démarre le &amp;quot;Point d'Accès&amp;quot;.&lt;br /&gt;
  MDNS.begin(nomDuReseau);                 // gérer les DNS ce qui rendra votre petit bot accessible&lt;br /&gt;
  MDNS.addService(&amp;quot;http&amp;quot;, &amp;quot;tcp&amp;quot;, 80);      // via http://nomDuReseau.local&lt;br /&gt;
  IPAddress monIP = WiFi.softAPIP();       // on récupère l'adresse IP du petit Bot&lt;br /&gt;
  Serial.print(&amp;quot;Adresse IP de ce Point d'Accès : &amp;quot;);&lt;br /&gt;
  Serial.println(monIP);                   // on l'écrit sur le moniteur série&lt;br /&gt;
  GestionDesClics();&lt;br /&gt;
  monServeur.begin();                          //Démarrage du monServeur&lt;br /&gt;
  Serial.println(&amp;quot;Serveur HTTP démarré&amp;quot;);&lt;br /&gt;
  instruction(val);&lt;br /&gt;
  return;                                  // on retourne à l'endroit ou la fonction a été appelée.&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Catégories==&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2020]]&lt;/div&gt;</summary>
		<author><name>Mathis</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2020_:_Elevator&amp;diff=12963</id>
		<title>ENIB 2020 : Elevator</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2020_:_Elevator&amp;diff=12963"/>
				<updated>2020-01-17T14:57:55Z</updated>
		
		<summary type="html">&lt;p&gt;Mathis : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Photo de l'équipe==&lt;br /&gt;
[[Fichier:Groupe elevator.jpeg|600px]]&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
L'Elevator est un dispositif composé d'une nacelle qui monte et descend à la manière d'un ascenseur. Une fois arrivée dans la partie haute de sa course, une temporisation permet de l'immobiliser, puis elle reprend sa course dans l'autre sens et descend. Des leds s'allument en fonction de la position de la plateforme : rouge pour la position haute, orange pour la position intermédiaire et vert pour la position basse. &lt;br /&gt;
&lt;br /&gt;
====Principe de fonctionnement====&lt;br /&gt;
&lt;br /&gt;
Un capteur à ultrasons permet de mesurer la distance qui sépare la nacelle du sol. Elle envoie cette mesure à une carte WEMOS qui commande le servomoteur. En fonction de la distance fournie et convertie en millimètres, la bobine doit s'enrouler, se dérouler ou arrêter de tourner. Une information est envoyée aux leds à chaque changement d'état.&lt;br /&gt;
&lt;br /&gt;
Une application permet de contrôler la mise en route du dispositif via une connection wifi.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 carte WEMOS&lt;br /&gt;
* 1 batterie de 5V&lt;br /&gt;
* 1 capteur à ultrasons (HC-SR04)&lt;br /&gt;
* 3 leds (rouge, orange, vert)&lt;br /&gt;
* 1 servomoteur&lt;br /&gt;
* 1 bobine de fil&lt;br /&gt;
* 2 plaques de câblage&lt;br /&gt;
* Fils de connection&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// on appelle la bibliothèque qui gère le Wemos D1 mini&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt; &lt;br /&gt;
&lt;br /&gt;
// Gestion du Wifi&lt;br /&gt;
#include &amp;lt;ESP8266WebServer.h&amp;gt;&lt;br /&gt;
#include &amp;lt;DNSServer.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ESP8266mDNS.h&amp;gt;&lt;br /&gt;
#include &amp;lt;WiFiClient.h&amp;gt; &lt;br /&gt;
/* Constantes pour les broches */&lt;br /&gt;
const byte TRIGGER_PIN = D2; // Broche TRIGGER&lt;br /&gt;
const byte ECHO_PIN = D3;    // Broche ECHO&lt;br /&gt;
 &lt;br /&gt;
/* Constantes pour le timeout */&lt;br /&gt;
const unsigned long MEASURE_TIMEOUT = 25000UL; // 25ms = ~8m à 340m/s&lt;br /&gt;
&lt;br /&gt;
/* Vitesse du son dans l'air en mm/us */&lt;br /&gt;
const float SOUND_SPEED = 340.0 / 1000;&lt;br /&gt;
int ledV_PIN = D4;&lt;br /&gt;
int ledR_PIN = D5;&lt;br /&gt;
int ledO_PIN = D6;&lt;br /&gt;
&lt;br /&gt;
//  Definition du WiFi &lt;br /&gt;
const char *nomDuReseau = &amp;quot;Mongolfiere&amp;quot;;     // Nom du réseau wifi du petit bot&lt;br /&gt;
const char *motDePasse = &amp;quot;&amp;quot;;    // Mot de passe du réseau wifi du petit bot&lt;br /&gt;
// ATTENTION - le mot de passe doit faire soit 0 caractères soit 8 ou plus sinon&lt;br /&gt;
// La configuration de votre réseau wifi ne se fera pas (ni mot de passe, ni nom de réseau !).&lt;br /&gt;
//création du monServeur&lt;br /&gt;
ESP8266WebServer monServeur(80);               // Création de l'objet monServeur&lt;br /&gt;
&lt;br /&gt;
//Gestion des servomoteurs&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;   //appel de la bibliothèque qui gère les servomoteurs&lt;br /&gt;
// création des servomoteurs &lt;br /&gt;
Servo servogauche;   // Nom du servo qui gère la première roue&lt;br /&gt;
Servo servodroit;    // Seconde roue&lt;br /&gt;
&lt;br /&gt;
//déclaration des Variables&lt;br /&gt;
//int --- en cours &lt;br /&gt;
int val = -1; // Val nous sert à stocker la commande de l'utilisateur (stop, avance, ...).&lt;br /&gt;
&lt;br /&gt;
void setup(){&lt;br /&gt;
   /* Initialise le port série */&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
   &lt;br /&gt;
  /* Initialise les broches */&lt;br /&gt;
  pinMode(TRIGGER_PIN, OUTPUT);&lt;br /&gt;
  digitalWrite(TRIGGER_PIN, LOW); // La broche TRIGGER doit être à LOW au repos&lt;br /&gt;
  pinMode(ECHO_PIN, INPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(ledR_PIN, OUTPUT); // led rouge&lt;br /&gt;
  pinMode(ledV_PIN, OUTPUT); // led vert&lt;br /&gt;
  pinMode(ledO_PIN, OUTPUT); // led Orange&lt;br /&gt;
  delay(1000);&lt;br /&gt;
 // Serial.begin(9600); // Ouvre une connexion série pour monitorer le fonctionnement du code quand on reste branché à l'ordinateur&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  Serial.println();  &lt;br /&gt;
  configDuWifi();&lt;br /&gt;
  servodroit.detach();  // Place les servos hors tension&lt;br /&gt;
  servogauche.detach(); &lt;br /&gt;
  pinMode(LED_BUILTIN, OUTPUT);    //met la led du Wemos en sortie&lt;br /&gt;
  digitalWrite(LED_BUILTIN, LOW);  //met la led du Wemos sur le niveau bas ce qui l'allume.&lt;br /&gt;
  pinMode(15, OUTPUT); //met D8 comme une sortie &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop(){&lt;br /&gt;
  ///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
   /* 1. Lance une mesure de distance en envoyant une impulsion HIGH de 10µs sur la broche TRIGGER */&lt;br /&gt;
  digitalWrite(TRIGGER_PIN, HIGH);&lt;br /&gt;
  delayMicroseconds(10);&lt;br /&gt;
  digitalWrite(TRIGGER_PIN, LOW);&lt;br /&gt;
  &lt;br /&gt;
  /* 2. Mesure le temps entre l'envoi de l'impulsion ultrasonique et son écho (si il existe) */&lt;br /&gt;
  long measure = pulseIn(ECHO_PIN, HIGH, MEASURE_TIMEOUT);&lt;br /&gt;
   &lt;br /&gt;
  /* 3. Calcul la distance à partir du temps mesuré */&lt;br /&gt;
  float distance_mm = measure / 2.0 * SOUND_SPEED;&lt;br /&gt;
   &lt;br /&gt;
  /* Affiche les résultats en mm, cm et m */&lt;br /&gt;
  Serial.print(F(&amp;quot;Distance: &amp;quot;));&lt;br /&gt;
  Serial.print(distance_mm);&lt;br /&gt;
  Serial.print(F(&amp;quot;mm (&amp;quot;));&lt;br /&gt;
  Serial.print(distance_mm / 10.0, 2);&lt;br /&gt;
  Serial.print(F(&amp;quot;cm, &amp;quot;));&lt;br /&gt;
  Serial.print(distance_mm / 1000.0, 2);&lt;br /&gt;
  Serial.println(F(&amp;quot;m)&amp;quot;));&lt;br /&gt;
   &lt;br /&gt;
  /* Délai d'attente pour éviter d'afficher trop de résultats à la seconde */&lt;br /&gt;
  delay(100);&lt;br /&gt;
   if (distance_mm &amp;gt;= 90 &amp;amp;&amp;amp; distance_mm &amp;lt;= 400  ) {digitalWrite(ledO_PIN, HIGH);}&lt;br /&gt;
   else {digitalWrite(ledO_PIN, LOW);}&lt;br /&gt;
&lt;br /&gt;
   if (distance_mm &amp;lt;= 90) &lt;br /&gt;
   {&lt;br /&gt;
    digitalWrite(val==2 &amp;amp;&amp;amp; ledV_PIN, HIGH);&lt;br /&gt;
    servodroit.write(90);&lt;br /&gt;
    }&lt;br /&gt;
   else {digitalWrite(ledV_PIN, LOW);}&lt;br /&gt;
    &lt;br /&gt;
   if (val==1 &amp;amp;&amp;amp; distance_mm &amp;gt;= 400 ) {&lt;br /&gt;
      digitalWrite(ledR_PIN, HIGH);&lt;br /&gt;
      servodroit.write(90);&lt;br /&gt;
   }&lt;br /&gt;
   else {digitalWrite(ledR_PIN, LOW);}&lt;br /&gt;
  &lt;br /&gt;
  /////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
    val = -1;&lt;br /&gt;
    monServeur.handleClient();&lt;br /&gt;
    //Clignotement de la LED sur D8&lt;br /&gt;
    digitalWrite(15, HIGH);   // turn the LED on (HIGH is the voltage level)&lt;br /&gt;
         delay(1000);                  // wait for a second&lt;br /&gt;
    digitalWrite(15, LOW);    // turn the LED off by making the voltage LOW&lt;br /&gt;
                        // wait for a second&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
///////////////////////GESTION DES INSTRUCTIONS///////////////////////////&lt;br /&gt;
void GestionDesClics() {&lt;br /&gt;
  monServeur.on(&amp;quot;/avance&amp;quot;, HTTP_GET, []() {&lt;br /&gt;
  val = 1;&lt;br /&gt;
  Serial.println(&amp;quot;avance&amp;quot;);    &lt;br /&gt;
  redactionPageWeb();&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  monServeur.on(&amp;quot;/recule&amp;quot;, HTTP_GET, []() {&lt;br /&gt;
  val = 2;&lt;br /&gt;
  Serial.println(&amp;quot;recule&amp;quot;);&lt;br /&gt;
  redactionPageWeb();&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  monServeur.on(&amp;quot;/droite&amp;quot;, HTTP_GET, []() {&lt;br /&gt;
  val = 4;&lt;br /&gt;
  Serial.println(&amp;quot;droite&amp;quot;);&lt;br /&gt;
  redactionPageWeb();&lt;br /&gt;
  });&lt;br /&gt;
  &lt;br /&gt;
  monServeur.on(&amp;quot;/gauche&amp;quot;, HTTP_GET, []() {&lt;br /&gt;
  val = 3;&lt;br /&gt;
  Serial.println(&amp;quot;gauche&amp;quot;);&lt;br /&gt;
  redactionPageWeb();&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  monServeur.on(&amp;quot;/stop&amp;quot;, HTTP_GET, []() {&lt;br /&gt;
  val = 0;&lt;br /&gt;
  Serial.println(&amp;quot;stop&amp;quot;);&lt;br /&gt;
  redactionPageWeb();&lt;br /&gt;
  });&lt;br /&gt;
  &lt;br /&gt;
  monServeur.on(&amp;quot;/&amp;quot;, HTTP_GET, []() {&lt;br /&gt;
  val = -1;&lt;br /&gt;
  redactionPageWeb();&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
///////////////////////////LA PAGE WEB DE CONROLE DU PETIT BOT/////////////////////////////////////////&lt;br /&gt;
void redactionPageWeb(){&lt;br /&gt;
  // Prépare la page web de réponse (le code HTML sera écrit dans la chaine de caractère &amp;quot;pageWeb&amp;quot;).&lt;br /&gt;
  String pageWeb = &amp;quot;&amp;lt;!DOCTYPE HTML&amp;gt;\r\n&amp;quot;;&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;html&amp;gt;\r\n&amp;quot;;&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;center&amp;gt;&amp;quot;;    //On ouvre la balise qui va centrer les boutons&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;h1 style=\&amp;quot;font-size:300%;\&amp;quot;\&amp;gt; Le petit bot &amp;quot;;&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;style type=\&amp;quot;text/css\&amp;quot;&amp;gt;  body { color: #101820; background-color: #45B5AA } &amp;lt;/style&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  // On finalise l'écriture de la page Web et on donne les instructions aux servos&lt;br /&gt;
  pageWeb += instruction(val); // pour cela on appelle la fonction &amp;quot;instruction&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  // On termine l'écriture de la page Web&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;/h1&amp;gt;&amp;quot;;&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;br&amp;gt;&amp;quot;; //aller à la ligne&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;br&amp;gt;&amp;quot;; //aller à la ligne&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;a href=\&amp;quot;/stop\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 18%; background-color:#FFE800; border-radius: 12px\&amp;quot;\&amp;gt;Stop &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;\r\n&amp;quot;;      // créer un bouton &amp;quot;Stop&amp;quot;, qui envoie sur l'URL /stop&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;a href=\&amp;quot;/avance\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 18%; background-color:#FFE800; border-radius: 12px\&amp;quot;\&amp;gt;Avance &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;\r\n&amp;quot;;  // créer un bouton &amp;quot;Avance&amp;quot;...&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;a href=\&amp;quot;/recule\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 18%; background-color:#FFE800; border-radius: 12px\&amp;quot;\&amp;gt;Recule &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;\r\n&amp;quot;;&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;a href=\&amp;quot;/droite\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 18%; background-color:#FFE800; border-radius: 12px\&amp;quot;\&amp;gt;Droite &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;\r\n&amp;quot;;&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;a href=\&amp;quot;/gauche\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 18%; background-color:#FFE800; border-radius: 12px\&amp;quot;\&amp;gt;Gauche &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;\r\n&amp;quot;;&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;/center&amp;gt;&amp;quot;; // tout est centré sur la page&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;/html&amp;gt;\n&amp;quot;; //Fin de la page Web&lt;br /&gt;
&lt;br /&gt;
  // On envoie la page web&lt;br /&gt;
  monServeur.send(200, &amp;quot;text/html&amp;quot;, pageWeb);&lt;br /&gt;
  delay(1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
///////////////////INSTRUCTIONS/////////////////////////////////////////////////////////&lt;br /&gt;
String instruction(int valeur){ //Cette fonction traite les instructions qui sont reçues&lt;br /&gt;
  int gauche;                           // Variable dont la valeur 180 ou 0 fera tourner le servo gauche dans un sens ou l'autre&lt;br /&gt;
  int droite;                           // Idem pour le servo droit&lt;br /&gt;
  String completePage;                  // Déclaration de la chaine de caractère qui sera renvoyée par cette fonction pour compléter la page web &lt;br /&gt;
  switch(valeur){                       // En fonction de la variable valeur on va donner un ordre aux servos &lt;br /&gt;
    case 0 :                            // et un texte à la chaine de caractère &amp;quot;completePage&amp;quot;&lt;br /&gt;
    completePage = &amp;quot; est à l'arrêt &amp;quot;;&lt;br /&gt;
    droite = 90;&lt;br /&gt;
    gauche = 90;&lt;br /&gt;
    break;&lt;br /&gt;
    case 1 :&lt;br /&gt;
    completePage = &amp;quot; avance &amp;quot;;&lt;br /&gt;
    droite = 180;&lt;br /&gt;
    gauche =  0;&lt;br /&gt;
    break;&lt;br /&gt;
    case 2 :&lt;br /&gt;
    completePage = &amp;quot; recule &amp;quot;;&lt;br /&gt;
    droite = 0;&lt;br /&gt;
    gauche =  180;&lt;br /&gt;
    break;&lt;br /&gt;
    case 3 :&lt;br /&gt;
    completePage = &amp;quot; tourne à gauche &amp;quot;;&lt;br /&gt;
    droite = 180;&lt;br /&gt;
    gauche =  90;&lt;br /&gt;
    break;&lt;br /&gt;
    case 4 :&lt;br /&gt;
    completePage = &amp;quot; tourne à droite &amp;quot;;&lt;br /&gt;
    droite = 90;&lt;br /&gt;
    gauche = 0;&lt;br /&gt;
    break;&lt;br /&gt;
    // que faire du cas ou val = -1 ? marquer ici ce qui doit être fait.&lt;br /&gt;
  }&lt;br /&gt;
  servogauche.attach(D7);     // Broche D2&lt;br /&gt;
  servodroit.attach(D8);      // Broche D1&lt;br /&gt;
  servogauche.write(gauche); &lt;br /&gt;
  servodroit.write(droite);&lt;br /&gt;
  return completePage;        // on renvoie la chaine de caractère pour compléter la page web&lt;br /&gt;
}&lt;br /&gt;
////////////////////////CONFIGURATION WIFI///////////////////////////////////////////////&lt;br /&gt;
void configDuWifi(){  // Fonction de configuratio du Wifi&lt;br /&gt;
  WiFi.mode(WIFI_AP); // le wemos est en mode &amp;quot;Point d'Accès&amp;quot; (il déploie un réseau wifi)&lt;br /&gt;
  WiFi.softAP(nomDuReseau, motDePasse, 2); // on démarre le &amp;quot;Point d'Accès&amp;quot;.&lt;br /&gt;
  MDNS.begin(nomDuReseau);                 // gérer les DNS ce qui rendra votre petit bot accessible&lt;br /&gt;
  MDNS.addService(&amp;quot;http&amp;quot;, &amp;quot;tcp&amp;quot;, 80);      // via http://nomDuReseau.local&lt;br /&gt;
  IPAddress monIP = WiFi.softAPIP();       // on récupère l'adresse IP du petit Bot&lt;br /&gt;
  Serial.print(&amp;quot;Adresse IP de ce Point d'Accès : &amp;quot;);&lt;br /&gt;
  Serial.println(monIP);                   // on l'écrit sur le moniteur série&lt;br /&gt;
  GestionDesClics();&lt;br /&gt;
  monServeur.begin();                          //Démarrage du monServeur&lt;br /&gt;
  Serial.println(&amp;quot;Serveur HTTP démarré&amp;quot;);&lt;br /&gt;
  instruction(val);&lt;br /&gt;
  return;                                  // on retourne à l'endroit ou la fonction a été appelée.&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Catégories==&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2020]]&lt;/div&gt;</summary>
		<author><name>Mathis</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2020_:_Elevator&amp;diff=12962</id>
		<title>ENIB 2020 : Elevator</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2020_:_Elevator&amp;diff=12962"/>
				<updated>2020-01-17T14:55:59Z</updated>
		
		<summary type="html">&lt;p&gt;Mathis : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Photo de l'équipe==&lt;br /&gt;
[[Fichier:Photoenib2018.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
L'Elevator est un dispositif composé d'une nacelle qui monte et descend à la manière d'un ascenseur. Une fois arrivée dans la partie haute de sa course, une temporisation permet de l'immobiliser, puis elle reprend sa course dans l'autre sens et descend. Des leds s'allument en fonction de la position de la plateforme : rouge pour la position haute, orange pour la position intermédiaire et vert pour la position basse. &lt;br /&gt;
&lt;br /&gt;
====Principe de fonctionnement====&lt;br /&gt;
&lt;br /&gt;
Un capteur à ultrasons permet de mesurer la distance qui sépare la nacelle du sol. Elle envoie cette mesure à une carte WEMOS qui commande le servomoteur. En fonction de la distance fournie et convertie en millimètres, la bobine doit s'enrouler, se dérouler ou arrêter de tourner. Une information est envoyée aux leds à chaque changement d'état.&lt;br /&gt;
&lt;br /&gt;
Une application permet de contrôler la mise en route du dispositif via une connection wifi.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 carte WEMOS&lt;br /&gt;
* 1 batterie de 5V&lt;br /&gt;
* 1 capteur à ultrasons (HC-SR04)&lt;br /&gt;
* 3 leds (rouge, orange, vert)&lt;br /&gt;
* 1 servomoteur&lt;br /&gt;
* 1 bobine de fil&lt;br /&gt;
* 2 plaques de câblage&lt;br /&gt;
* Fils de connection&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// on appelle la bibliothèque qui gère le Wemos D1 mini&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt; &lt;br /&gt;
&lt;br /&gt;
// Gestion du Wifi&lt;br /&gt;
#include &amp;lt;ESP8266WebServer.h&amp;gt;&lt;br /&gt;
#include &amp;lt;DNSServer.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ESP8266mDNS.h&amp;gt;&lt;br /&gt;
#include &amp;lt;WiFiClient.h&amp;gt; &lt;br /&gt;
/* Constantes pour les broches */&lt;br /&gt;
const byte TRIGGER_PIN = D2; // Broche TRIGGER&lt;br /&gt;
const byte ECHO_PIN = D3;    // Broche ECHO&lt;br /&gt;
 &lt;br /&gt;
/* Constantes pour le timeout */&lt;br /&gt;
const unsigned long MEASURE_TIMEOUT = 25000UL; // 25ms = ~8m à 340m/s&lt;br /&gt;
&lt;br /&gt;
/* Vitesse du son dans l'air en mm/us */&lt;br /&gt;
const float SOUND_SPEED = 340.0 / 1000;&lt;br /&gt;
int ledV_PIN = D4;&lt;br /&gt;
int ledR_PIN = D5;&lt;br /&gt;
int ledO_PIN = D6;&lt;br /&gt;
&lt;br /&gt;
//  Definition du WiFi &lt;br /&gt;
const char *nomDuReseau = &amp;quot;Mongolfiere&amp;quot;;     // Nom du réseau wifi du petit bot&lt;br /&gt;
const char *motDePasse = &amp;quot;&amp;quot;;    // Mot de passe du réseau wifi du petit bot&lt;br /&gt;
// ATTENTION - le mot de passe doit faire soit 0 caractères soit 8 ou plus sinon&lt;br /&gt;
// La configuration de votre réseau wifi ne se fera pas (ni mot de passe, ni nom de réseau !).&lt;br /&gt;
//création du monServeur&lt;br /&gt;
ESP8266WebServer monServeur(80);               // Création de l'objet monServeur&lt;br /&gt;
&lt;br /&gt;
//Gestion des servomoteurs&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;   //appel de la bibliothèque qui gère les servomoteurs&lt;br /&gt;
// création des servomoteurs &lt;br /&gt;
Servo servogauche;   // Nom du servo qui gère la première roue&lt;br /&gt;
Servo servodroit;    // Seconde roue&lt;br /&gt;
&lt;br /&gt;
//déclaration des Variables&lt;br /&gt;
//int --- en cours &lt;br /&gt;
int val = -1; // Val nous sert à stocker la commande de l'utilisateur (stop, avance, ...).&lt;br /&gt;
&lt;br /&gt;
void setup(){&lt;br /&gt;
   /* Initialise le port série */&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
   &lt;br /&gt;
  /* Initialise les broches */&lt;br /&gt;
  pinMode(TRIGGER_PIN, OUTPUT);&lt;br /&gt;
  digitalWrite(TRIGGER_PIN, LOW); // La broche TRIGGER doit être à LOW au repos&lt;br /&gt;
  pinMode(ECHO_PIN, INPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(ledR_PIN, OUTPUT); // led rouge&lt;br /&gt;
  pinMode(ledV_PIN, OUTPUT); // led vert&lt;br /&gt;
  pinMode(ledO_PIN, OUTPUT); // led Orange&lt;br /&gt;
  delay(1000);&lt;br /&gt;
 // Serial.begin(9600); // Ouvre une connexion série pour monitorer le fonctionnement du code quand on reste branché à l'ordinateur&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  Serial.println();  &lt;br /&gt;
  configDuWifi();&lt;br /&gt;
  servodroit.detach();  // Place les servos hors tension&lt;br /&gt;
  servogauche.detach(); &lt;br /&gt;
  pinMode(LED_BUILTIN, OUTPUT);    //met la led du Wemos en sortie&lt;br /&gt;
  digitalWrite(LED_BUILTIN, LOW);  //met la led du Wemos sur le niveau bas ce qui l'allume.&lt;br /&gt;
  pinMode(15, OUTPUT); //met D8 comme une sortie &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop(){&lt;br /&gt;
  ///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
   /* 1. Lance une mesure de distance en envoyant une impulsion HIGH de 10µs sur la broche TRIGGER */&lt;br /&gt;
  digitalWrite(TRIGGER_PIN, HIGH);&lt;br /&gt;
  delayMicroseconds(10);&lt;br /&gt;
  digitalWrite(TRIGGER_PIN, LOW);&lt;br /&gt;
  &lt;br /&gt;
  /* 2. Mesure le temps entre l'envoi de l'impulsion ultrasonique et son écho (si il existe) */&lt;br /&gt;
  long measure = pulseIn(ECHO_PIN, HIGH, MEASURE_TIMEOUT);&lt;br /&gt;
   &lt;br /&gt;
  /* 3. Calcul la distance à partir du temps mesuré */&lt;br /&gt;
  float distance_mm = measure / 2.0 * SOUND_SPEED;&lt;br /&gt;
   &lt;br /&gt;
  /* Affiche les résultats en mm, cm et m */&lt;br /&gt;
  Serial.print(F(&amp;quot;Distance: &amp;quot;));&lt;br /&gt;
  Serial.print(distance_mm);&lt;br /&gt;
  Serial.print(F(&amp;quot;mm (&amp;quot;));&lt;br /&gt;
  Serial.print(distance_mm / 10.0, 2);&lt;br /&gt;
  Serial.print(F(&amp;quot;cm, &amp;quot;));&lt;br /&gt;
  Serial.print(distance_mm / 1000.0, 2);&lt;br /&gt;
  Serial.println(F(&amp;quot;m)&amp;quot;));&lt;br /&gt;
   &lt;br /&gt;
  /* Délai d'attente pour éviter d'afficher trop de résultats à la seconde */&lt;br /&gt;
  delay(100);&lt;br /&gt;
   if (distance_mm &amp;gt;= 90 &amp;amp;&amp;amp; distance_mm &amp;lt;= 400  ) {digitalWrite(ledO_PIN, HIGH);}&lt;br /&gt;
   else {digitalWrite(ledO_PIN, LOW);}&lt;br /&gt;
&lt;br /&gt;
   if (distance_mm &amp;lt;= 90) &lt;br /&gt;
   {&lt;br /&gt;
    digitalWrite(val==2 &amp;amp;&amp;amp; ledV_PIN, HIGH);&lt;br /&gt;
    servodroit.write(90);&lt;br /&gt;
    }&lt;br /&gt;
   else {digitalWrite(ledV_PIN, LOW);}&lt;br /&gt;
    &lt;br /&gt;
   if (val==1 &amp;amp;&amp;amp; distance_mm &amp;gt;= 400 ) {&lt;br /&gt;
      digitalWrite(ledR_PIN, HIGH);&lt;br /&gt;
      servodroit.write(90);&lt;br /&gt;
   }&lt;br /&gt;
   else {digitalWrite(ledR_PIN, LOW);}&lt;br /&gt;
  &lt;br /&gt;
  /////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
    val = -1;&lt;br /&gt;
    monServeur.handleClient();&lt;br /&gt;
    //Clignotement de la LED sur D8&lt;br /&gt;
    digitalWrite(15, HIGH);   // turn the LED on (HIGH is the voltage level)&lt;br /&gt;
         delay(1000);                  // wait for a second&lt;br /&gt;
    digitalWrite(15, LOW);    // turn the LED off by making the voltage LOW&lt;br /&gt;
                        // wait for a second&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
///////////////////////GESTION DES INSTRUCTIONS///////////////////////////&lt;br /&gt;
void GestionDesClics() {&lt;br /&gt;
  monServeur.on(&amp;quot;/avance&amp;quot;, HTTP_GET, []() {&lt;br /&gt;
  val = 1;&lt;br /&gt;
  Serial.println(&amp;quot;avance&amp;quot;);    &lt;br /&gt;
  redactionPageWeb();&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  monServeur.on(&amp;quot;/recule&amp;quot;, HTTP_GET, []() {&lt;br /&gt;
  val = 2;&lt;br /&gt;
  Serial.println(&amp;quot;recule&amp;quot;);&lt;br /&gt;
  redactionPageWeb();&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  monServeur.on(&amp;quot;/droite&amp;quot;, HTTP_GET, []() {&lt;br /&gt;
  val = 4;&lt;br /&gt;
  Serial.println(&amp;quot;droite&amp;quot;);&lt;br /&gt;
  redactionPageWeb();&lt;br /&gt;
  });&lt;br /&gt;
  &lt;br /&gt;
  monServeur.on(&amp;quot;/gauche&amp;quot;, HTTP_GET, []() {&lt;br /&gt;
  val = 3;&lt;br /&gt;
  Serial.println(&amp;quot;gauche&amp;quot;);&lt;br /&gt;
  redactionPageWeb();&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  monServeur.on(&amp;quot;/stop&amp;quot;, HTTP_GET, []() {&lt;br /&gt;
  val = 0;&lt;br /&gt;
  Serial.println(&amp;quot;stop&amp;quot;);&lt;br /&gt;
  redactionPageWeb();&lt;br /&gt;
  });&lt;br /&gt;
  &lt;br /&gt;
  monServeur.on(&amp;quot;/&amp;quot;, HTTP_GET, []() {&lt;br /&gt;
  val = -1;&lt;br /&gt;
  redactionPageWeb();&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
///////////////////////////LA PAGE WEB DE CONROLE DU PETIT BOT/////////////////////////////////////////&lt;br /&gt;
void redactionPageWeb(){&lt;br /&gt;
  // Prépare la page web de réponse (le code HTML sera écrit dans la chaine de caractère &amp;quot;pageWeb&amp;quot;).&lt;br /&gt;
  String pageWeb = &amp;quot;&amp;lt;!DOCTYPE HTML&amp;gt;\r\n&amp;quot;;&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;html&amp;gt;\r\n&amp;quot;;&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;center&amp;gt;&amp;quot;;    //On ouvre la balise qui va centrer les boutons&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;h1 style=\&amp;quot;font-size:300%;\&amp;quot;\&amp;gt; Le petit bot &amp;quot;;&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;style type=\&amp;quot;text/css\&amp;quot;&amp;gt;  body { color: #101820; background-color: #45B5AA } &amp;lt;/style&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  // On finalise l'écriture de la page Web et on donne les instructions aux servos&lt;br /&gt;
  pageWeb += instruction(val); // pour cela on appelle la fonction &amp;quot;instruction&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  // On termine l'écriture de la page Web&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;/h1&amp;gt;&amp;quot;;&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;br&amp;gt;&amp;quot;; //aller à la ligne&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;br&amp;gt;&amp;quot;; //aller à la ligne&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;a href=\&amp;quot;/stop\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 18%; background-color:#FFE800; border-radius: 12px\&amp;quot;\&amp;gt;Stop &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;\r\n&amp;quot;;      // créer un bouton &amp;quot;Stop&amp;quot;, qui envoie sur l'URL /stop&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;a href=\&amp;quot;/avance\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 18%; background-color:#FFE800; border-radius: 12px\&amp;quot;\&amp;gt;Avance &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;\r\n&amp;quot;;  // créer un bouton &amp;quot;Avance&amp;quot;...&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;a href=\&amp;quot;/recule\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 18%; background-color:#FFE800; border-radius: 12px\&amp;quot;\&amp;gt;Recule &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;\r\n&amp;quot;;&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;a href=\&amp;quot;/droite\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 18%; background-color:#FFE800; border-radius: 12px\&amp;quot;\&amp;gt;Droite &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;\r\n&amp;quot;;&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;a href=\&amp;quot;/gauche\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 18%; background-color:#FFE800; border-radius: 12px\&amp;quot;\&amp;gt;Gauche &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;\r\n&amp;quot;;&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;/center&amp;gt;&amp;quot;; // tout est centré sur la page&lt;br /&gt;
  pageWeb += &amp;quot;&amp;lt;/html&amp;gt;\n&amp;quot;; //Fin de la page Web&lt;br /&gt;
&lt;br /&gt;
  // On envoie la page web&lt;br /&gt;
  monServeur.send(200, &amp;quot;text/html&amp;quot;, pageWeb);&lt;br /&gt;
  delay(1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
///////////////////INSTRUCTIONS/////////////////////////////////////////////////////////&lt;br /&gt;
String instruction(int valeur){ //Cette fonction traite les instructions qui sont reçues&lt;br /&gt;
  int gauche;                           // Variable dont la valeur 180 ou 0 fera tourner le servo gauche dans un sens ou l'autre&lt;br /&gt;
  int droite;                           // Idem pour le servo droit&lt;br /&gt;
  String completePage;                  // Déclaration de la chaine de caractère qui sera renvoyée par cette fonction pour compléter la page web &lt;br /&gt;
  switch(valeur){                       // En fonction de la variable valeur on va donner un ordre aux servos &lt;br /&gt;
    case 0 :                            // et un texte à la chaine de caractère &amp;quot;completePage&amp;quot;&lt;br /&gt;
    completePage = &amp;quot; est à l'arrêt &amp;quot;;&lt;br /&gt;
    droite = 90;&lt;br /&gt;
    gauche = 90;&lt;br /&gt;
    break;&lt;br /&gt;
    case 1 :&lt;br /&gt;
    completePage = &amp;quot; avance &amp;quot;;&lt;br /&gt;
    droite = 180;&lt;br /&gt;
    gauche =  0;&lt;br /&gt;
    break;&lt;br /&gt;
    case 2 :&lt;br /&gt;
    completePage = &amp;quot; recule &amp;quot;;&lt;br /&gt;
    droite = 0;&lt;br /&gt;
    gauche =  180;&lt;br /&gt;
    break;&lt;br /&gt;
    case 3 :&lt;br /&gt;
    completePage = &amp;quot; tourne à gauche &amp;quot;;&lt;br /&gt;
    droite = 180;&lt;br /&gt;
    gauche =  90;&lt;br /&gt;
    break;&lt;br /&gt;
    case 4 :&lt;br /&gt;
    completePage = &amp;quot; tourne à droite &amp;quot;;&lt;br /&gt;
    droite = 90;&lt;br /&gt;
    gauche = 0;&lt;br /&gt;
    break;&lt;br /&gt;
    // que faire du cas ou val = -1 ? marquer ici ce qui doit être fait.&lt;br /&gt;
  }&lt;br /&gt;
  servogauche.attach(D7);     // Broche D2&lt;br /&gt;
  servodroit.attach(D8);      // Broche D1&lt;br /&gt;
  servogauche.write(gauche); &lt;br /&gt;
  servodroit.write(droite);&lt;br /&gt;
  return completePage;        // on renvoie la chaine de caractère pour compléter la page web&lt;br /&gt;
}&lt;br /&gt;
////////////////////////CONFIGURATION WIFI///////////////////////////////////////////////&lt;br /&gt;
void configDuWifi(){  // Fonction de configuratio du Wifi&lt;br /&gt;
  WiFi.mode(WIFI_AP); // le wemos est en mode &amp;quot;Point d'Accès&amp;quot; (il déploie un réseau wifi)&lt;br /&gt;
  WiFi.softAP(nomDuReseau, motDePasse, 2); // on démarre le &amp;quot;Point d'Accès&amp;quot;.&lt;br /&gt;
  MDNS.begin(nomDuReseau);                 // gérer les DNS ce qui rendra votre petit bot accessible&lt;br /&gt;
  MDNS.addService(&amp;quot;http&amp;quot;, &amp;quot;tcp&amp;quot;, 80);      // via http://nomDuReseau.local&lt;br /&gt;
  IPAddress monIP = WiFi.softAPIP();       // on récupère l'adresse IP du petit Bot&lt;br /&gt;
  Serial.print(&amp;quot;Adresse IP de ce Point d'Accès : &amp;quot;);&lt;br /&gt;
  Serial.println(monIP);                   // on l'écrit sur le moniteur série&lt;br /&gt;
  GestionDesClics();&lt;br /&gt;
  monServeur.begin();                          //Démarrage du monServeur&lt;br /&gt;
  Serial.println(&amp;quot;Serveur HTTP démarré&amp;quot;);&lt;br /&gt;
  instruction(val);&lt;br /&gt;
  return;                                  // on retourne à l'endroit ou la fonction a été appelée.&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Catégories==&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2020]]&lt;/div&gt;</summary>
		<author><name>Mathis</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2020_:_Elevator&amp;diff=12802</id>
		<title>ENIB 2020 : Elevator</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2020_:_Elevator&amp;diff=12802"/>
				<updated>2020-01-17T09:25:37Z</updated>
		
		<summary type="html">&lt;p&gt;Mathis : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Photo de l'équipe==&lt;br /&gt;
[[Fichier:Photoenib2018.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
L'Elevator est un dispositif composé d'une nacelle qui monte et descend à la manière d'un ascenseur. Une fois arrivée dans la partie haute de sa course, une temporisation permet de l'immobiliser, puis elle reprend sa course dans l'autre sens et descend. Des leds s'allument en fonction de la position de la plateforme : rouge pour la position haute, orange pour la position intermédiaire et vert pour la position basse. &lt;br /&gt;
&lt;br /&gt;
====Principe de fonctionnement====&lt;br /&gt;
&lt;br /&gt;
Un capteur à ultrasons permet de mesurer la distance qui sépare la nacelle du sol. Elle envoie cette mesure à une carte WEMOS qui commande le servomoteur. En fonction de la distance fournie et convertie en millimètres, la bobine doit s'enrouler, se dérouler ou arrêter de tourner. Une information est envoyée aux leds à chaque changement d'état.&lt;br /&gt;
&lt;br /&gt;
Une application permet de contrôler la mise en route du dispositif via une connection wifi.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 carte WEMOS&lt;br /&gt;
* 1 batterie de 5V&lt;br /&gt;
* 1 capteur à ultrasons (HC-SR04)&lt;br /&gt;
* 3 leds (rouge, orange, vert)&lt;br /&gt;
* 1 servomoteur&lt;br /&gt;
* 1 bobine de fil&lt;br /&gt;
* 2 plaques de câblage&lt;br /&gt;
* Fils de connection&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ici je pose mon code documenté !&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Catégories==&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2020]]&lt;/div&gt;</summary>
		<author><name>Mathis</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2020_:_Elevator&amp;diff=12801</id>
		<title>ENIB 2020 : Elevator</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2020_:_Elevator&amp;diff=12801"/>
				<updated>2020-01-17T09:18:57Z</updated>
		
		<summary type="html">&lt;p&gt;Mathis : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Photo de l'équipe==&lt;br /&gt;
[[Fichier:Photoenib2018.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
L'Elevator est un dispositif composé d'une nacelle qui monte et descend à la manière d'un ascenseur. Une fois arrivée dans la partie haute de sa course, une temporisation permet de l'immobiliser, puis elle reprend sa course dans l'autre sens et descend. Des leds s'allument en fonction de la position de la plateforme : rouge pour la position haute, orange pour la position intermédiaire et vert pour la position basse. &lt;br /&gt;
&lt;br /&gt;
====Principe de fonctionnement====&lt;br /&gt;
&lt;br /&gt;
Un capteur à ultrasons permet de mesurer la distance qui sépare la nacelle du sol. Elle envoie cette mesure à une carte WEMOS qui commande le servomoteur. En fonction de la distance fournie et convertie en millimètres, la bobine doit s'enrouler, se dérouler ou arrêter de tourner. Une information est envoyée aux leds à chaque changement d'état.&lt;br /&gt;
&lt;br /&gt;
Une application permet de contrôler la mise en route du dispositif via une connection wifi.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 carte WEMOS&lt;br /&gt;
* 1 batterie de 5V&lt;br /&gt;
* 1 capteur à ultrasons (HC-SR04)&lt;br /&gt;
* 3 leds&lt;br /&gt;
* 1 servomoteur&lt;br /&gt;
* 1 bobine de fil&lt;br /&gt;
* 2 plaques de câblage&lt;br /&gt;
* Fils de connection&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ici je pose mon code documenté !&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Catégories==&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2020]]&lt;/div&gt;</summary>
		<author><name>Mathis</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2020_:_Elevator&amp;diff=12798</id>
		<title>ENIB 2020 : Elevator</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2020_:_Elevator&amp;diff=12798"/>
				<updated>2020-01-17T09:12:58Z</updated>
		
		<summary type="html">&lt;p&gt;Mathis : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Photo de l'équipe==&lt;br /&gt;
[[Fichier:Photoenib2018.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
L'Elevator est un dispositif composé d'une nacelle qui monte et descend à la manière d'un ascenseur. Une fois arrivée dans la partie haute de sa course, une temporisation immobilise la nacelle, puis celle-ci reprend sa course dans l'autre sens et descend. Des leds s'allument en fonction de la position de la plateforme : rouge pour la position haute, orange pour la position intermédiaire et vert pour la position basse. &lt;br /&gt;
&lt;br /&gt;
====Principe de fonctionnement====&lt;br /&gt;
&lt;br /&gt;
Un capteur à ultrasons permet de mesurer la distance qui sépare la nacelle du sol. Elle envoie cette mesure à une carte WEMOS qui commande le servomoteur. En fonction de la distance fournie et convertie en millimètres, la bobine doit s'enrouler, se dérouler ou arrêter de tourner. Une information est envoyée aux leds à chaque changement d'état.&lt;br /&gt;
&lt;br /&gt;
Une application permet de contrôler la mise en route du dispositif.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 carte WEMOS&lt;br /&gt;
* 1 batterie de 5V&lt;br /&gt;
* 1 capteur à ultrasons (HC-SR04)&lt;br /&gt;
* 3 leds&lt;br /&gt;
* 1 servomoteur&lt;br /&gt;
* 1 bobine de fil&lt;br /&gt;
* 2 plaques de câblage&lt;br /&gt;
* Fils de connection&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ici je pose mon code documenté !&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Catégories==&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2020]]&lt;/div&gt;</summary>
		<author><name>Mathis</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2020_:_Elevator&amp;diff=12796</id>
		<title>ENIB 2020 : Elevator</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2020_:_Elevator&amp;diff=12796"/>
				<updated>2020-01-17T09:09:10Z</updated>
		
		<summary type="html">&lt;p&gt;Mathis : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==photo de l'équipe==&lt;br /&gt;
[[Fichier:Photoenib2018.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
L'Elevator est un dispositif composé d'une nacelle qui monte et descend à la manière d'un ascenseur. Une fois arrivée dans la partie haute de sa course, une temporisation immobilise la nacelle, puis celle-ci reprend sa course dans l'autre sens et descend. Des leds s'allument en fonction de la position de la plateforme : rouge pour la position haute, orange pour la position intermédiaire et vert pour la position basse. &lt;br /&gt;
&lt;br /&gt;
====Principe de fonctionnement====&lt;br /&gt;
&lt;br /&gt;
Un capteur à ultrasons permet de mesurer la distance qui sépare la nacelle du sol. Elle envoie cette mesure à une carte WEMOS qui commande le servomoteur. En fonction de la distance fournie et convertie en millimètres, la bobine doit s'enrouler, se dérouler ou arrêter de tourner. Une information est envoyée aux leds à chaque changement d'état.&lt;br /&gt;
&lt;br /&gt;
Une application permet de contrôler la mise en route du dispositif.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 carte WEMOS&lt;br /&gt;
* 1 batterie de 5V&lt;br /&gt;
* 1 capteur à ultrasons (HC-SR04)&lt;br /&gt;
* 3 leds&lt;br /&gt;
* 1 servomoteur&lt;br /&gt;
* 1 bobine de fil&lt;br /&gt;
* 2 plaques de câblage&lt;br /&gt;
* Fils de connection&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ici je pose mon code documenté !&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Catégories==&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2020]]&lt;/div&gt;</summary>
		<author><name>Mathis</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2020_:_Elevator&amp;diff=12793</id>
		<title>ENIB 2020 : Elevator</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2020_:_Elevator&amp;diff=12793"/>
				<updated>2020-01-17T09:00:12Z</updated>
		
		<summary type="html">&lt;p&gt;Mathis : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==photo de l'équipe==&lt;br /&gt;
[[Fichier:Photoenib2018.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
L'Elevator est un dispositif composé d'une nacelle qui monte et descend à la manière d'un ascenseur. Une fois arrivée dans la partie haute de sa course, une temporisation immobilise la nacelle, puis celle-ci reprend sa course dans l'autre sens et descend. Des leds s'allument en fonction de la position de la plateforme : rouge pour la position haute, orange pour la position intermédiaire et vert pour la position basse. &lt;br /&gt;
&lt;br /&gt;
====Principe de fonctionnement====&lt;br /&gt;
&lt;br /&gt;
Un capteur à ultrasons permet de mesurer la distance qui sépare la nacelle du sol. Elle envoie cette mesure à une carte WEMOS qui transmet la commande de mise en route du servomoteur.&lt;br /&gt;
&lt;br /&gt;
Une application permet d'arrêter le cycle de montée et descente.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 carte WEMOS&lt;br /&gt;
* 1 batterie de 5V&lt;br /&gt;
* 1 capteur à ultrasons (HC-SR04)&lt;br /&gt;
* 3 leds&lt;br /&gt;
* 1 servomoteur&lt;br /&gt;
* 1 bobine de fil&lt;br /&gt;
* 2 plaques de câblage&lt;br /&gt;
* Fils de connection&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ici je pose mon code documenté !&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Catégories==&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2020]]&lt;/div&gt;</summary>
		<author><name>Mathis</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2020_:_Elevator&amp;diff=12792</id>
		<title>ENIB 2020 : Elevator</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2020_:_Elevator&amp;diff=12792"/>
				<updated>2020-01-17T08:59:41Z</updated>
		
		<summary type="html">&lt;p&gt;Mathis : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==photo de l'équipe==&lt;br /&gt;
[[Fichier:Photoenib2018.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
L'Elevator est un dispositif composé d'une nacelle qui monte et descend à la manière d'un ascenseur. Une fois arrivée dans la partie haute de sa course, une temporisation immobilise la nacelle, puis celle-ci reprend sa course dans l'autre sens et descend. Des leds s'allument en fonction de la position de la plateforme : rouge pour la position haute, orange pour la position intermédiaire et vert pour la position basse. &lt;br /&gt;
&lt;br /&gt;
===Principe de fonctionnement===&lt;br /&gt;
&lt;br /&gt;
Un capteur à ultrasons permet de mesurer la distance qui sépare la nacelle du sol. Elle envoie cette mesure à une carte WEMOS qui transmet la commande de mise en route du servomoteur.&lt;br /&gt;
&lt;br /&gt;
Une application permet d'arrêter le cycle de montée et descente.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 carte WEMOS&lt;br /&gt;
* 1 batterie de 5V&lt;br /&gt;
* 1 capteur à ultrasons (HC-SR04)&lt;br /&gt;
* 3 leds&lt;br /&gt;
* 1 servomoteur&lt;br /&gt;
* 1 bobine de fil&lt;br /&gt;
* 2 plaques de câblage&lt;br /&gt;
* Fils de connection&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ici je pose mon code documenté !&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Catégories==&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2020]]&lt;/div&gt;</summary>
		<author><name>Mathis</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2020_:_Elevator&amp;diff=12791</id>
		<title>ENIB 2020 : Elevator</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2020_:_Elevator&amp;diff=12791"/>
				<updated>2020-01-17T08:49:20Z</updated>
		
		<summary type="html">&lt;p&gt;Mathis : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==photo de l'équipe==&lt;br /&gt;
[[Fichier:Photoenib2018.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
L'Elevator est un dispositif composé d'une nacelle qui monte et descend à la manière d'un ascenseur. Une fois arrivée dans la partie haute de sa course, une temporisation immobilise la nacelle, puis celle-ci reprend sa course dans l'autre sens et descend. Des leds s'allument en fonction de la position de la plateforme : rouge pour la position haute, orange pour la position intermédiaire et vert pour la position basse. &lt;br /&gt;
Un capteur à ultrasons permet de mesurer la distance qui sépare la nacelle du sol. Elle envoie cette mesure à une carte &lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 carte WEMOS&lt;br /&gt;
* 1 batterie de 5V&lt;br /&gt;
* 1 capteur à ultrasons (HC-SR04)&lt;br /&gt;
* 3 leds&lt;br /&gt;
* 1 servomoteur&lt;br /&gt;
* 1 bobine de fil&lt;br /&gt;
* 2 plaques de câblage&lt;br /&gt;
* Fils de connection&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ici je pose mon code documenté !&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Catégories==&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2020]]&lt;/div&gt;</summary>
		<author><name>Mathis</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2020_:_Elevator&amp;diff=12748</id>
		<title>ENIB 2020 : Elevator</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2020_:_Elevator&amp;diff=12748"/>
				<updated>2020-01-16T13:31:43Z</updated>
		
		<summary type="html">&lt;p&gt;Mathis : Page créée avec « ==photo de l'équipe== 600px  ==Que fait ce projet ? ==  ==Liste des composants==  * composant 1 * composant 2 * ...  ==Code== &amp;lt;pre&amp;gt; ici je p... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==photo de l'équipe==&lt;br /&gt;
[[Fichier:Photoenib2018.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* composant 1&lt;br /&gt;
* composant 2&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ici je pose mon code documenté !&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Catégories==&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2020]]&lt;/div&gt;</summary>
		<author><name>Mathis</name></author>	</entry>

	</feed>