<?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=Phycelot</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=Phycelot"/>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Sp%C3%A9cial:Contributions/Phycelot"/>
		<updated>2026-05-17T09:28:02Z</updated>
		<subtitle>Contributions de l’utilisateur</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8841</id>
		<title>Mortal robot</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8841"/>
				<updated>2018-01-19T15:28:20Z</updated>
		
		<summary type="html">&lt;p&gt;Phycelot : /* Avancement du projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sur la base des petits bots, il s'agit d'ajouter un laser et un récepteur avec un système de point de vie.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 0357.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
==Pédagogie==&lt;br /&gt;
*construire&lt;br /&gt;
*programmer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Membres de l'équipe==&lt;br /&gt;
* Prouteau Antonin&lt;br /&gt;
* Jegou Gergaud Nils&lt;br /&gt;
* Kerouanton Jeremy&lt;br /&gt;
* Ridae Hamdani&lt;br /&gt;
* Asaad ALAKOUM&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 0359.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
==Matériel pour le 1er robot==&lt;br /&gt;
&lt;br /&gt;
* Carte wemos D1 mini &lt;br /&gt;
* 1 interrupteur&lt;br /&gt;
* 4 piles + son socle &lt;br /&gt;
* 2 LED&lt;br /&gt;
* 3 Résistances&lt;br /&gt;
* 2 Roues + 1 petite roue à l'avant&lt;br /&gt;
* 2 Moteurs à courant continu&lt;br /&gt;
* 1 pont en H &lt;br /&gt;
* 1 photo résistance&lt;br /&gt;
* 1 émetteur lazer KY008&lt;br /&gt;
&lt;br /&gt;
==Avancement du projet==&lt;br /&gt;
&lt;br /&gt;
Le 1er robot est terminé.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 0355.jpg|300px]]  [[Fichier:IMG 0356.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
Le 2ème est en cours, nous avons imprimé le châssis ainsi que les roues et le socle des piles (comme on peut le voir sur la photo ci-dessous).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 0358.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
==Problemes rencontres==&lt;br /&gt;
&lt;br /&gt;
* Carte wemos 5V alors que les moteurs sont en 6V&lt;br /&gt;
* Pas eu de gestion de la vitesse&lt;br /&gt;
* Arriver a utiliser Arduino avec le wemos&lt;br /&gt;
* Arriver a detecter que le laser soit detecte sur le robot&lt;br /&gt;
&lt;br /&gt;
==Fichier==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Diaporama-HackENIB2018.odp]]&lt;br /&gt;
&lt;br /&gt;
==Code Robot==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//////////////////&lt;br /&gt;
// Mortal Robot //&lt;br /&gt;
//////////////////&lt;br /&gt;
&lt;br /&gt;
// Ce programme est inspire de : http://www.esp8266.com/viewtopic.php?f=29&amp;amp;t=6419#sthash.gd1tJhwU.dpuf, http://wikidebrouillard.org/index.php?title=Petit_Bot_un_robot_controlable_en_Wifi&lt;br /&gt;
// Sous licence CC-By-Sa&lt;br /&gt;
// Par des gens bien&lt;br /&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;
&lt;br /&gt;
//  Definition du WiFi&lt;br /&gt;
const char *nomDuReseau = &amp;quot;mortalRobot&amp;quot;;     // Nom du réseau wifi&lt;br /&gt;
const char *motDePasse = &amp;quot;&amp;quot;;    // Mot de passe du réseau wifi&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;
//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;
int life = 3; //point de vie du robot&lt;br /&gt;
bool shoot = false;&lt;br /&gt;
long shootStartTime = 0;;&lt;br /&gt;
long shootDuration = 2000;&lt;br /&gt;
int light = 0;&lt;br /&gt;
int prevLight = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&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é a l'ordinateur&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  configDuWifi();&lt;br /&gt;
  pinMode(D0, OUTPUT);&lt;br /&gt;
  pinMode(D1, OUTPUT);&lt;br /&gt;
  pinMode(D2, OUTPUT);&lt;br /&gt;
  pinMode(D3, OUTPUT);&lt;br /&gt;
  pinMode(D4, OUTPUT);&lt;br /&gt;
  pinMode(D5, OUTPUT);&lt;br /&gt;
  pinMode(D6, OUTPUT);&lt;br /&gt;
  pinMode(D7, OUTPUT);&lt;br /&gt;
  pinMode(D8, OUTPUT);&lt;br /&gt;
  //Moteur à l'arrêt&lt;br /&gt;
  //  analogWrite(D6, LOW);&lt;br /&gt;
  //  analogWrite(D7, LOW);&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;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  val = -1;&lt;br /&gt;
  monServeur.handleClient();&lt;br /&gt;
  //  lifeManage();&lt;br /&gt;
  shootManage();&lt;br /&gt;
  light = analogRead(A0);&lt;br /&gt;
  digitalWrite(D0, (light &amp;gt; prevLight+40));&lt;br /&gt;
  prevLight = light;&lt;br /&gt;
  Serial.println(analogRead(A0));&lt;br /&gt;
  //  digitalWrite(D0,analogRead(A0));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void shootManage()&lt;br /&gt;
{&lt;br /&gt;
  if (shoot)&lt;br /&gt;
  {&lt;br /&gt;
    if ((millis() - shootStartTime) &amp;gt; shootDuration) {&lt;br /&gt;
      digitalWrite(D8, false);&lt;br /&gt;
      shoot = false;&lt;br /&gt;
    } else {&lt;br /&gt;
      digitalWrite(D8, true);&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
  } else&lt;br /&gt;
  {&lt;br /&gt;
    digitalWrite(D8, false);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
bool isShoot()&lt;br /&gt;
{&lt;br /&gt;
  //  Serial.println(&amp;quot;slt&amp;quot;);&lt;br /&gt;
  //  Serial.println(analogRead(A0));&lt;br /&gt;
  return (analogRead(A0) &amp;gt; 800);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void lifeManage() //gere les points de vie et l'affichage&lt;br /&gt;
{&lt;br /&gt;
  if (isShoot())&lt;br /&gt;
  {&lt;br /&gt;
    life--;&lt;br /&gt;
  }&lt;br /&gt;
  switch (life) {&lt;br /&gt;
    case (3) :&lt;br /&gt;
      digitalWrite(D0, true);&lt;br /&gt;
      digitalWrite(D5, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case (2) :&lt;br /&gt;
      analogWrite(D0, 135);&lt;br /&gt;
      digitalWrite(D5, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case (1) :&lt;br /&gt;
      analogWrite(D0, 90);&lt;br /&gt;
      digitalWrite(D5, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case (0) :&lt;br /&gt;
      digitalWrite(D0, false);&lt;br /&gt;
      digitalWrite(D5, true);&lt;br /&gt;
      break;&lt;br /&gt;
    case (5) : //shoot&lt;br /&gt;
      Serial.println(&amp;quot;shoot&amp;quot;);&lt;br /&gt;
      shoot = true;&lt;br /&gt;
      shootStartTime = millis();&lt;br /&gt;
      break;&lt;br /&gt;
  }&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;/shoot&amp;quot;, HTTP_GET, []() {&lt;br /&gt;
    val = 5;&lt;br /&gt;
    Serial.println(&amp;quot;shoot&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;style type=\&amp;quot;text/css\&amp;quot;&amp;gt;  body { color: #212121; background-color: #F08D29 } &amp;lt;/style&amp;gt;&amp;quot;;&lt;br /&gt;
  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;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;/avance\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; height:20%; background-color:#6B6764;\&amp;quot;\&amp;gt;Avance &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/br&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;/gauche\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Gauche &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: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Droite &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;a href=\&amp;quot;/recule\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Recule &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/br&amp;gt;&amp;lt;/br&amp;gt;\r\n&amp;quot;;&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: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Stop &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/br&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;/shoot\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Shoot &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;
void instruction(int valeur) { //Cette fonction traite les instructions qui sont reçues&lt;br /&gt;
  switch (valeur) {                     // En fonction de la variable valeur on va donner un ordre aux servos&lt;br /&gt;
    case 0 : //stop&lt;br /&gt;
      digitalWrite(D1, false);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, false);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case 1 : //avance&lt;br /&gt;
      digitalWrite(D1, true);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, true);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      //      analogWrite(D6, true);&lt;br /&gt;
      //      analogWrite(D7, true);&lt;br /&gt;
      break;&lt;br /&gt;
    case 2 : //recule&lt;br /&gt;
      digitalWrite(D1, false);&lt;br /&gt;
      digitalWrite(D2, true);&lt;br /&gt;
      digitalWrite(D3, false);&lt;br /&gt;
      digitalWrite(D4, true);&lt;br /&gt;
      //      analogWrite(D6, 100);&lt;br /&gt;
      //      analogWrite(D7, 100);&lt;br /&gt;
      break;&lt;br /&gt;
    case 3 : //gauche&lt;br /&gt;
      digitalWrite(D1, true);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, false);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      //      analogWrite(D7, 180);&lt;br /&gt;
      break;&lt;br /&gt;
    case 4 : //droite&lt;br /&gt;
      digitalWrite(D1, false);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, true);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      //      analogWrite(D6, 180);&lt;br /&gt;
      break;&lt;br /&gt;
    case 5 : //shoot&lt;br /&gt;
      shoot = true;&lt;br /&gt;
      shootStartTime = millis();&lt;br /&gt;
      break;&lt;br /&gt;
  }&lt;br /&gt;
&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;
  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;
[[catégorie:enib2018]]&lt;/div&gt;</summary>
		<author><name>Phycelot</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8839</id>
		<title>Mortal robot</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8839"/>
				<updated>2018-01-19T15:27:28Z</updated>
		
		<summary type="html">&lt;p&gt;Phycelot : /* Code Robot */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sur la base des petits bots, il s'agit d'ajouter un laser et un récepteur avec un système de point de vie.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 0357.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
==Pédagogie==&lt;br /&gt;
*construire&lt;br /&gt;
*programmer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Membres de l'équipe==&lt;br /&gt;
* Prouteau Antonin&lt;br /&gt;
* Jegou Gergaud Nils&lt;br /&gt;
* Kerouanton Jeremy&lt;br /&gt;
* Ridae Hamdani&lt;br /&gt;
* Asaad ALAKOUM&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 0359.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
==Matériel pour le 1er robot==&lt;br /&gt;
&lt;br /&gt;
* Carte wemos D1 mini &lt;br /&gt;
* 1 interrupteur&lt;br /&gt;
* 4 piles + son socle &lt;br /&gt;
* 2 LED&lt;br /&gt;
* 3 Résistances&lt;br /&gt;
* 2 Roues + 1 petite roue à l'avant&lt;br /&gt;
* 2 Moteurs à courant continu&lt;br /&gt;
* 1 pont en H &lt;br /&gt;
* 1 photo résistance&lt;br /&gt;
* 1 émetteur lazer KY008&lt;br /&gt;
&lt;br /&gt;
==Avancement du projet==&lt;br /&gt;
&lt;br /&gt;
Le 1er robot est terminé.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 0355.jpg|400px]]  [[Fichier:IMG 0356.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
Le 2ème est en cours, nous avons imprimé le châssis ainsi que les roues et le socle des piles (comme on peut le voir sur la photo ci-dessous).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 0358.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
==Problemes rencontres==&lt;br /&gt;
&lt;br /&gt;
* Carte wemos 5V alors que les moteurs sont en 6V&lt;br /&gt;
* Pas eu de gestion de la vitesse&lt;br /&gt;
* Arriver a utiliser Arduino avec le wemos&lt;br /&gt;
* Arriver a detecter que le laser soit detecte sur le robot&lt;br /&gt;
&lt;br /&gt;
==Fichier==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Diaporama-HackENIB2018.odp]]&lt;br /&gt;
&lt;br /&gt;
==Code Robot==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//////////////////&lt;br /&gt;
// Mortal Robot //&lt;br /&gt;
//////////////////&lt;br /&gt;
&lt;br /&gt;
// Ce programme est inspire de : http://www.esp8266.com/viewtopic.php?f=29&amp;amp;t=6419#sthash.gd1tJhwU.dpuf, http://wikidebrouillard.org/index.php?title=Petit_Bot_un_robot_controlable_en_Wifi&lt;br /&gt;
// Sous licence CC-By-Sa&lt;br /&gt;
// Par des gens bien&lt;br /&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;
&lt;br /&gt;
//  Definition du WiFi&lt;br /&gt;
const char *nomDuReseau = &amp;quot;mortalRobot&amp;quot;;     // Nom du réseau wifi&lt;br /&gt;
const char *motDePasse = &amp;quot;&amp;quot;;    // Mot de passe du réseau wifi&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;
//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;
int life = 3; //point de vie du robot&lt;br /&gt;
bool shoot = false;&lt;br /&gt;
long shootStartTime = 0;;&lt;br /&gt;
long shootDuration = 2000;&lt;br /&gt;
int light = 0;&lt;br /&gt;
int prevLight = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&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é a l'ordinateur&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  configDuWifi();&lt;br /&gt;
  pinMode(D0, OUTPUT);&lt;br /&gt;
  pinMode(D1, OUTPUT);&lt;br /&gt;
  pinMode(D2, OUTPUT);&lt;br /&gt;
  pinMode(D3, OUTPUT);&lt;br /&gt;
  pinMode(D4, OUTPUT);&lt;br /&gt;
  pinMode(D5, OUTPUT);&lt;br /&gt;
  pinMode(D6, OUTPUT);&lt;br /&gt;
  pinMode(D7, OUTPUT);&lt;br /&gt;
  pinMode(D8, OUTPUT);&lt;br /&gt;
  //Moteur à l'arrêt&lt;br /&gt;
  //  analogWrite(D6, LOW);&lt;br /&gt;
  //  analogWrite(D7, LOW);&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;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  val = -1;&lt;br /&gt;
  monServeur.handleClient();&lt;br /&gt;
  //  lifeManage();&lt;br /&gt;
  shootManage();&lt;br /&gt;
  light = analogRead(A0);&lt;br /&gt;
  digitalWrite(D0, (light &amp;gt; prevLight+40));&lt;br /&gt;
  prevLight = light;&lt;br /&gt;
  Serial.println(analogRead(A0));&lt;br /&gt;
  //  digitalWrite(D0,analogRead(A0));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void shootManage()&lt;br /&gt;
{&lt;br /&gt;
  if (shoot)&lt;br /&gt;
  {&lt;br /&gt;
    if ((millis() - shootStartTime) &amp;gt; shootDuration) {&lt;br /&gt;
      digitalWrite(D8, false);&lt;br /&gt;
      shoot = false;&lt;br /&gt;
    } else {&lt;br /&gt;
      digitalWrite(D8, true);&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
  } else&lt;br /&gt;
  {&lt;br /&gt;
    digitalWrite(D8, false);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
bool isShoot()&lt;br /&gt;
{&lt;br /&gt;
  //  Serial.println(&amp;quot;slt&amp;quot;);&lt;br /&gt;
  //  Serial.println(analogRead(A0));&lt;br /&gt;
  return (analogRead(A0) &amp;gt; 800);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void lifeManage() //gere les points de vie et l'affichage&lt;br /&gt;
{&lt;br /&gt;
  if (isShoot())&lt;br /&gt;
  {&lt;br /&gt;
    life--;&lt;br /&gt;
  }&lt;br /&gt;
  switch (life) {&lt;br /&gt;
    case (3) :&lt;br /&gt;
      digitalWrite(D0, true);&lt;br /&gt;
      digitalWrite(D5, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case (2) :&lt;br /&gt;
      analogWrite(D0, 135);&lt;br /&gt;
      digitalWrite(D5, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case (1) :&lt;br /&gt;
      analogWrite(D0, 90);&lt;br /&gt;
      digitalWrite(D5, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case (0) :&lt;br /&gt;
      digitalWrite(D0, false);&lt;br /&gt;
      digitalWrite(D5, true);&lt;br /&gt;
      break;&lt;br /&gt;
    case (5) : //shoot&lt;br /&gt;
      Serial.println(&amp;quot;shoot&amp;quot;);&lt;br /&gt;
      shoot = true;&lt;br /&gt;
      shootStartTime = millis();&lt;br /&gt;
      break;&lt;br /&gt;
  }&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;/shoot&amp;quot;, HTTP_GET, []() {&lt;br /&gt;
    val = 5;&lt;br /&gt;
    Serial.println(&amp;quot;shoot&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;style type=\&amp;quot;text/css\&amp;quot;&amp;gt;  body { color: #212121; background-color: #F08D29 } &amp;lt;/style&amp;gt;&amp;quot;;&lt;br /&gt;
  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;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;/avance\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; height:20%; background-color:#6B6764;\&amp;quot;\&amp;gt;Avance &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/br&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;/gauche\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Gauche &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: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Droite &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;a href=\&amp;quot;/recule\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Recule &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/br&amp;gt;&amp;lt;/br&amp;gt;\r\n&amp;quot;;&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: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Stop &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/br&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;/shoot\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Shoot &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;
void instruction(int valeur) { //Cette fonction traite les instructions qui sont reçues&lt;br /&gt;
  switch (valeur) {                     // En fonction de la variable valeur on va donner un ordre aux servos&lt;br /&gt;
    case 0 : //stop&lt;br /&gt;
      digitalWrite(D1, false);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, false);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case 1 : //avance&lt;br /&gt;
      digitalWrite(D1, true);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, true);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      //      analogWrite(D6, true);&lt;br /&gt;
      //      analogWrite(D7, true);&lt;br /&gt;
      break;&lt;br /&gt;
    case 2 : //recule&lt;br /&gt;
      digitalWrite(D1, false);&lt;br /&gt;
      digitalWrite(D2, true);&lt;br /&gt;
      digitalWrite(D3, false);&lt;br /&gt;
      digitalWrite(D4, true);&lt;br /&gt;
      //      analogWrite(D6, 100);&lt;br /&gt;
      //      analogWrite(D7, 100);&lt;br /&gt;
      break;&lt;br /&gt;
    case 3 : //gauche&lt;br /&gt;
      digitalWrite(D1, true);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, false);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      //      analogWrite(D7, 180);&lt;br /&gt;
      break;&lt;br /&gt;
    case 4 : //droite&lt;br /&gt;
      digitalWrite(D1, false);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, true);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      //      analogWrite(D6, 180);&lt;br /&gt;
      break;&lt;br /&gt;
    case 5 : //shoot&lt;br /&gt;
      shoot = true;&lt;br /&gt;
      shootStartTime = millis();&lt;br /&gt;
      break;&lt;br /&gt;
  }&lt;br /&gt;
&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;
  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;
[[catégorie:enib2018]]&lt;/div&gt;</summary>
		<author><name>Phycelot</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8838</id>
		<title>Mortal robot</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8838"/>
				<updated>2018-01-19T15:27:25Z</updated>
		
		<summary type="html">&lt;p&gt;Phycelot : /* Avancement du projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sur la base des petits bots, il s'agit d'ajouter un laser et un récepteur avec un système de point de vie.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 0357.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
==Pédagogie==&lt;br /&gt;
*construire&lt;br /&gt;
*programmer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Membres de l'équipe==&lt;br /&gt;
* Prouteau Antonin&lt;br /&gt;
* Jegou Gergaud Nils&lt;br /&gt;
* Kerouanton Jeremy&lt;br /&gt;
* Ridae Hamdani&lt;br /&gt;
* Asaad ALAKOUM&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 0359.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
==Matériel pour le 1er robot==&lt;br /&gt;
&lt;br /&gt;
* Carte wemos D1 mini &lt;br /&gt;
* 1 interrupteur&lt;br /&gt;
* 4 piles + son socle &lt;br /&gt;
* 2 LED&lt;br /&gt;
* 3 Résistances&lt;br /&gt;
* 2 Roues + 1 petite roue à l'avant&lt;br /&gt;
* 2 Moteurs à courant continu&lt;br /&gt;
* 1 pont en H &lt;br /&gt;
* 1 photo résistance&lt;br /&gt;
* 1 émetteur lazer KY008&lt;br /&gt;
&lt;br /&gt;
==Avancement du projet==&lt;br /&gt;
&lt;br /&gt;
Le 1er robot est terminé.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 0355.jpg|400px]]  [[Fichier:IMG 0356.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
Le 2ème est en cours, nous avons imprimé le châssis ainsi que les roues et le socle des piles (comme on peut le voir sur la photo ci-dessous).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 0358.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
==Problemes rencontres==&lt;br /&gt;
&lt;br /&gt;
* Carte wemos 5V alors que les moteurs sont en 6V&lt;br /&gt;
* Pas eu de gestion de la vitesse&lt;br /&gt;
* Arriver a utiliser Arduino avec le wemos&lt;br /&gt;
* Arriver a detecter que le laser soit detecte sur le robot&lt;br /&gt;
&lt;br /&gt;
==Fichier==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Diaporama-HackENIB2018.odp]]&lt;br /&gt;
&lt;br /&gt;
==Code Robot==&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
//////////////////&lt;br /&gt;
// Mortal Robot //&lt;br /&gt;
//////////////////&lt;br /&gt;
&lt;br /&gt;
// Ce programme est inspire de : http://www.esp8266.com/viewtopic.php?f=29&amp;amp;t=6419#sthash.gd1tJhwU.dpuf, http://wikidebrouillard.org/index.php?title=Petit_Bot_un_robot_controlable_en_Wifi&lt;br /&gt;
// Sous licence CC-By-Sa&lt;br /&gt;
// Par des gens bien&lt;br /&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;
&lt;br /&gt;
//  Definition du WiFi&lt;br /&gt;
const char *nomDuReseau = &amp;quot;mortalRobot&amp;quot;;     // Nom du réseau wifi&lt;br /&gt;
const char *motDePasse = &amp;quot;&amp;quot;;    // Mot de passe du réseau wifi&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;
//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;
int life = 3; //point de vie du robot&lt;br /&gt;
bool shoot = false;&lt;br /&gt;
long shootStartTime = 0;;&lt;br /&gt;
long shootDuration = 2000;&lt;br /&gt;
int light = 0;&lt;br /&gt;
int prevLight = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&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é a l'ordinateur&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  configDuWifi();&lt;br /&gt;
  pinMode(D0, OUTPUT);&lt;br /&gt;
  pinMode(D1, OUTPUT);&lt;br /&gt;
  pinMode(D2, OUTPUT);&lt;br /&gt;
  pinMode(D3, OUTPUT);&lt;br /&gt;
  pinMode(D4, OUTPUT);&lt;br /&gt;
  pinMode(D5, OUTPUT);&lt;br /&gt;
  pinMode(D6, OUTPUT);&lt;br /&gt;
  pinMode(D7, OUTPUT);&lt;br /&gt;
  pinMode(D8, OUTPUT);&lt;br /&gt;
  //Moteur à l'arrêt&lt;br /&gt;
  //  analogWrite(D6, LOW);&lt;br /&gt;
  //  analogWrite(D7, LOW);&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;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  val = -1;&lt;br /&gt;
  monServeur.handleClient();&lt;br /&gt;
  //  lifeManage();&lt;br /&gt;
  shootManage();&lt;br /&gt;
  light = analogRead(A0);&lt;br /&gt;
  digitalWrite(D0, (light &amp;gt; prevLight+40));&lt;br /&gt;
  prevLight = light;&lt;br /&gt;
  Serial.println(analogRead(A0));&lt;br /&gt;
  //  digitalWrite(D0,analogRead(A0));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void shootManage()&lt;br /&gt;
{&lt;br /&gt;
  if (shoot)&lt;br /&gt;
  {&lt;br /&gt;
    if ((millis() - shootStartTime) &amp;gt; shootDuration) {&lt;br /&gt;
      digitalWrite(D8, false);&lt;br /&gt;
      shoot = false;&lt;br /&gt;
    } else {&lt;br /&gt;
      digitalWrite(D8, true);&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
  } else&lt;br /&gt;
  {&lt;br /&gt;
    digitalWrite(D8, false);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
bool isShoot()&lt;br /&gt;
{&lt;br /&gt;
  //  Serial.println(&amp;quot;slt&amp;quot;);&lt;br /&gt;
  //  Serial.println(analogRead(A0));&lt;br /&gt;
  return (analogRead(A0) &amp;gt; 800);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void lifeManage() //gere les points de vie et l'affichage&lt;br /&gt;
{&lt;br /&gt;
  if (isShoot())&lt;br /&gt;
  {&lt;br /&gt;
    life--;&lt;br /&gt;
  }&lt;br /&gt;
  switch (life) {&lt;br /&gt;
    case (3) :&lt;br /&gt;
      digitalWrite(D0, true);&lt;br /&gt;
      digitalWrite(D5, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case (2) :&lt;br /&gt;
      analogWrite(D0, 135);&lt;br /&gt;
      digitalWrite(D5, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case (1) :&lt;br /&gt;
      analogWrite(D0, 90);&lt;br /&gt;
      digitalWrite(D5, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case (0) :&lt;br /&gt;
      digitalWrite(D0, false);&lt;br /&gt;
      digitalWrite(D5, true);&lt;br /&gt;
      break;&lt;br /&gt;
    case (5) : //shoot&lt;br /&gt;
      Serial.println(&amp;quot;shoot&amp;quot;);&lt;br /&gt;
      shoot = true;&lt;br /&gt;
      shootStartTime = millis();&lt;br /&gt;
      break;&lt;br /&gt;
  }&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;/shoot&amp;quot;, HTTP_GET, []() {&lt;br /&gt;
    val = 5;&lt;br /&gt;
    Serial.println(&amp;quot;shoot&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;style type=\&amp;quot;text/css\&amp;quot;&amp;gt;  body { color: #212121; background-color: #F08D29 } &amp;lt;/style&amp;gt;&amp;quot;;&lt;br /&gt;
  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;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;/avance\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; height:20%; background-color:#6B6764;\&amp;quot;\&amp;gt;Avance &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/br&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;/gauche\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Gauche &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: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Droite &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;a href=\&amp;quot;/recule\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Recule &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/br&amp;gt;&amp;lt;/br&amp;gt;\r\n&amp;quot;;&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: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Stop &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/br&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;/shoot\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Shoot &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;
void instruction(int valeur) { //Cette fonction traite les instructions qui sont reçues&lt;br /&gt;
  switch (valeur) {                     // En fonction de la variable valeur on va donner un ordre aux servos&lt;br /&gt;
    case 0 : //stop&lt;br /&gt;
      digitalWrite(D1, false);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, false);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case 1 : //avance&lt;br /&gt;
      digitalWrite(D1, true);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, true);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      //      analogWrite(D6, true);&lt;br /&gt;
      //      analogWrite(D7, true);&lt;br /&gt;
      break;&lt;br /&gt;
    case 2 : //recule&lt;br /&gt;
      digitalWrite(D1, false);&lt;br /&gt;
      digitalWrite(D2, true);&lt;br /&gt;
      digitalWrite(D3, false);&lt;br /&gt;
      digitalWrite(D4, true);&lt;br /&gt;
      //      analogWrite(D6, 100);&lt;br /&gt;
      //      analogWrite(D7, 100);&lt;br /&gt;
      break;&lt;br /&gt;
    case 3 : //gauche&lt;br /&gt;
      digitalWrite(D1, true);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, false);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      //      analogWrite(D7, 180);&lt;br /&gt;
      break;&lt;br /&gt;
    case 4 : //droite&lt;br /&gt;
      digitalWrite(D1, false);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, true);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      //      analogWrite(D6, 180);&lt;br /&gt;
      break;&lt;br /&gt;
    case 5 : //shoot&lt;br /&gt;
      shoot = true;&lt;br /&gt;
      shootStartTime = millis();&lt;br /&gt;
      break;&lt;br /&gt;
  }&lt;br /&gt;
&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;
  return;                                  // on retourne à l'endroit ou la fonction a été appelée.&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[catégorie:enib2018]]&lt;/div&gt;</summary>
		<author><name>Phycelot</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:IMG_0355.jpg&amp;diff=8837</id>
		<title>Fichier:IMG 0355.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:IMG_0355.jpg&amp;diff=8837"/>
				<updated>2018-01-19T15:26:13Z</updated>
		
		<summary type="html">&lt;p&gt;Phycelot : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Phycelot</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:IMG_0356.jpg&amp;diff=8836</id>
		<title>Fichier:IMG 0356.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:IMG_0356.jpg&amp;diff=8836"/>
				<updated>2018-01-19T15:25:53Z</updated>
		
		<summary type="html">&lt;p&gt;Phycelot : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Phycelot</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8835</id>
		<title>Mortal robot</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8835"/>
				<updated>2018-01-19T15:24:25Z</updated>
		
		<summary type="html">&lt;p&gt;Phycelot : /* Avancement du projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sur la base des petits bots, il s'agit d'ajouter un laser et un récepteur avec un système de point de vie.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 0357.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
==Pédagogie==&lt;br /&gt;
*construire&lt;br /&gt;
*programmer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Membres de l'équipe==&lt;br /&gt;
* Prouteau Antonin&lt;br /&gt;
* Jegou Gergaud Nils&lt;br /&gt;
* Kerouanton Jeremy&lt;br /&gt;
* Ridae Hamdani&lt;br /&gt;
* Asaad ALAKOUM&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 0359.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
==Matériel pour le 1er robot==&lt;br /&gt;
&lt;br /&gt;
* Carte wemos D1 mini &lt;br /&gt;
* 1 interrupteur&lt;br /&gt;
* 4 piles + son socle &lt;br /&gt;
* 2 LED&lt;br /&gt;
* 3 Résistances&lt;br /&gt;
* 2 Roues + 1 petite roue à l'avant&lt;br /&gt;
* 2 Moteurs à courant continu&lt;br /&gt;
* 1 pont en H &lt;br /&gt;
* 1 photo résistance&lt;br /&gt;
* 1 émetteur lazer KY008&lt;br /&gt;
&lt;br /&gt;
==Avancement du projet==&lt;br /&gt;
&lt;br /&gt;
Le 1er robot est terminé.&lt;br /&gt;
&lt;br /&gt;
Le 2ème est en cours, nous avons imprimé le châssis ainsi que les roues et le socle des piles (comme on peut le voir sur la photo ci-dessous).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 0358.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
==Problemes rencontres==&lt;br /&gt;
&lt;br /&gt;
* Carte wemos 5V alors que les moteurs sont en 6V&lt;br /&gt;
* Pas eu de gestion de la vitesse&lt;br /&gt;
* Arriver a utiliser Arduino avec le wemos&lt;br /&gt;
* Arriver a detecter que le laser soit detecte sur le robot&lt;br /&gt;
&lt;br /&gt;
==Fichier==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Diaporama-HackENIB2018.odp]]&lt;br /&gt;
&lt;br /&gt;
==Code Robot==&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
//////////////////&lt;br /&gt;
// Mortal Robot //&lt;br /&gt;
//////////////////&lt;br /&gt;
&lt;br /&gt;
// Ce programme est inspire de : http://www.esp8266.com/viewtopic.php?f=29&amp;amp;t=6419#sthash.gd1tJhwU.dpuf, http://wikidebrouillard.org/index.php?title=Petit_Bot_un_robot_controlable_en_Wifi&lt;br /&gt;
// Sous licence CC-By-Sa&lt;br /&gt;
// Par des gens bien&lt;br /&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;
&lt;br /&gt;
//  Definition du WiFi&lt;br /&gt;
const char *nomDuReseau = &amp;quot;mortalRobot&amp;quot;;     // Nom du réseau wifi&lt;br /&gt;
const char *motDePasse = &amp;quot;&amp;quot;;    // Mot de passe du réseau wifi&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;
//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;
int life = 3; //point de vie du robot&lt;br /&gt;
bool shoot = false;&lt;br /&gt;
long shootStartTime = 0;;&lt;br /&gt;
long shootDuration = 2000;&lt;br /&gt;
int light = 0;&lt;br /&gt;
int prevLight = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&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é a l'ordinateur&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  configDuWifi();&lt;br /&gt;
  pinMode(D0, OUTPUT);&lt;br /&gt;
  pinMode(D1, OUTPUT);&lt;br /&gt;
  pinMode(D2, OUTPUT);&lt;br /&gt;
  pinMode(D3, OUTPUT);&lt;br /&gt;
  pinMode(D4, OUTPUT);&lt;br /&gt;
  pinMode(D5, OUTPUT);&lt;br /&gt;
  pinMode(D6, OUTPUT);&lt;br /&gt;
  pinMode(D7, OUTPUT);&lt;br /&gt;
  pinMode(D8, OUTPUT);&lt;br /&gt;
  //Moteur à l'arrêt&lt;br /&gt;
  //  analogWrite(D6, LOW);&lt;br /&gt;
  //  analogWrite(D7, LOW);&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;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  val = -1;&lt;br /&gt;
  monServeur.handleClient();&lt;br /&gt;
  //  lifeManage();&lt;br /&gt;
  shootManage();&lt;br /&gt;
  light = analogRead(A0);&lt;br /&gt;
  digitalWrite(D0, (light &amp;gt; prevLight+40));&lt;br /&gt;
  prevLight = light;&lt;br /&gt;
  Serial.println(analogRead(A0));&lt;br /&gt;
  //  digitalWrite(D0,analogRead(A0));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void shootManage()&lt;br /&gt;
{&lt;br /&gt;
  if (shoot)&lt;br /&gt;
  {&lt;br /&gt;
    if ((millis() - shootStartTime) &amp;gt; shootDuration) {&lt;br /&gt;
      digitalWrite(D8, false);&lt;br /&gt;
      shoot = false;&lt;br /&gt;
    } else {&lt;br /&gt;
      digitalWrite(D8, true);&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
  } else&lt;br /&gt;
  {&lt;br /&gt;
    digitalWrite(D8, false);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
bool isShoot()&lt;br /&gt;
{&lt;br /&gt;
  //  Serial.println(&amp;quot;slt&amp;quot;);&lt;br /&gt;
  //  Serial.println(analogRead(A0));&lt;br /&gt;
  return (analogRead(A0) &amp;gt; 800);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void lifeManage() //gere les points de vie et l'affichage&lt;br /&gt;
{&lt;br /&gt;
  if (isShoot())&lt;br /&gt;
  {&lt;br /&gt;
    life--;&lt;br /&gt;
  }&lt;br /&gt;
  switch (life) {&lt;br /&gt;
    case (3) :&lt;br /&gt;
      digitalWrite(D0, true);&lt;br /&gt;
      digitalWrite(D5, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case (2) :&lt;br /&gt;
      analogWrite(D0, 135);&lt;br /&gt;
      digitalWrite(D5, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case (1) :&lt;br /&gt;
      analogWrite(D0, 90);&lt;br /&gt;
      digitalWrite(D5, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case (0) :&lt;br /&gt;
      digitalWrite(D0, false);&lt;br /&gt;
      digitalWrite(D5, true);&lt;br /&gt;
      break;&lt;br /&gt;
    case (5) : //shoot&lt;br /&gt;
      Serial.println(&amp;quot;shoot&amp;quot;);&lt;br /&gt;
      shoot = true;&lt;br /&gt;
      shootStartTime = millis();&lt;br /&gt;
      break;&lt;br /&gt;
  }&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;/shoot&amp;quot;, HTTP_GET, []() {&lt;br /&gt;
    val = 5;&lt;br /&gt;
    Serial.println(&amp;quot;shoot&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;style type=\&amp;quot;text/css\&amp;quot;&amp;gt;  body { color: #212121; background-color: #F08D29 } &amp;lt;/style&amp;gt;&amp;quot;;&lt;br /&gt;
  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;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;/avance\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; height:20%; background-color:#6B6764;\&amp;quot;\&amp;gt;Avance &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/br&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;/gauche\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Gauche &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: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Droite &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;a href=\&amp;quot;/recule\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Recule &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/br&amp;gt;&amp;lt;/br&amp;gt;\r\n&amp;quot;;&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: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Stop &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/br&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;/shoot\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Shoot &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;
void instruction(int valeur) { //Cette fonction traite les instructions qui sont reçues&lt;br /&gt;
  switch (valeur) {                     // En fonction de la variable valeur on va donner un ordre aux servos&lt;br /&gt;
    case 0 : //stop&lt;br /&gt;
      digitalWrite(D1, false);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, false);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case 1 : //avance&lt;br /&gt;
      digitalWrite(D1, true);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, true);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      //      analogWrite(D6, true);&lt;br /&gt;
      //      analogWrite(D7, true);&lt;br /&gt;
      break;&lt;br /&gt;
    case 2 : //recule&lt;br /&gt;
      digitalWrite(D1, false);&lt;br /&gt;
      digitalWrite(D2, true);&lt;br /&gt;
      digitalWrite(D3, false);&lt;br /&gt;
      digitalWrite(D4, true);&lt;br /&gt;
      //      analogWrite(D6, 100);&lt;br /&gt;
      //      analogWrite(D7, 100);&lt;br /&gt;
      break;&lt;br /&gt;
    case 3 : //gauche&lt;br /&gt;
      digitalWrite(D1, true);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, false);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      //      analogWrite(D7, 180);&lt;br /&gt;
      break;&lt;br /&gt;
    case 4 : //droite&lt;br /&gt;
      digitalWrite(D1, false);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, true);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      //      analogWrite(D6, 180);&lt;br /&gt;
      break;&lt;br /&gt;
    case 5 : //shoot&lt;br /&gt;
      shoot = true;&lt;br /&gt;
      shootStartTime = millis();&lt;br /&gt;
      break;&lt;br /&gt;
  }&lt;br /&gt;
&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;
  return;                                  // on retourne à l'endroit ou la fonction a été appelée.&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[catégorie:enib2018]]&lt;/div&gt;</summary>
		<author><name>Phycelot</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8833</id>
		<title>Mortal robot</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8833"/>
				<updated>2018-01-19T15:23:04Z</updated>
		
		<summary type="html">&lt;p&gt;Phycelot : /* Avancement du projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sur la base des petits bots, il s'agit d'ajouter un laser et un récepteur avec un système de point de vie.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 0357.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
==Pédagogie==&lt;br /&gt;
*construire&lt;br /&gt;
*programmer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Membres de l'équipe==&lt;br /&gt;
* Prouteau Antonin&lt;br /&gt;
* Jegou Gergaud Nils&lt;br /&gt;
* Kerouanton Jeremy&lt;br /&gt;
* Ridae Hamdani&lt;br /&gt;
* Asaad ALAKOUM&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 0359.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
==Matériel pour le 1er robot==&lt;br /&gt;
&lt;br /&gt;
* Carte wemos D1 mini &lt;br /&gt;
* 1 interrupteur&lt;br /&gt;
* 4 piles + son socle &lt;br /&gt;
* 2 LED&lt;br /&gt;
* 3 Résistances&lt;br /&gt;
* 2 Roues + 1 petite roue à l'avant&lt;br /&gt;
* 2 Moteurs à courant continu&lt;br /&gt;
* 1 pont en H &lt;br /&gt;
* 1 photo résistance&lt;br /&gt;
* 1 émetteur lazer KY008&lt;br /&gt;
&lt;br /&gt;
==Avancement du projet==&lt;br /&gt;
&lt;br /&gt;
Le 1er robot est terminé.&lt;br /&gt;
&lt;br /&gt;
Le 2ème est en cours, nous avons imprimé le châssis ainsi que les roues et le socle des piles .&lt;br /&gt;
[[Fichier:IMG 0358.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
==Problemes rencontres==&lt;br /&gt;
&lt;br /&gt;
* Carte wemos 5V alors que les moteurs sont en 6V&lt;br /&gt;
* Pas eu de gestion de la vitesse&lt;br /&gt;
* Arriver a utiliser Arduino avec le wemos&lt;br /&gt;
* Arriver a detecter que le laser soit detecte sur le robot&lt;br /&gt;
&lt;br /&gt;
==Fichier==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Diaporama-HackENIB2018.odp]]&lt;br /&gt;
&lt;br /&gt;
==Code Robot==&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
//////////////////&lt;br /&gt;
// Mortal Robot //&lt;br /&gt;
//////////////////&lt;br /&gt;
&lt;br /&gt;
// Ce programme est inspire de : http://www.esp8266.com/viewtopic.php?f=29&amp;amp;t=6419#sthash.gd1tJhwU.dpuf, http://wikidebrouillard.org/index.php?title=Petit_Bot_un_robot_controlable_en_Wifi&lt;br /&gt;
// Sous licence CC-By-Sa&lt;br /&gt;
// Par des gens bien&lt;br /&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;
&lt;br /&gt;
//  Definition du WiFi&lt;br /&gt;
const char *nomDuReseau = &amp;quot;mortalRobot&amp;quot;;     // Nom du réseau wifi&lt;br /&gt;
const char *motDePasse = &amp;quot;&amp;quot;;    // Mot de passe du réseau wifi&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;
//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;
int life = 3; //point de vie du robot&lt;br /&gt;
bool shoot = false;&lt;br /&gt;
long shootStartTime = 0;;&lt;br /&gt;
long shootDuration = 2000;&lt;br /&gt;
int light = 0;&lt;br /&gt;
int prevLight = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&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é a l'ordinateur&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  configDuWifi();&lt;br /&gt;
  pinMode(D0, OUTPUT);&lt;br /&gt;
  pinMode(D1, OUTPUT);&lt;br /&gt;
  pinMode(D2, OUTPUT);&lt;br /&gt;
  pinMode(D3, OUTPUT);&lt;br /&gt;
  pinMode(D4, OUTPUT);&lt;br /&gt;
  pinMode(D5, OUTPUT);&lt;br /&gt;
  pinMode(D6, OUTPUT);&lt;br /&gt;
  pinMode(D7, OUTPUT);&lt;br /&gt;
  pinMode(D8, OUTPUT);&lt;br /&gt;
  //Moteur à l'arrêt&lt;br /&gt;
  //  analogWrite(D6, LOW);&lt;br /&gt;
  //  analogWrite(D7, LOW);&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;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  val = -1;&lt;br /&gt;
  monServeur.handleClient();&lt;br /&gt;
  //  lifeManage();&lt;br /&gt;
  shootManage();&lt;br /&gt;
  light = analogRead(A0);&lt;br /&gt;
  digitalWrite(D0, (light &amp;gt; prevLight+40));&lt;br /&gt;
  prevLight = light;&lt;br /&gt;
  Serial.println(analogRead(A0));&lt;br /&gt;
  //  digitalWrite(D0,analogRead(A0));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void shootManage()&lt;br /&gt;
{&lt;br /&gt;
  if (shoot)&lt;br /&gt;
  {&lt;br /&gt;
    if ((millis() - shootStartTime) &amp;gt; shootDuration) {&lt;br /&gt;
      digitalWrite(D8, false);&lt;br /&gt;
      shoot = false;&lt;br /&gt;
    } else {&lt;br /&gt;
      digitalWrite(D8, true);&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
  } else&lt;br /&gt;
  {&lt;br /&gt;
    digitalWrite(D8, false);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
bool isShoot()&lt;br /&gt;
{&lt;br /&gt;
  //  Serial.println(&amp;quot;slt&amp;quot;);&lt;br /&gt;
  //  Serial.println(analogRead(A0));&lt;br /&gt;
  return (analogRead(A0) &amp;gt; 800);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void lifeManage() //gere les points de vie et l'affichage&lt;br /&gt;
{&lt;br /&gt;
  if (isShoot())&lt;br /&gt;
  {&lt;br /&gt;
    life--;&lt;br /&gt;
  }&lt;br /&gt;
  switch (life) {&lt;br /&gt;
    case (3) :&lt;br /&gt;
      digitalWrite(D0, true);&lt;br /&gt;
      digitalWrite(D5, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case (2) :&lt;br /&gt;
      analogWrite(D0, 135);&lt;br /&gt;
      digitalWrite(D5, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case (1) :&lt;br /&gt;
      analogWrite(D0, 90);&lt;br /&gt;
      digitalWrite(D5, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case (0) :&lt;br /&gt;
      digitalWrite(D0, false);&lt;br /&gt;
      digitalWrite(D5, true);&lt;br /&gt;
      break;&lt;br /&gt;
    case (5) : //shoot&lt;br /&gt;
      Serial.println(&amp;quot;shoot&amp;quot;);&lt;br /&gt;
      shoot = true;&lt;br /&gt;
      shootStartTime = millis();&lt;br /&gt;
      break;&lt;br /&gt;
  }&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;/shoot&amp;quot;, HTTP_GET, []() {&lt;br /&gt;
    val = 5;&lt;br /&gt;
    Serial.println(&amp;quot;shoot&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;style type=\&amp;quot;text/css\&amp;quot;&amp;gt;  body { color: #212121; background-color: #F08D29 } &amp;lt;/style&amp;gt;&amp;quot;;&lt;br /&gt;
  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;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;/avance\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; height:20%; background-color:#6B6764;\&amp;quot;\&amp;gt;Avance &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/br&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;/gauche\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Gauche &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: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Droite &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;a href=\&amp;quot;/recule\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Recule &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/br&amp;gt;&amp;lt;/br&amp;gt;\r\n&amp;quot;;&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: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Stop &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/br&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;/shoot\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Shoot &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;
void instruction(int valeur) { //Cette fonction traite les instructions qui sont reçues&lt;br /&gt;
  switch (valeur) {                     // En fonction de la variable valeur on va donner un ordre aux servos&lt;br /&gt;
    case 0 : //stop&lt;br /&gt;
      digitalWrite(D1, false);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, false);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case 1 : //avance&lt;br /&gt;
      digitalWrite(D1, true);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, true);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      //      analogWrite(D6, true);&lt;br /&gt;
      //      analogWrite(D7, true);&lt;br /&gt;
      break;&lt;br /&gt;
    case 2 : //recule&lt;br /&gt;
      digitalWrite(D1, false);&lt;br /&gt;
      digitalWrite(D2, true);&lt;br /&gt;
      digitalWrite(D3, false);&lt;br /&gt;
      digitalWrite(D4, true);&lt;br /&gt;
      //      analogWrite(D6, 100);&lt;br /&gt;
      //      analogWrite(D7, 100);&lt;br /&gt;
      break;&lt;br /&gt;
    case 3 : //gauche&lt;br /&gt;
      digitalWrite(D1, true);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, false);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      //      analogWrite(D7, 180);&lt;br /&gt;
      break;&lt;br /&gt;
    case 4 : //droite&lt;br /&gt;
      digitalWrite(D1, false);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, true);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      //      analogWrite(D6, 180);&lt;br /&gt;
      break;&lt;br /&gt;
    case 5 : //shoot&lt;br /&gt;
      shoot = true;&lt;br /&gt;
      shootStartTime = millis();&lt;br /&gt;
      break;&lt;br /&gt;
  }&lt;br /&gt;
&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;
  return;                                  // on retourne à l'endroit ou la fonction a été appelée.&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[catégorie:enib2018]]&lt;/div&gt;</summary>
		<author><name>Phycelot</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8832</id>
		<title>Mortal robot</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8832"/>
				<updated>2018-01-19T15:21:41Z</updated>
		
		<summary type="html">&lt;p&gt;Phycelot : /* Avancement du projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sur la base des petits bots, il s'agit d'ajouter un laser et un récepteur avec un système de point de vie.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 0357.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
==Pédagogie==&lt;br /&gt;
*construire&lt;br /&gt;
*programmer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Membres de l'équipe==&lt;br /&gt;
* Prouteau Antonin&lt;br /&gt;
* Jegou Gergaud Nils&lt;br /&gt;
* Kerouanton Jeremy&lt;br /&gt;
* Ridae Hamdani&lt;br /&gt;
* Asaad ALAKOUM&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 0359.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
==Matériel pour le 1er robot==&lt;br /&gt;
&lt;br /&gt;
* Carte wemos D1 mini &lt;br /&gt;
* 1 interrupteur&lt;br /&gt;
* 4 piles + son socle &lt;br /&gt;
* 2 LED&lt;br /&gt;
* 3 Résistances&lt;br /&gt;
* 2 Roues + 1 petite roue à l'avant&lt;br /&gt;
* 2 Moteurs à courant continu&lt;br /&gt;
* 1 pont en H &lt;br /&gt;
* 1 photo résistance&lt;br /&gt;
* 1 émetteur lazer KY008&lt;br /&gt;
&lt;br /&gt;
==Avancement du projet==&lt;br /&gt;
&lt;br /&gt;
Le 1er robot est terminé.&lt;br /&gt;
Le 2ème est en cours, nous avons imprimé le châssis ainsi que les roues et le socle des piles .&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 0358.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
==Problemes rencontres==&lt;br /&gt;
&lt;br /&gt;
* Carte wemos 5V alors que les moteurs sont en 6V&lt;br /&gt;
* Pas eu de gestion de la vitesse&lt;br /&gt;
* Arriver a utiliser Arduino avec le wemos&lt;br /&gt;
* Arriver a detecter que le laser soit detecte sur le robot&lt;br /&gt;
&lt;br /&gt;
==Fichier==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Diaporama-HackENIB2018.odp]]&lt;br /&gt;
&lt;br /&gt;
==Code Robot==&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
//////////////////&lt;br /&gt;
// Mortal Robot //&lt;br /&gt;
//////////////////&lt;br /&gt;
&lt;br /&gt;
// Ce programme est inspire de : http://www.esp8266.com/viewtopic.php?f=29&amp;amp;t=6419#sthash.gd1tJhwU.dpuf, http://wikidebrouillard.org/index.php?title=Petit_Bot_un_robot_controlable_en_Wifi&lt;br /&gt;
// Sous licence CC-By-Sa&lt;br /&gt;
// Par des gens bien&lt;br /&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;
&lt;br /&gt;
//  Definition du WiFi&lt;br /&gt;
const char *nomDuReseau = &amp;quot;mortalRobot&amp;quot;;     // Nom du réseau wifi&lt;br /&gt;
const char *motDePasse = &amp;quot;&amp;quot;;    // Mot de passe du réseau wifi&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;
//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;
int life = 3; //point de vie du robot&lt;br /&gt;
bool shoot = false;&lt;br /&gt;
long shootStartTime = 0;;&lt;br /&gt;
long shootDuration = 2000;&lt;br /&gt;
int light = 0;&lt;br /&gt;
int prevLight = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&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é a l'ordinateur&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  configDuWifi();&lt;br /&gt;
  pinMode(D0, OUTPUT);&lt;br /&gt;
  pinMode(D1, OUTPUT);&lt;br /&gt;
  pinMode(D2, OUTPUT);&lt;br /&gt;
  pinMode(D3, OUTPUT);&lt;br /&gt;
  pinMode(D4, OUTPUT);&lt;br /&gt;
  pinMode(D5, OUTPUT);&lt;br /&gt;
  pinMode(D6, OUTPUT);&lt;br /&gt;
  pinMode(D7, OUTPUT);&lt;br /&gt;
  pinMode(D8, OUTPUT);&lt;br /&gt;
  //Moteur à l'arrêt&lt;br /&gt;
  //  analogWrite(D6, LOW);&lt;br /&gt;
  //  analogWrite(D7, LOW);&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;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  val = -1;&lt;br /&gt;
  monServeur.handleClient();&lt;br /&gt;
  //  lifeManage();&lt;br /&gt;
  shootManage();&lt;br /&gt;
  light = analogRead(A0);&lt;br /&gt;
  digitalWrite(D0, (light &amp;gt; prevLight+40));&lt;br /&gt;
  prevLight = light;&lt;br /&gt;
  Serial.println(analogRead(A0));&lt;br /&gt;
  //  digitalWrite(D0,analogRead(A0));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void shootManage()&lt;br /&gt;
{&lt;br /&gt;
  if (shoot)&lt;br /&gt;
  {&lt;br /&gt;
    if ((millis() - shootStartTime) &amp;gt; shootDuration) {&lt;br /&gt;
      digitalWrite(D8, false);&lt;br /&gt;
      shoot = false;&lt;br /&gt;
    } else {&lt;br /&gt;
      digitalWrite(D8, true);&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
  } else&lt;br /&gt;
  {&lt;br /&gt;
    digitalWrite(D8, false);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
bool isShoot()&lt;br /&gt;
{&lt;br /&gt;
  //  Serial.println(&amp;quot;slt&amp;quot;);&lt;br /&gt;
  //  Serial.println(analogRead(A0));&lt;br /&gt;
  return (analogRead(A0) &amp;gt; 800);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void lifeManage() //gere les points de vie et l'affichage&lt;br /&gt;
{&lt;br /&gt;
  if (isShoot())&lt;br /&gt;
  {&lt;br /&gt;
    life--;&lt;br /&gt;
  }&lt;br /&gt;
  switch (life) {&lt;br /&gt;
    case (3) :&lt;br /&gt;
      digitalWrite(D0, true);&lt;br /&gt;
      digitalWrite(D5, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case (2) :&lt;br /&gt;
      analogWrite(D0, 135);&lt;br /&gt;
      digitalWrite(D5, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case (1) :&lt;br /&gt;
      analogWrite(D0, 90);&lt;br /&gt;
      digitalWrite(D5, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case (0) :&lt;br /&gt;
      digitalWrite(D0, false);&lt;br /&gt;
      digitalWrite(D5, true);&lt;br /&gt;
      break;&lt;br /&gt;
    case (5) : //shoot&lt;br /&gt;
      Serial.println(&amp;quot;shoot&amp;quot;);&lt;br /&gt;
      shoot = true;&lt;br /&gt;
      shootStartTime = millis();&lt;br /&gt;
      break;&lt;br /&gt;
  }&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;/shoot&amp;quot;, HTTP_GET, []() {&lt;br /&gt;
    val = 5;&lt;br /&gt;
    Serial.println(&amp;quot;shoot&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;style type=\&amp;quot;text/css\&amp;quot;&amp;gt;  body { color: #212121; background-color: #F08D29 } &amp;lt;/style&amp;gt;&amp;quot;;&lt;br /&gt;
  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;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;/avance\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; height:20%; background-color:#6B6764;\&amp;quot;\&amp;gt;Avance &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/br&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;/gauche\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Gauche &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: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Droite &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;a href=\&amp;quot;/recule\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Recule &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/br&amp;gt;&amp;lt;/br&amp;gt;\r\n&amp;quot;;&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: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Stop &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/br&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;/shoot\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Shoot &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;
void instruction(int valeur) { //Cette fonction traite les instructions qui sont reçues&lt;br /&gt;
  switch (valeur) {                     // En fonction de la variable valeur on va donner un ordre aux servos&lt;br /&gt;
    case 0 : //stop&lt;br /&gt;
      digitalWrite(D1, false);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, false);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case 1 : //avance&lt;br /&gt;
      digitalWrite(D1, true);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, true);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      //      analogWrite(D6, true);&lt;br /&gt;
      //      analogWrite(D7, true);&lt;br /&gt;
      break;&lt;br /&gt;
    case 2 : //recule&lt;br /&gt;
      digitalWrite(D1, false);&lt;br /&gt;
      digitalWrite(D2, true);&lt;br /&gt;
      digitalWrite(D3, false);&lt;br /&gt;
      digitalWrite(D4, true);&lt;br /&gt;
      //      analogWrite(D6, 100);&lt;br /&gt;
      //      analogWrite(D7, 100);&lt;br /&gt;
      break;&lt;br /&gt;
    case 3 : //gauche&lt;br /&gt;
      digitalWrite(D1, true);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, false);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      //      analogWrite(D7, 180);&lt;br /&gt;
      break;&lt;br /&gt;
    case 4 : //droite&lt;br /&gt;
      digitalWrite(D1, false);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, true);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      //      analogWrite(D6, 180);&lt;br /&gt;
      break;&lt;br /&gt;
    case 5 : //shoot&lt;br /&gt;
      shoot = true;&lt;br /&gt;
      shootStartTime = millis();&lt;br /&gt;
      break;&lt;br /&gt;
  }&lt;br /&gt;
&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;
  return;                                  // on retourne à l'endroit ou la fonction a été appelée.&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[catégorie:enib2018]]&lt;/div&gt;</summary>
		<author><name>Phycelot</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:IMG_0358.jpg&amp;diff=8830</id>
		<title>Fichier:IMG 0358.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:IMG_0358.jpg&amp;diff=8830"/>
				<updated>2018-01-19T15:20:53Z</updated>
		
		<summary type="html">&lt;p&gt;Phycelot : Phycelot a importé une nouvelle version de « Fichier:IMG 0358.jpg »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Phycelot</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:IMG_0358.jpg&amp;diff=8829</id>
		<title>Fichier:IMG 0358.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:IMG_0358.jpg&amp;diff=8829"/>
				<updated>2018-01-19T15:19:17Z</updated>
		
		<summary type="html">&lt;p&gt;Phycelot : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Phycelot</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8828</id>
		<title>Mortal robot</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8828"/>
				<updated>2018-01-19T15:18:54Z</updated>
		
		<summary type="html">&lt;p&gt;Phycelot : /* Problemes rencontres */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sur la base des petits bots, il s'agit d'ajouter un laser et un récepteur avec un système de point de vie.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 0357.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
==Pédagogie==&lt;br /&gt;
*construire&lt;br /&gt;
*programmer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Membres de l'équipe==&lt;br /&gt;
* Prouteau Antonin&lt;br /&gt;
* Jegou Gergaud Nils&lt;br /&gt;
* Kerouanton Jeremy&lt;br /&gt;
* Ridae Hamdani&lt;br /&gt;
* Asaad ALAKOUM&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 0359.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
==Matériel pour le 1er robot==&lt;br /&gt;
&lt;br /&gt;
* Carte wemos D1 mini &lt;br /&gt;
* 1 interrupteur&lt;br /&gt;
* 4 piles + son socle &lt;br /&gt;
* 2 LED&lt;br /&gt;
* 3 Résistances&lt;br /&gt;
* 2 Roues + 1 petite roue à l'avant&lt;br /&gt;
* 2 Moteurs à courant continu&lt;br /&gt;
* 1 pont en H &lt;br /&gt;
* 1 photo résistance&lt;br /&gt;
* 1 émetteur lazer KY008&lt;br /&gt;
&lt;br /&gt;
==Avancement du projet==&lt;br /&gt;
&lt;br /&gt;
Le 1er robot est terminé.&lt;br /&gt;
Le 2ème est en cours, nous avons imprimé le châssis ainsi que les roues et le socle des piles .&lt;br /&gt;
&lt;br /&gt;
==Problemes rencontres==&lt;br /&gt;
&lt;br /&gt;
* Carte wemos 5V alors que les moteurs sont en 6V&lt;br /&gt;
* Pas eu de gestion de la vitesse&lt;br /&gt;
* Arriver a utiliser Arduino avec le wemos&lt;br /&gt;
* Arriver a detecter que le laser soit detecte sur le robot&lt;br /&gt;
&lt;br /&gt;
==Fichier==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Diaporama-HackENIB2018.odp]]&lt;br /&gt;
&lt;br /&gt;
==Code Robot==&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
//////////////////&lt;br /&gt;
// Mortal Robot //&lt;br /&gt;
//////////////////&lt;br /&gt;
&lt;br /&gt;
// Ce programme est inspire de : http://www.esp8266.com/viewtopic.php?f=29&amp;amp;t=6419#sthash.gd1tJhwU.dpuf, http://wikidebrouillard.org/index.php?title=Petit_Bot_un_robot_controlable_en_Wifi&lt;br /&gt;
// Sous licence CC-By-Sa&lt;br /&gt;
// Par des gens bien&lt;br /&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;
&lt;br /&gt;
//  Definition du WiFi&lt;br /&gt;
const char *nomDuReseau = &amp;quot;mortalRobot&amp;quot;;     // Nom du réseau wifi&lt;br /&gt;
const char *motDePasse = &amp;quot;&amp;quot;;    // Mot de passe du réseau wifi&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;
//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;
int life = 3; //point de vie du robot&lt;br /&gt;
bool shoot = false;&lt;br /&gt;
long shootStartTime = 0;;&lt;br /&gt;
long shootDuration = 2000;&lt;br /&gt;
int light = 0;&lt;br /&gt;
int prevLight = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&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é a l'ordinateur&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  configDuWifi();&lt;br /&gt;
  pinMode(D0, OUTPUT);&lt;br /&gt;
  pinMode(D1, OUTPUT);&lt;br /&gt;
  pinMode(D2, OUTPUT);&lt;br /&gt;
  pinMode(D3, OUTPUT);&lt;br /&gt;
  pinMode(D4, OUTPUT);&lt;br /&gt;
  pinMode(D5, OUTPUT);&lt;br /&gt;
  pinMode(D6, OUTPUT);&lt;br /&gt;
  pinMode(D7, OUTPUT);&lt;br /&gt;
  pinMode(D8, OUTPUT);&lt;br /&gt;
  //Moteur à l'arrêt&lt;br /&gt;
  //  analogWrite(D6, LOW);&lt;br /&gt;
  //  analogWrite(D7, LOW);&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;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  val = -1;&lt;br /&gt;
  monServeur.handleClient();&lt;br /&gt;
  //  lifeManage();&lt;br /&gt;
  shootManage();&lt;br /&gt;
  light = analogRead(A0);&lt;br /&gt;
  digitalWrite(D0, (light &amp;gt; prevLight+40));&lt;br /&gt;
  prevLight = light;&lt;br /&gt;
  Serial.println(analogRead(A0));&lt;br /&gt;
  //  digitalWrite(D0,analogRead(A0));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void shootManage()&lt;br /&gt;
{&lt;br /&gt;
  if (shoot)&lt;br /&gt;
  {&lt;br /&gt;
    if ((millis() - shootStartTime) &amp;gt; shootDuration) {&lt;br /&gt;
      digitalWrite(D8, false);&lt;br /&gt;
      shoot = false;&lt;br /&gt;
    } else {&lt;br /&gt;
      digitalWrite(D8, true);&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
  } else&lt;br /&gt;
  {&lt;br /&gt;
    digitalWrite(D8, false);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
bool isShoot()&lt;br /&gt;
{&lt;br /&gt;
  //  Serial.println(&amp;quot;slt&amp;quot;);&lt;br /&gt;
  //  Serial.println(analogRead(A0));&lt;br /&gt;
  return (analogRead(A0) &amp;gt; 800);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void lifeManage() //gere les points de vie et l'affichage&lt;br /&gt;
{&lt;br /&gt;
  if (isShoot())&lt;br /&gt;
  {&lt;br /&gt;
    life--;&lt;br /&gt;
  }&lt;br /&gt;
  switch (life) {&lt;br /&gt;
    case (3) :&lt;br /&gt;
      digitalWrite(D0, true);&lt;br /&gt;
      digitalWrite(D5, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case (2) :&lt;br /&gt;
      analogWrite(D0, 135);&lt;br /&gt;
      digitalWrite(D5, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case (1) :&lt;br /&gt;
      analogWrite(D0, 90);&lt;br /&gt;
      digitalWrite(D5, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case (0) :&lt;br /&gt;
      digitalWrite(D0, false);&lt;br /&gt;
      digitalWrite(D5, true);&lt;br /&gt;
      break;&lt;br /&gt;
    case (5) : //shoot&lt;br /&gt;
      Serial.println(&amp;quot;shoot&amp;quot;);&lt;br /&gt;
      shoot = true;&lt;br /&gt;
      shootStartTime = millis();&lt;br /&gt;
      break;&lt;br /&gt;
  }&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;/shoot&amp;quot;, HTTP_GET, []() {&lt;br /&gt;
    val = 5;&lt;br /&gt;
    Serial.println(&amp;quot;shoot&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;style type=\&amp;quot;text/css\&amp;quot;&amp;gt;  body { color: #212121; background-color: #F08D29 } &amp;lt;/style&amp;gt;&amp;quot;;&lt;br /&gt;
  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;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;/avance\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; height:20%; background-color:#6B6764;\&amp;quot;\&amp;gt;Avance &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/br&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;/gauche\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Gauche &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: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Droite &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;a href=\&amp;quot;/recule\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Recule &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/br&amp;gt;&amp;lt;/br&amp;gt;\r\n&amp;quot;;&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: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Stop &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/br&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;/shoot\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Shoot &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;
void instruction(int valeur) { //Cette fonction traite les instructions qui sont reçues&lt;br /&gt;
  switch (valeur) {                     // En fonction de la variable valeur on va donner un ordre aux servos&lt;br /&gt;
    case 0 : //stop&lt;br /&gt;
      digitalWrite(D1, false);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, false);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case 1 : //avance&lt;br /&gt;
      digitalWrite(D1, true);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, true);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      //      analogWrite(D6, true);&lt;br /&gt;
      //      analogWrite(D7, true);&lt;br /&gt;
      break;&lt;br /&gt;
    case 2 : //recule&lt;br /&gt;
      digitalWrite(D1, false);&lt;br /&gt;
      digitalWrite(D2, true);&lt;br /&gt;
      digitalWrite(D3, false);&lt;br /&gt;
      digitalWrite(D4, true);&lt;br /&gt;
      //      analogWrite(D6, 100);&lt;br /&gt;
      //      analogWrite(D7, 100);&lt;br /&gt;
      break;&lt;br /&gt;
    case 3 : //gauche&lt;br /&gt;
      digitalWrite(D1, true);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, false);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      //      analogWrite(D7, 180);&lt;br /&gt;
      break;&lt;br /&gt;
    case 4 : //droite&lt;br /&gt;
      digitalWrite(D1, false);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, true);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      //      analogWrite(D6, 180);&lt;br /&gt;
      break;&lt;br /&gt;
    case 5 : //shoot&lt;br /&gt;
      shoot = true;&lt;br /&gt;
      shootStartTime = millis();&lt;br /&gt;
      break;&lt;br /&gt;
  }&lt;br /&gt;
&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;
  return;                                  // on retourne à l'endroit ou la fonction a été appelée.&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[catégorie:enib2018]]&lt;/div&gt;</summary>
		<author><name>Phycelot</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8827</id>
		<title>Mortal robot</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8827"/>
				<updated>2018-01-19T15:15:41Z</updated>
		
		<summary type="html">&lt;p&gt;Phycelot : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sur la base des petits bots, il s'agit d'ajouter un laser et un récepteur avec un système de point de vie.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 0357.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
==Pédagogie==&lt;br /&gt;
*construire&lt;br /&gt;
*programmer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Membres de l'équipe==&lt;br /&gt;
* Prouteau Antonin&lt;br /&gt;
* Jegou Gergaud Nils&lt;br /&gt;
* Kerouanton Jeremy&lt;br /&gt;
* Ridae Hamdani&lt;br /&gt;
* Asaad ALAKOUM&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 0359.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
==Matériel pour le 1er robot==&lt;br /&gt;
&lt;br /&gt;
* Carte wemos D1 mini &lt;br /&gt;
* 1 interrupteur&lt;br /&gt;
* 4 piles + son socle &lt;br /&gt;
* 2 LED&lt;br /&gt;
* 3 Résistances&lt;br /&gt;
* 2 Roues + 1 petite roue à l'avant&lt;br /&gt;
* 2 Moteurs à courant continu&lt;br /&gt;
* 1 pont en H &lt;br /&gt;
* 1 photo résistance&lt;br /&gt;
* 1 émetteur lazer KY008&lt;br /&gt;
&lt;br /&gt;
==Avancement du projet==&lt;br /&gt;
&lt;br /&gt;
Le 1er robot est terminé.&lt;br /&gt;
Le 2ème est en cours, nous avons imprimé le châssis ainsi que les roues et le socle des piles .&lt;br /&gt;
&lt;br /&gt;
==Problemes rencontres==&lt;br /&gt;
&lt;br /&gt;
==Fichier==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Diaporama-HackENIB2018.odp]]&lt;br /&gt;
&lt;br /&gt;
==Code Robot==&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
//////////////////&lt;br /&gt;
// Mortal Robot //&lt;br /&gt;
//////////////////&lt;br /&gt;
&lt;br /&gt;
// Ce programme est inspire de : http://www.esp8266.com/viewtopic.php?f=29&amp;amp;t=6419#sthash.gd1tJhwU.dpuf, http://wikidebrouillard.org/index.php?title=Petit_Bot_un_robot_controlable_en_Wifi&lt;br /&gt;
// Sous licence CC-By-Sa&lt;br /&gt;
// Par des gens bien&lt;br /&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;
&lt;br /&gt;
//  Definition du WiFi&lt;br /&gt;
const char *nomDuReseau = &amp;quot;mortalRobot&amp;quot;;     // Nom du réseau wifi&lt;br /&gt;
const char *motDePasse = &amp;quot;&amp;quot;;    // Mot de passe du réseau wifi&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;
//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;
int life = 3; //point de vie du robot&lt;br /&gt;
bool shoot = false;&lt;br /&gt;
long shootStartTime = 0;;&lt;br /&gt;
long shootDuration = 2000;&lt;br /&gt;
int light = 0;&lt;br /&gt;
int prevLight = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&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é a l'ordinateur&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  configDuWifi();&lt;br /&gt;
  pinMode(D0, OUTPUT);&lt;br /&gt;
  pinMode(D1, OUTPUT);&lt;br /&gt;
  pinMode(D2, OUTPUT);&lt;br /&gt;
  pinMode(D3, OUTPUT);&lt;br /&gt;
  pinMode(D4, OUTPUT);&lt;br /&gt;
  pinMode(D5, OUTPUT);&lt;br /&gt;
  pinMode(D6, OUTPUT);&lt;br /&gt;
  pinMode(D7, OUTPUT);&lt;br /&gt;
  pinMode(D8, OUTPUT);&lt;br /&gt;
  //Moteur à l'arrêt&lt;br /&gt;
  //  analogWrite(D6, LOW);&lt;br /&gt;
  //  analogWrite(D7, LOW);&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;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  val = -1;&lt;br /&gt;
  monServeur.handleClient();&lt;br /&gt;
  //  lifeManage();&lt;br /&gt;
  shootManage();&lt;br /&gt;
  light = analogRead(A0);&lt;br /&gt;
  digitalWrite(D0, (light &amp;gt; prevLight+40));&lt;br /&gt;
  prevLight = light;&lt;br /&gt;
  Serial.println(analogRead(A0));&lt;br /&gt;
  //  digitalWrite(D0,analogRead(A0));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void shootManage()&lt;br /&gt;
{&lt;br /&gt;
  if (shoot)&lt;br /&gt;
  {&lt;br /&gt;
    if ((millis() - shootStartTime) &amp;gt; shootDuration) {&lt;br /&gt;
      digitalWrite(D8, false);&lt;br /&gt;
      shoot = false;&lt;br /&gt;
    } else {&lt;br /&gt;
      digitalWrite(D8, true);&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
  } else&lt;br /&gt;
  {&lt;br /&gt;
    digitalWrite(D8, false);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
bool isShoot()&lt;br /&gt;
{&lt;br /&gt;
  //  Serial.println(&amp;quot;slt&amp;quot;);&lt;br /&gt;
  //  Serial.println(analogRead(A0));&lt;br /&gt;
  return (analogRead(A0) &amp;gt; 800);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void lifeManage() //gere les points de vie et l'affichage&lt;br /&gt;
{&lt;br /&gt;
  if (isShoot())&lt;br /&gt;
  {&lt;br /&gt;
    life--;&lt;br /&gt;
  }&lt;br /&gt;
  switch (life) {&lt;br /&gt;
    case (3) :&lt;br /&gt;
      digitalWrite(D0, true);&lt;br /&gt;
      digitalWrite(D5, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case (2) :&lt;br /&gt;
      analogWrite(D0, 135);&lt;br /&gt;
      digitalWrite(D5, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case (1) :&lt;br /&gt;
      analogWrite(D0, 90);&lt;br /&gt;
      digitalWrite(D5, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case (0) :&lt;br /&gt;
      digitalWrite(D0, false);&lt;br /&gt;
      digitalWrite(D5, true);&lt;br /&gt;
      break;&lt;br /&gt;
    case (5) : //shoot&lt;br /&gt;
      Serial.println(&amp;quot;shoot&amp;quot;);&lt;br /&gt;
      shoot = true;&lt;br /&gt;
      shootStartTime = millis();&lt;br /&gt;
      break;&lt;br /&gt;
  }&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;/shoot&amp;quot;, HTTP_GET, []() {&lt;br /&gt;
    val = 5;&lt;br /&gt;
    Serial.println(&amp;quot;shoot&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;style type=\&amp;quot;text/css\&amp;quot;&amp;gt;  body { color: #212121; background-color: #F08D29 } &amp;lt;/style&amp;gt;&amp;quot;;&lt;br /&gt;
  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;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;/avance\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; height:20%; background-color:#6B6764;\&amp;quot;\&amp;gt;Avance &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/br&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;/gauche\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Gauche &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: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Droite &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;a href=\&amp;quot;/recule\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Recule &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/br&amp;gt;&amp;lt;/br&amp;gt;\r\n&amp;quot;;&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: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Stop &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/br&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;/shoot\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Shoot &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;
void instruction(int valeur) { //Cette fonction traite les instructions qui sont reçues&lt;br /&gt;
  switch (valeur) {                     // En fonction de la variable valeur on va donner un ordre aux servos&lt;br /&gt;
    case 0 : //stop&lt;br /&gt;
      digitalWrite(D1, false);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, false);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case 1 : //avance&lt;br /&gt;
      digitalWrite(D1, true);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, true);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      //      analogWrite(D6, true);&lt;br /&gt;
      //      analogWrite(D7, true);&lt;br /&gt;
      break;&lt;br /&gt;
    case 2 : //recule&lt;br /&gt;
      digitalWrite(D1, false);&lt;br /&gt;
      digitalWrite(D2, true);&lt;br /&gt;
      digitalWrite(D3, false);&lt;br /&gt;
      digitalWrite(D4, true);&lt;br /&gt;
      //      analogWrite(D6, 100);&lt;br /&gt;
      //      analogWrite(D7, 100);&lt;br /&gt;
      break;&lt;br /&gt;
    case 3 : //gauche&lt;br /&gt;
      digitalWrite(D1, true);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, false);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      //      analogWrite(D7, 180);&lt;br /&gt;
      break;&lt;br /&gt;
    case 4 : //droite&lt;br /&gt;
      digitalWrite(D1, false);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, true);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      //      analogWrite(D6, 180);&lt;br /&gt;
      break;&lt;br /&gt;
    case 5 : //shoot&lt;br /&gt;
      shoot = true;&lt;br /&gt;
      shootStartTime = millis();&lt;br /&gt;
      break;&lt;br /&gt;
  }&lt;br /&gt;
&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;
  return;                                  // on retourne à l'endroit ou la fonction a été appelée.&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[catégorie:enib2018]]&lt;/div&gt;</summary>
		<author><name>Phycelot</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8826</id>
		<title>Mortal robot</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8826"/>
				<updated>2018-01-19T15:13:27Z</updated>
		
		<summary type="html">&lt;p&gt;Phycelot : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sur la base des petits bots, il s'agit d'ajouter un laser et un récepteur avec un système de point de vie.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 0357.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
==Pédagogie==&lt;br /&gt;
*construire&lt;br /&gt;
*programmer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Membres de l'équipe==&lt;br /&gt;
* Prouteau Antonin&lt;br /&gt;
* Jegou Gergaud Nils&lt;br /&gt;
* Kerouanton Jeremy&lt;br /&gt;
* Ridae Hamdani&lt;br /&gt;
* Asaad ALAKOUM&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 0359.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
==Matériel pour le 1er robot==&lt;br /&gt;
&lt;br /&gt;
* Carte wemos D1 mini &lt;br /&gt;
* 1 interrupteur&lt;br /&gt;
* 4 piles + son socle &lt;br /&gt;
* 2 LED&lt;br /&gt;
* 3 Résistances&lt;br /&gt;
* 2 Roues + 1 petite roue à l'avant&lt;br /&gt;
* 2 Moteurs à courant continu&lt;br /&gt;
* 1 pont en H &lt;br /&gt;
* 1 photo résistance&lt;br /&gt;
* 1 émetteur lazer KY008&lt;br /&gt;
&lt;br /&gt;
==Avancement du projet==&lt;br /&gt;
&lt;br /&gt;
Le 1er robot est terminé.&lt;br /&gt;
Le 2ème est en cours, nous avons imprimé le châssis ainsi que les roues et le socle des piles .&lt;br /&gt;
&lt;br /&gt;
==Fichier==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Diaporama-HackENIB2018.odp]]&lt;br /&gt;
&lt;br /&gt;
==Code Robot==&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
//////////////////&lt;br /&gt;
// Mortal Robot //&lt;br /&gt;
//////////////////&lt;br /&gt;
&lt;br /&gt;
// Ce programme est inspire de : http://www.esp8266.com/viewtopic.php?f=29&amp;amp;t=6419#sthash.gd1tJhwU.dpuf, http://wikidebrouillard.org/index.php?title=Petit_Bot_un_robot_controlable_en_Wifi&lt;br /&gt;
// Sous licence CC-By-Sa&lt;br /&gt;
// Par des gens bien&lt;br /&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;
&lt;br /&gt;
//  Definition du WiFi&lt;br /&gt;
const char *nomDuReseau = &amp;quot;mortalRobot&amp;quot;;     // Nom du réseau wifi&lt;br /&gt;
const char *motDePasse = &amp;quot;&amp;quot;;    // Mot de passe du réseau wifi&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;
//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;
int life = 3; //point de vie du robot&lt;br /&gt;
bool shoot = false;&lt;br /&gt;
long shootStartTime = 0;;&lt;br /&gt;
long shootDuration = 2000;&lt;br /&gt;
int light = 0;&lt;br /&gt;
int prevLight = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&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é a l'ordinateur&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  configDuWifi();&lt;br /&gt;
  pinMode(D0, OUTPUT);&lt;br /&gt;
  pinMode(D1, OUTPUT);&lt;br /&gt;
  pinMode(D2, OUTPUT);&lt;br /&gt;
  pinMode(D3, OUTPUT);&lt;br /&gt;
  pinMode(D4, OUTPUT);&lt;br /&gt;
  pinMode(D5, OUTPUT);&lt;br /&gt;
  pinMode(D6, OUTPUT);&lt;br /&gt;
  pinMode(D7, OUTPUT);&lt;br /&gt;
  pinMode(D8, OUTPUT);&lt;br /&gt;
  //Moteur à l'arrêt&lt;br /&gt;
  //  analogWrite(D6, LOW);&lt;br /&gt;
  //  analogWrite(D7, LOW);&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;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  val = -1;&lt;br /&gt;
  monServeur.handleClient();&lt;br /&gt;
  //  lifeManage();&lt;br /&gt;
  shootManage();&lt;br /&gt;
  light = analogRead(A0);&lt;br /&gt;
  digitalWrite(D0, (light &amp;gt; prevLight+40));&lt;br /&gt;
  prevLight = light;&lt;br /&gt;
  Serial.println(analogRead(A0));&lt;br /&gt;
  //  digitalWrite(D0,analogRead(A0));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void shootManage()&lt;br /&gt;
{&lt;br /&gt;
  if (shoot)&lt;br /&gt;
  {&lt;br /&gt;
    if ((millis() - shootStartTime) &amp;gt; shootDuration) {&lt;br /&gt;
      digitalWrite(D8, false);&lt;br /&gt;
      shoot = false;&lt;br /&gt;
    } else {&lt;br /&gt;
      digitalWrite(D8, true);&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
  } else&lt;br /&gt;
  {&lt;br /&gt;
    digitalWrite(D8, false);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
bool isShoot()&lt;br /&gt;
{&lt;br /&gt;
  //  Serial.println(&amp;quot;slt&amp;quot;);&lt;br /&gt;
  //  Serial.println(analogRead(A0));&lt;br /&gt;
  return (analogRead(A0) &amp;gt; 800);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void lifeManage() //gere les points de vie et l'affichage&lt;br /&gt;
{&lt;br /&gt;
  if (isShoot())&lt;br /&gt;
  {&lt;br /&gt;
    life--;&lt;br /&gt;
  }&lt;br /&gt;
  switch (life) {&lt;br /&gt;
    case (3) :&lt;br /&gt;
      digitalWrite(D0, true);&lt;br /&gt;
      digitalWrite(D5, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case (2) :&lt;br /&gt;
      analogWrite(D0, 135);&lt;br /&gt;
      digitalWrite(D5, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case (1) :&lt;br /&gt;
      analogWrite(D0, 90);&lt;br /&gt;
      digitalWrite(D5, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case (0) :&lt;br /&gt;
      digitalWrite(D0, false);&lt;br /&gt;
      digitalWrite(D5, true);&lt;br /&gt;
      break;&lt;br /&gt;
    case (5) : //shoot&lt;br /&gt;
      Serial.println(&amp;quot;shoot&amp;quot;);&lt;br /&gt;
      shoot = true;&lt;br /&gt;
      shootStartTime = millis();&lt;br /&gt;
      break;&lt;br /&gt;
  }&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;/shoot&amp;quot;, HTTP_GET, []() {&lt;br /&gt;
    val = 5;&lt;br /&gt;
    Serial.println(&amp;quot;shoot&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;style type=\&amp;quot;text/css\&amp;quot;&amp;gt;  body { color: #212121; background-color: #F08D29 } &amp;lt;/style&amp;gt;&amp;quot;;&lt;br /&gt;
  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;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;/avance\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; height:20%; background-color:#6B6764;\&amp;quot;\&amp;gt;Avance &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/br&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;/gauche\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Gauche &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: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Droite &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;a href=\&amp;quot;/recule\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Recule &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/br&amp;gt;&amp;lt;/br&amp;gt;\r\n&amp;quot;;&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: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Stop &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/br&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;/shoot\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Shoot &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;
void instruction(int valeur) { //Cette fonction traite les instructions qui sont reçues&lt;br /&gt;
  switch (valeur) {                     // En fonction de la variable valeur on va donner un ordre aux servos&lt;br /&gt;
    case 0 : //stop&lt;br /&gt;
      digitalWrite(D1, false);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, false);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case 1 : //avance&lt;br /&gt;
      digitalWrite(D1, true);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, true);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      //      analogWrite(D6, true);&lt;br /&gt;
      //      analogWrite(D7, true);&lt;br /&gt;
      break;&lt;br /&gt;
    case 2 : //recule&lt;br /&gt;
      digitalWrite(D1, false);&lt;br /&gt;
      digitalWrite(D2, true);&lt;br /&gt;
      digitalWrite(D3, false);&lt;br /&gt;
      digitalWrite(D4, true);&lt;br /&gt;
      //      analogWrite(D6, 100);&lt;br /&gt;
      //      analogWrite(D7, 100);&lt;br /&gt;
      break;&lt;br /&gt;
    case 3 : //gauche&lt;br /&gt;
      digitalWrite(D1, true);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, false);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      //      analogWrite(D7, 180);&lt;br /&gt;
      break;&lt;br /&gt;
    case 4 : //droite&lt;br /&gt;
      digitalWrite(D1, false);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, true);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      //      analogWrite(D6, 180);&lt;br /&gt;
      break;&lt;br /&gt;
    case 5 : //shoot&lt;br /&gt;
      shoot = true;&lt;br /&gt;
      shootStartTime = millis();&lt;br /&gt;
      break;&lt;br /&gt;
  }&lt;br /&gt;
&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;
  return;                                  // on retourne à l'endroit ou la fonction a été appelée.&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[catégorie:enib2018]]&lt;/div&gt;</summary>
		<author><name>Phycelot</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:IMG_0357.jpg&amp;diff=8824</id>
		<title>Fichier:IMG 0357.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:IMG_0357.jpg&amp;diff=8824"/>
				<updated>2018-01-19T15:11:23Z</updated>
		
		<summary type="html">&lt;p&gt;Phycelot : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Phycelot</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8820</id>
		<title>Mortal robot</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8820"/>
				<updated>2018-01-19T15:09:24Z</updated>
		
		<summary type="html">&lt;p&gt;Phycelot : /* Membres de l'équipe */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sur la base des petits bots, il s'agit d'ajouter un laser et un récepteur avec un système de point de vie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Pédagogie==&lt;br /&gt;
*construire&lt;br /&gt;
*programmer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Membres de l'équipe==&lt;br /&gt;
* Prouteau Antonin&lt;br /&gt;
* Jegou Gergaud Nils&lt;br /&gt;
* Kerouanton Jeremy&lt;br /&gt;
* Ridae Hamdani&lt;br /&gt;
* Asaad ALAKOUM&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 0359.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
==Matériel pour le 1er robot==&lt;br /&gt;
&lt;br /&gt;
* Carte wemos D1 mini &lt;br /&gt;
* 1 interrupteur&lt;br /&gt;
* 4 piles + son socle &lt;br /&gt;
* 2 LED&lt;br /&gt;
* 3 Résistances&lt;br /&gt;
* 2 Roues + 1 petite roue à l'avant&lt;br /&gt;
* 2 Moteurs à courant continu&lt;br /&gt;
* 1 pont en H &lt;br /&gt;
* 1 photo résistance&lt;br /&gt;
* 1 émetteur lazer KY008&lt;br /&gt;
&lt;br /&gt;
==Avancement du projet==&lt;br /&gt;
&lt;br /&gt;
Le 1er robot est terminé.&lt;br /&gt;
Le 2ème est en cours, nous avons imprimé le châssis ainsi que les roues et le socle des piles .&lt;br /&gt;
&lt;br /&gt;
==Fichier==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Diaporama-HackENIB2018.odp]]&lt;br /&gt;
&lt;br /&gt;
==Code Robot==&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
//////////////////&lt;br /&gt;
// Mortal Robot //&lt;br /&gt;
//////////////////&lt;br /&gt;
&lt;br /&gt;
// Ce programme est inspire de : http://www.esp8266.com/viewtopic.php?f=29&amp;amp;t=6419#sthash.gd1tJhwU.dpuf, http://wikidebrouillard.org/index.php?title=Petit_Bot_un_robot_controlable_en_Wifi&lt;br /&gt;
// Sous licence CC-By-Sa&lt;br /&gt;
// Par des gens bien&lt;br /&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;
&lt;br /&gt;
//  Definition du WiFi&lt;br /&gt;
const char *nomDuReseau = &amp;quot;mortalRobot&amp;quot;;     // Nom du réseau wifi&lt;br /&gt;
const char *motDePasse = &amp;quot;&amp;quot;;    // Mot de passe du réseau wifi&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;
//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;
int life = 3; //point de vie du robot&lt;br /&gt;
bool shoot = false;&lt;br /&gt;
long shootStartTime = 0;;&lt;br /&gt;
long shootDuration = 2000;&lt;br /&gt;
int light = 0;&lt;br /&gt;
int prevLight = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&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é a l'ordinateur&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  configDuWifi();&lt;br /&gt;
  pinMode(D0, OUTPUT);&lt;br /&gt;
  pinMode(D1, OUTPUT);&lt;br /&gt;
  pinMode(D2, OUTPUT);&lt;br /&gt;
  pinMode(D3, OUTPUT);&lt;br /&gt;
  pinMode(D4, OUTPUT);&lt;br /&gt;
  pinMode(D5, OUTPUT);&lt;br /&gt;
  pinMode(D6, OUTPUT);&lt;br /&gt;
  pinMode(D7, OUTPUT);&lt;br /&gt;
  pinMode(D8, OUTPUT);&lt;br /&gt;
  //Moteur à l'arrêt&lt;br /&gt;
  //  analogWrite(D6, LOW);&lt;br /&gt;
  //  analogWrite(D7, LOW);&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;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  val = -1;&lt;br /&gt;
  monServeur.handleClient();&lt;br /&gt;
  //  lifeManage();&lt;br /&gt;
  shootManage();&lt;br /&gt;
  light = analogRead(A0);&lt;br /&gt;
  digitalWrite(D0, (light &amp;gt; prevLight+40));&lt;br /&gt;
  prevLight = light;&lt;br /&gt;
  Serial.println(analogRead(A0));&lt;br /&gt;
  //  digitalWrite(D0,analogRead(A0));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void shootManage()&lt;br /&gt;
{&lt;br /&gt;
  if (shoot)&lt;br /&gt;
  {&lt;br /&gt;
    if ((millis() - shootStartTime) &amp;gt; shootDuration) {&lt;br /&gt;
      digitalWrite(D8, false);&lt;br /&gt;
      shoot = false;&lt;br /&gt;
    } else {&lt;br /&gt;
      digitalWrite(D8, true);&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
  } else&lt;br /&gt;
  {&lt;br /&gt;
    digitalWrite(D8, false);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
bool isShoot()&lt;br /&gt;
{&lt;br /&gt;
  //  Serial.println(&amp;quot;slt&amp;quot;);&lt;br /&gt;
  //  Serial.println(analogRead(A0));&lt;br /&gt;
  return (analogRead(A0) &amp;gt; 800);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void lifeManage() //gere les points de vie et l'affichage&lt;br /&gt;
{&lt;br /&gt;
  if (isShoot())&lt;br /&gt;
  {&lt;br /&gt;
    life--;&lt;br /&gt;
  }&lt;br /&gt;
  switch (life) {&lt;br /&gt;
    case (3) :&lt;br /&gt;
      digitalWrite(D0, true);&lt;br /&gt;
      digitalWrite(D5, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case (2) :&lt;br /&gt;
      analogWrite(D0, 135);&lt;br /&gt;
      digitalWrite(D5, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case (1) :&lt;br /&gt;
      analogWrite(D0, 90);&lt;br /&gt;
      digitalWrite(D5, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case (0) :&lt;br /&gt;
      digitalWrite(D0, false);&lt;br /&gt;
      digitalWrite(D5, true);&lt;br /&gt;
      break;&lt;br /&gt;
    case (5) : //shoot&lt;br /&gt;
      Serial.println(&amp;quot;shoot&amp;quot;);&lt;br /&gt;
      shoot = true;&lt;br /&gt;
      shootStartTime = millis();&lt;br /&gt;
      break;&lt;br /&gt;
  }&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;/shoot&amp;quot;, HTTP_GET, []() {&lt;br /&gt;
    val = 5;&lt;br /&gt;
    Serial.println(&amp;quot;shoot&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;style type=\&amp;quot;text/css\&amp;quot;&amp;gt;  body { color: #212121; background-color: #F08D29 } &amp;lt;/style&amp;gt;&amp;quot;;&lt;br /&gt;
  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;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;/avance\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; height:20%; background-color:#6B6764;\&amp;quot;\&amp;gt;Avance &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/br&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;/gauche\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Gauche &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: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Droite &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;a href=\&amp;quot;/recule\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Recule &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/br&amp;gt;&amp;lt;/br&amp;gt;\r\n&amp;quot;;&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: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Stop &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/br&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;/shoot\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Shoot &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;
void instruction(int valeur) { //Cette fonction traite les instructions qui sont reçues&lt;br /&gt;
  switch (valeur) {                     // En fonction de la variable valeur on va donner un ordre aux servos&lt;br /&gt;
    case 0 : //stop&lt;br /&gt;
      digitalWrite(D1, false);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, false);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case 1 : //avance&lt;br /&gt;
      digitalWrite(D1, true);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, true);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      //      analogWrite(D6, true);&lt;br /&gt;
      //      analogWrite(D7, true);&lt;br /&gt;
      break;&lt;br /&gt;
    case 2 : //recule&lt;br /&gt;
      digitalWrite(D1, false);&lt;br /&gt;
      digitalWrite(D2, true);&lt;br /&gt;
      digitalWrite(D3, false);&lt;br /&gt;
      digitalWrite(D4, true);&lt;br /&gt;
      //      analogWrite(D6, 100);&lt;br /&gt;
      //      analogWrite(D7, 100);&lt;br /&gt;
      break;&lt;br /&gt;
    case 3 : //gauche&lt;br /&gt;
      digitalWrite(D1, true);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, false);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      //      analogWrite(D7, 180);&lt;br /&gt;
      break;&lt;br /&gt;
    case 4 : //droite&lt;br /&gt;
      digitalWrite(D1, false);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, true);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      //      analogWrite(D6, 180);&lt;br /&gt;
      break;&lt;br /&gt;
    case 5 : //shoot&lt;br /&gt;
      shoot = true;&lt;br /&gt;
      shootStartTime = millis();&lt;br /&gt;
      break;&lt;br /&gt;
  }&lt;br /&gt;
&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;
  return;                                  // on retourne à l'endroit ou la fonction a été appelée.&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[catégorie:enib2018]]&lt;/div&gt;</summary>
		<author><name>Phycelot</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8816</id>
		<title>Mortal robot</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8816"/>
				<updated>2018-01-19T15:07:16Z</updated>
		
		<summary type="html">&lt;p&gt;Phycelot : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sur la base des petits bots, il s'agit d'ajouter un laser et un récepteur avec un système de point de vie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Pédagogie==&lt;br /&gt;
*construire&lt;br /&gt;
*programmer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Membres de l'équipe==&lt;br /&gt;
* Prouteau Antonin&lt;br /&gt;
* Jegou Gergaud Nils&lt;br /&gt;
* Kerouanton Jeremy&lt;br /&gt;
* Ridae Hamdani&lt;br /&gt;
* Asaad ALAKOUM&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 0359.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Matériel pour le 1er robot==&lt;br /&gt;
&lt;br /&gt;
* Carte wemos D1 mini &lt;br /&gt;
* 1 interrupteur&lt;br /&gt;
* 4 piles + son socle &lt;br /&gt;
* 2 LED&lt;br /&gt;
* 3 Résistances&lt;br /&gt;
* 2 Roues + 1 petite roue à l'avant&lt;br /&gt;
* 2 Moteurs à courant continu&lt;br /&gt;
* 1 pont en H &lt;br /&gt;
* 1 photo résistance&lt;br /&gt;
* 1 émetteur lazer KY008&lt;br /&gt;
&lt;br /&gt;
==Avancement du projet==&lt;br /&gt;
&lt;br /&gt;
Le 1er robot est terminé.&lt;br /&gt;
Le 2ème est en cours, nous avons imprimé le châssis ainsi que les roues et le socle des piles .&lt;br /&gt;
&lt;br /&gt;
==Fichier==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Diaporama-HackENIB2018.odp]]&lt;br /&gt;
&lt;br /&gt;
==Code Robot==&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
//////////////////&lt;br /&gt;
// Mortal Robot //&lt;br /&gt;
//////////////////&lt;br /&gt;
&lt;br /&gt;
// Ce programme est inspire de : http://www.esp8266.com/viewtopic.php?f=29&amp;amp;t=6419#sthash.gd1tJhwU.dpuf, http://wikidebrouillard.org/index.php?title=Petit_Bot_un_robot_controlable_en_Wifi&lt;br /&gt;
// Sous licence CC-By-Sa&lt;br /&gt;
// Par des gens bien&lt;br /&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;
&lt;br /&gt;
//  Definition du WiFi&lt;br /&gt;
const char *nomDuReseau = &amp;quot;mortalRobot&amp;quot;;     // Nom du réseau wifi&lt;br /&gt;
const char *motDePasse = &amp;quot;&amp;quot;;    // Mot de passe du réseau wifi&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;
//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;
int life = 3; //point de vie du robot&lt;br /&gt;
bool shoot = false;&lt;br /&gt;
long shootStartTime = 0;;&lt;br /&gt;
long shootDuration = 2000;&lt;br /&gt;
int light = 0;&lt;br /&gt;
int prevLight = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&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é a l'ordinateur&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  configDuWifi();&lt;br /&gt;
  pinMode(D0, OUTPUT);&lt;br /&gt;
  pinMode(D1, OUTPUT);&lt;br /&gt;
  pinMode(D2, OUTPUT);&lt;br /&gt;
  pinMode(D3, OUTPUT);&lt;br /&gt;
  pinMode(D4, OUTPUT);&lt;br /&gt;
  pinMode(D5, OUTPUT);&lt;br /&gt;
  pinMode(D6, OUTPUT);&lt;br /&gt;
  pinMode(D7, OUTPUT);&lt;br /&gt;
  pinMode(D8, OUTPUT);&lt;br /&gt;
  //Moteur à l'arrêt&lt;br /&gt;
  //  analogWrite(D6, LOW);&lt;br /&gt;
  //  analogWrite(D7, LOW);&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;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  val = -1;&lt;br /&gt;
  monServeur.handleClient();&lt;br /&gt;
  //  lifeManage();&lt;br /&gt;
  shootManage();&lt;br /&gt;
  light = analogRead(A0);&lt;br /&gt;
  digitalWrite(D0, (light &amp;gt; prevLight+40));&lt;br /&gt;
  prevLight = light;&lt;br /&gt;
  Serial.println(analogRead(A0));&lt;br /&gt;
  //  digitalWrite(D0,analogRead(A0));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void shootManage()&lt;br /&gt;
{&lt;br /&gt;
  if (shoot)&lt;br /&gt;
  {&lt;br /&gt;
    if ((millis() - shootStartTime) &amp;gt; shootDuration) {&lt;br /&gt;
      digitalWrite(D8, false);&lt;br /&gt;
      shoot = false;&lt;br /&gt;
    } else {&lt;br /&gt;
      digitalWrite(D8, true);&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
  } else&lt;br /&gt;
  {&lt;br /&gt;
    digitalWrite(D8, false);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
bool isShoot()&lt;br /&gt;
{&lt;br /&gt;
  //  Serial.println(&amp;quot;slt&amp;quot;);&lt;br /&gt;
  //  Serial.println(analogRead(A0));&lt;br /&gt;
  return (analogRead(A0) &amp;gt; 800);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void lifeManage() //gere les points de vie et l'affichage&lt;br /&gt;
{&lt;br /&gt;
  if (isShoot())&lt;br /&gt;
  {&lt;br /&gt;
    life--;&lt;br /&gt;
  }&lt;br /&gt;
  switch (life) {&lt;br /&gt;
    case (3) :&lt;br /&gt;
      digitalWrite(D0, true);&lt;br /&gt;
      digitalWrite(D5, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case (2) :&lt;br /&gt;
      analogWrite(D0, 135);&lt;br /&gt;
      digitalWrite(D5, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case (1) :&lt;br /&gt;
      analogWrite(D0, 90);&lt;br /&gt;
      digitalWrite(D5, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case (0) :&lt;br /&gt;
      digitalWrite(D0, false);&lt;br /&gt;
      digitalWrite(D5, true);&lt;br /&gt;
      break;&lt;br /&gt;
    case (5) : //shoot&lt;br /&gt;
      Serial.println(&amp;quot;shoot&amp;quot;);&lt;br /&gt;
      shoot = true;&lt;br /&gt;
      shootStartTime = millis();&lt;br /&gt;
      break;&lt;br /&gt;
  }&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;/shoot&amp;quot;, HTTP_GET, []() {&lt;br /&gt;
    val = 5;&lt;br /&gt;
    Serial.println(&amp;quot;shoot&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;style type=\&amp;quot;text/css\&amp;quot;&amp;gt;  body { color: #212121; background-color: #F08D29 } &amp;lt;/style&amp;gt;&amp;quot;;&lt;br /&gt;
  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;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;/avance\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; height:20%; background-color:#6B6764;\&amp;quot;\&amp;gt;Avance &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/br&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;/gauche\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Gauche &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: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Droite &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;a href=\&amp;quot;/recule\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Recule &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/br&amp;gt;&amp;lt;/br&amp;gt;\r\n&amp;quot;;&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: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Stop &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/br&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;/shoot\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Shoot &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;
void instruction(int valeur) { //Cette fonction traite les instructions qui sont reçues&lt;br /&gt;
  switch (valeur) {                     // En fonction de la variable valeur on va donner un ordre aux servos&lt;br /&gt;
    case 0 : //stop&lt;br /&gt;
      digitalWrite(D1, false);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, false);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case 1 : //avance&lt;br /&gt;
      digitalWrite(D1, true);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, true);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      //      analogWrite(D6, true);&lt;br /&gt;
      //      analogWrite(D7, true);&lt;br /&gt;
      break;&lt;br /&gt;
    case 2 : //recule&lt;br /&gt;
      digitalWrite(D1, false);&lt;br /&gt;
      digitalWrite(D2, true);&lt;br /&gt;
      digitalWrite(D3, false);&lt;br /&gt;
      digitalWrite(D4, true);&lt;br /&gt;
      //      analogWrite(D6, 100);&lt;br /&gt;
      //      analogWrite(D7, 100);&lt;br /&gt;
      break;&lt;br /&gt;
    case 3 : //gauche&lt;br /&gt;
      digitalWrite(D1, true);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, false);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      //      analogWrite(D7, 180);&lt;br /&gt;
      break;&lt;br /&gt;
    case 4 : //droite&lt;br /&gt;
      digitalWrite(D1, false);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, true);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      //      analogWrite(D6, 180);&lt;br /&gt;
      break;&lt;br /&gt;
    case 5 : //shoot&lt;br /&gt;
      shoot = true;&lt;br /&gt;
      shootStartTime = millis();&lt;br /&gt;
      break;&lt;br /&gt;
  }&lt;br /&gt;
&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;
  return;                                  // on retourne à l'endroit ou la fonction a été appelée.&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[catégorie:enib2018]]&lt;/div&gt;</summary>
		<author><name>Phycelot</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8815</id>
		<title>Mortal robot</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8815"/>
				<updated>2018-01-19T15:06:42Z</updated>
		
		<summary type="html">&lt;p&gt;Phycelot : /* Code Robot */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sur la base des petits bots, il s'agit d'ajouter un laser et un récepteur avec un système de point de vie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Pédagogie==&lt;br /&gt;
*construire&lt;br /&gt;
*programmer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Membres de l'équipe==&lt;br /&gt;
* Prouteau Antonin&lt;br /&gt;
* Jegou Gergaud Nils&lt;br /&gt;
* Kerouanton Jeremy&lt;br /&gt;
* Ridae Hamdani&lt;br /&gt;
* Asaad ALAKOUM&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 0359.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Matériel pour le 1er robot==&lt;br /&gt;
&lt;br /&gt;
* Carte wemos D1 mini &lt;br /&gt;
* 1 interrupteur&lt;br /&gt;
* 4 piles + son socle &lt;br /&gt;
* 2 LED&lt;br /&gt;
* 3 Résistances&lt;br /&gt;
* 2 Roues + 1 petite roue à l'avant&lt;br /&gt;
* 2 Moteurs à courant continu&lt;br /&gt;
* 1 pont en H &lt;br /&gt;
* 1 photo résistance&lt;br /&gt;
* 1 émetteur lazer KY008&lt;br /&gt;
&lt;br /&gt;
==Avancement du projet==&lt;br /&gt;
&lt;br /&gt;
Le 1er robot est terminé.&lt;br /&gt;
Le 2ème est en cours, nous avons imprimé le châssis ainsi que les roues et le socle des piles .&lt;br /&gt;
&lt;br /&gt;
==Fichier==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Diaporama-HackENIB2018.odp]]&lt;br /&gt;
&lt;br /&gt;
[[ Fichier:Impression final svg.svg]]&lt;br /&gt;
&lt;br /&gt;
==Code Robot==&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
//////////////////&lt;br /&gt;
// Mortal Robot //&lt;br /&gt;
//////////////////&lt;br /&gt;
&lt;br /&gt;
// Ce programme est inspire de : http://www.esp8266.com/viewtopic.php?f=29&amp;amp;t=6419#sthash.gd1tJhwU.dpuf, http://wikidebrouillard.org/index.php?title=Petit_Bot_un_robot_controlable_en_Wifi&lt;br /&gt;
// Sous licence CC-By-Sa&lt;br /&gt;
// Par des gens bien&lt;br /&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;
&lt;br /&gt;
//  Definition du WiFi&lt;br /&gt;
const char *nomDuReseau = &amp;quot;mortalRobot&amp;quot;;     // Nom du réseau wifi&lt;br /&gt;
const char *motDePasse = &amp;quot;&amp;quot;;    // Mot de passe du réseau wifi&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;
//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;
int life = 3; //point de vie du robot&lt;br /&gt;
bool shoot = false;&lt;br /&gt;
long shootStartTime = 0;;&lt;br /&gt;
long shootDuration = 2000;&lt;br /&gt;
int light = 0;&lt;br /&gt;
int prevLight = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&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é a l'ordinateur&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  configDuWifi();&lt;br /&gt;
  pinMode(D0, OUTPUT);&lt;br /&gt;
  pinMode(D1, OUTPUT);&lt;br /&gt;
  pinMode(D2, OUTPUT);&lt;br /&gt;
  pinMode(D3, OUTPUT);&lt;br /&gt;
  pinMode(D4, OUTPUT);&lt;br /&gt;
  pinMode(D5, OUTPUT);&lt;br /&gt;
  pinMode(D6, OUTPUT);&lt;br /&gt;
  pinMode(D7, OUTPUT);&lt;br /&gt;
  pinMode(D8, OUTPUT);&lt;br /&gt;
  //Moteur à l'arrêt&lt;br /&gt;
  //  analogWrite(D6, LOW);&lt;br /&gt;
  //  analogWrite(D7, LOW);&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;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  val = -1;&lt;br /&gt;
  monServeur.handleClient();&lt;br /&gt;
  //  lifeManage();&lt;br /&gt;
  shootManage();&lt;br /&gt;
  light = analogRead(A0);&lt;br /&gt;
  digitalWrite(D0, (light &amp;gt; prevLight+40));&lt;br /&gt;
  prevLight = light;&lt;br /&gt;
  Serial.println(analogRead(A0));&lt;br /&gt;
  //  digitalWrite(D0,analogRead(A0));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void shootManage()&lt;br /&gt;
{&lt;br /&gt;
  if (shoot)&lt;br /&gt;
  {&lt;br /&gt;
    if ((millis() - shootStartTime) &amp;gt; shootDuration) {&lt;br /&gt;
      digitalWrite(D8, false);&lt;br /&gt;
      shoot = false;&lt;br /&gt;
    } else {&lt;br /&gt;
      digitalWrite(D8, true);&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
  } else&lt;br /&gt;
  {&lt;br /&gt;
    digitalWrite(D8, false);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
bool isShoot()&lt;br /&gt;
{&lt;br /&gt;
  //  Serial.println(&amp;quot;slt&amp;quot;);&lt;br /&gt;
  //  Serial.println(analogRead(A0));&lt;br /&gt;
  return (analogRead(A0) &amp;gt; 800);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void lifeManage() //gere les points de vie et l'affichage&lt;br /&gt;
{&lt;br /&gt;
  if (isShoot())&lt;br /&gt;
  {&lt;br /&gt;
    life--;&lt;br /&gt;
  }&lt;br /&gt;
  switch (life) {&lt;br /&gt;
    case (3) :&lt;br /&gt;
      digitalWrite(D0, true);&lt;br /&gt;
      digitalWrite(D5, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case (2) :&lt;br /&gt;
      analogWrite(D0, 135);&lt;br /&gt;
      digitalWrite(D5, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case (1) :&lt;br /&gt;
      analogWrite(D0, 90);&lt;br /&gt;
      digitalWrite(D5, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case (0) :&lt;br /&gt;
      digitalWrite(D0, false);&lt;br /&gt;
      digitalWrite(D5, true);&lt;br /&gt;
      break;&lt;br /&gt;
    case (5) : //shoot&lt;br /&gt;
      Serial.println(&amp;quot;shoot&amp;quot;);&lt;br /&gt;
      shoot = true;&lt;br /&gt;
      shootStartTime = millis();&lt;br /&gt;
      break;&lt;br /&gt;
  }&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;/shoot&amp;quot;, HTTP_GET, []() {&lt;br /&gt;
    val = 5;&lt;br /&gt;
    Serial.println(&amp;quot;shoot&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;style type=\&amp;quot;text/css\&amp;quot;&amp;gt;  body { color: #212121; background-color: #F08D29 } &amp;lt;/style&amp;gt;&amp;quot;;&lt;br /&gt;
  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;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;/avance\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; height:20%; background-color:#6B6764;\&amp;quot;\&amp;gt;Avance &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/br&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;/gauche\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Gauche &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: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Droite &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;a href=\&amp;quot;/recule\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Recule &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/br&amp;gt;&amp;lt;/br&amp;gt;\r\n&amp;quot;;&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: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Stop &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/br&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;/shoot\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Shoot &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;
void instruction(int valeur) { //Cette fonction traite les instructions qui sont reçues&lt;br /&gt;
  switch (valeur) {                     // En fonction de la variable valeur on va donner un ordre aux servos&lt;br /&gt;
    case 0 : //stop&lt;br /&gt;
      digitalWrite(D1, false);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, false);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case 1 : //avance&lt;br /&gt;
      digitalWrite(D1, true);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, true);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      //      analogWrite(D6, true);&lt;br /&gt;
      //      analogWrite(D7, true);&lt;br /&gt;
      break;&lt;br /&gt;
    case 2 : //recule&lt;br /&gt;
      digitalWrite(D1, false);&lt;br /&gt;
      digitalWrite(D2, true);&lt;br /&gt;
      digitalWrite(D3, false);&lt;br /&gt;
      digitalWrite(D4, true);&lt;br /&gt;
      //      analogWrite(D6, 100);&lt;br /&gt;
      //      analogWrite(D7, 100);&lt;br /&gt;
      break;&lt;br /&gt;
    case 3 : //gauche&lt;br /&gt;
      digitalWrite(D1, true);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, false);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      //      analogWrite(D7, 180);&lt;br /&gt;
      break;&lt;br /&gt;
    case 4 : //droite&lt;br /&gt;
      digitalWrite(D1, false);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, true);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      //      analogWrite(D6, 180);&lt;br /&gt;
      break;&lt;br /&gt;
    case 5 : //shoot&lt;br /&gt;
      shoot = true;&lt;br /&gt;
      shootStartTime = millis();&lt;br /&gt;
      break;&lt;br /&gt;
  }&lt;br /&gt;
&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;
  return;                                  // on retourne à l'endroit ou la fonction a été appelée.&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[catégorie:enib2018]]&lt;/div&gt;</summary>
		<author><name>Phycelot</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8814</id>
		<title>Mortal robot</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8814"/>
				<updated>2018-01-19T15:06:04Z</updated>
		
		<summary type="html">&lt;p&gt;Phycelot : /* Code Robot */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sur la base des petits bots, il s'agit d'ajouter un laser et un récepteur avec un système de point de vie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Pédagogie==&lt;br /&gt;
*construire&lt;br /&gt;
*programmer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Membres de l'équipe==&lt;br /&gt;
* Prouteau Antonin&lt;br /&gt;
* Jegou Gergaud Nils&lt;br /&gt;
* Kerouanton Jeremy&lt;br /&gt;
* Ridae Hamdani&lt;br /&gt;
* Asaad ALAKOUM&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 0359.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Matériel pour le 1er robot==&lt;br /&gt;
&lt;br /&gt;
* Carte wemos D1 mini &lt;br /&gt;
* 1 interrupteur&lt;br /&gt;
* 4 piles + son socle &lt;br /&gt;
* 2 LED&lt;br /&gt;
* 3 Résistances&lt;br /&gt;
* 2 Roues + 1 petite roue à l'avant&lt;br /&gt;
* 2 Moteurs à courant continu&lt;br /&gt;
* 1 pont en H &lt;br /&gt;
* 1 photo résistance&lt;br /&gt;
* 1 émetteur lazer KY008&lt;br /&gt;
&lt;br /&gt;
==Avancement du projet==&lt;br /&gt;
&lt;br /&gt;
Le 1er robot est terminé.&lt;br /&gt;
Le 2ème est en cours, nous avons imprimé le châssis ainsi que les roues et le socle des piles .&lt;br /&gt;
&lt;br /&gt;
==Fichier==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Diaporama-HackENIB2018.odp]]&lt;br /&gt;
&lt;br /&gt;
[[ Fichier:Impression final svg.svg]]&lt;br /&gt;
&lt;br /&gt;
==Code Robot==&lt;br /&gt;
{&lt;br /&gt;
//////////////////&lt;br /&gt;
// Mortal Robot //&lt;br /&gt;
//////////////////&lt;br /&gt;
&lt;br /&gt;
// Ce programme est inspire de : http://www.esp8266.com/viewtopic.php?f=29&amp;amp;t=6419#sthash.gd1tJhwU.dpuf, http://wikidebrouillard.org/index.php?title=Petit_Bot_un_robot_controlable_en_Wifi&lt;br /&gt;
// Sous licence CC-By-Sa&lt;br /&gt;
// Par des gens bien&lt;br /&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;
&lt;br /&gt;
//  Definition du WiFi&lt;br /&gt;
const char *nomDuReseau = &amp;quot;mortalRobot&amp;quot;;     // Nom du réseau wifi&lt;br /&gt;
const char *motDePasse = &amp;quot;&amp;quot;;    // Mot de passe du réseau wifi&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;
//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;
int life = 3; //point de vie du robot&lt;br /&gt;
bool shoot = false;&lt;br /&gt;
long shootStartTime = 0;;&lt;br /&gt;
long shootDuration = 2000;&lt;br /&gt;
int light = 0;&lt;br /&gt;
int prevLight = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&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é a l'ordinateur&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  configDuWifi();&lt;br /&gt;
  pinMode(D0, OUTPUT);&lt;br /&gt;
  pinMode(D1, OUTPUT);&lt;br /&gt;
  pinMode(D2, OUTPUT);&lt;br /&gt;
  pinMode(D3, OUTPUT);&lt;br /&gt;
  pinMode(D4, OUTPUT);&lt;br /&gt;
  pinMode(D5, OUTPUT);&lt;br /&gt;
  pinMode(D6, OUTPUT);&lt;br /&gt;
  pinMode(D7, OUTPUT);&lt;br /&gt;
  pinMode(D8, OUTPUT);&lt;br /&gt;
  //Moteur à l'arrêt&lt;br /&gt;
  //  analogWrite(D6, LOW);&lt;br /&gt;
  //  analogWrite(D7, LOW);&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;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  val = -1;&lt;br /&gt;
  monServeur.handleClient();&lt;br /&gt;
  //  lifeManage();&lt;br /&gt;
  shootManage();&lt;br /&gt;
  light = analogRead(A0);&lt;br /&gt;
  digitalWrite(D0, (light &amp;gt; prevLight+40));&lt;br /&gt;
  prevLight = light;&lt;br /&gt;
  Serial.println(analogRead(A0));&lt;br /&gt;
  //  digitalWrite(D0,analogRead(A0));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void shootManage()&lt;br /&gt;
{&lt;br /&gt;
  if (shoot)&lt;br /&gt;
  {&lt;br /&gt;
    if ((millis() - shootStartTime) &amp;gt; shootDuration) {&lt;br /&gt;
      digitalWrite(D8, false);&lt;br /&gt;
      shoot = false;&lt;br /&gt;
    } else {&lt;br /&gt;
      digitalWrite(D8, true);&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
  } else&lt;br /&gt;
  {&lt;br /&gt;
    digitalWrite(D8, false);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
bool isShoot()&lt;br /&gt;
{&lt;br /&gt;
  //  Serial.println(&amp;quot;slt&amp;quot;);&lt;br /&gt;
  //  Serial.println(analogRead(A0));&lt;br /&gt;
  return (analogRead(A0) &amp;gt; 800);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void lifeManage() //gere les points de vie et l'affichage&lt;br /&gt;
{&lt;br /&gt;
  if (isShoot())&lt;br /&gt;
  {&lt;br /&gt;
    life--;&lt;br /&gt;
  }&lt;br /&gt;
  switch (life) {&lt;br /&gt;
    case (3) :&lt;br /&gt;
      digitalWrite(D0, true);&lt;br /&gt;
      digitalWrite(D5, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case (2) :&lt;br /&gt;
      analogWrite(D0, 135);&lt;br /&gt;
      digitalWrite(D5, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case (1) :&lt;br /&gt;
      analogWrite(D0, 90);&lt;br /&gt;
      digitalWrite(D5, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case (0) :&lt;br /&gt;
      digitalWrite(D0, false);&lt;br /&gt;
      digitalWrite(D5, true);&lt;br /&gt;
      break;&lt;br /&gt;
    case (5) : //shoot&lt;br /&gt;
      Serial.println(&amp;quot;shoot&amp;quot;);&lt;br /&gt;
      shoot = true;&lt;br /&gt;
      shootStartTime = millis();&lt;br /&gt;
      break;&lt;br /&gt;
  }&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;/shoot&amp;quot;, HTTP_GET, []() {&lt;br /&gt;
    val = 5;&lt;br /&gt;
    Serial.println(&amp;quot;shoot&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;style type=\&amp;quot;text/css\&amp;quot;&amp;gt;  body { color: #212121; background-color: #F08D29 } &amp;lt;/style&amp;gt;&amp;quot;;&lt;br /&gt;
  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;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;/avance\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; height:20%; background-color:#6B6764;\&amp;quot;\&amp;gt;Avance &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/br&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;/gauche\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Gauche &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: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Droite &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;a href=\&amp;quot;/recule\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Recule &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/br&amp;gt;&amp;lt;/br&amp;gt;\r\n&amp;quot;;&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: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Stop &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/br&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;/shoot\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Shoot &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;
void instruction(int valeur) { //Cette fonction traite les instructions qui sont reçues&lt;br /&gt;
  switch (valeur) {                     // En fonction de la variable valeur on va donner un ordre aux servos&lt;br /&gt;
    case 0 : //stop&lt;br /&gt;
      digitalWrite(D1, false);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, false);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case 1 : //avance&lt;br /&gt;
      digitalWrite(D1, true);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, true);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      //      analogWrite(D6, true);&lt;br /&gt;
      //      analogWrite(D7, true);&lt;br /&gt;
      break;&lt;br /&gt;
    case 2 : //recule&lt;br /&gt;
      digitalWrite(D1, false);&lt;br /&gt;
      digitalWrite(D2, true);&lt;br /&gt;
      digitalWrite(D3, false);&lt;br /&gt;
      digitalWrite(D4, true);&lt;br /&gt;
      //      analogWrite(D6, 100);&lt;br /&gt;
      //      analogWrite(D7, 100);&lt;br /&gt;
      break;&lt;br /&gt;
    case 3 : //gauche&lt;br /&gt;
      digitalWrite(D1, true);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, false);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      //      analogWrite(D7, 180);&lt;br /&gt;
      break;&lt;br /&gt;
    case 4 : //droite&lt;br /&gt;
      digitalWrite(D1, false);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, true);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      //      analogWrite(D6, 180);&lt;br /&gt;
      break;&lt;br /&gt;
    case 5 : //shoot&lt;br /&gt;
      shoot = true;&lt;br /&gt;
      shootStartTime = millis();&lt;br /&gt;
      break;&lt;br /&gt;
  }&lt;br /&gt;
&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;
  return;                                  // on retourne à l'endroit ou la fonction a été appelée.&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
[[catégorie:enib2018]]&lt;/div&gt;</summary>
		<author><name>Phycelot</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8813</id>
		<title>Mortal robot</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8813"/>
				<updated>2018-01-19T15:04:54Z</updated>
		
		<summary type="html">&lt;p&gt;Phycelot : /* Code Robot */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sur la base des petits bots, il s'agit d'ajouter un laser et un récepteur avec un système de point de vie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Pédagogie==&lt;br /&gt;
*construire&lt;br /&gt;
*programmer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Membres de l'équipe==&lt;br /&gt;
* Prouteau Antonin&lt;br /&gt;
* Jegou Gergaud Nils&lt;br /&gt;
* Kerouanton Jeremy&lt;br /&gt;
* Ridae Hamdani&lt;br /&gt;
* Asaad ALAKOUM&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 0359.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Matériel pour le 1er robot==&lt;br /&gt;
&lt;br /&gt;
* Carte wemos D1 mini &lt;br /&gt;
* 1 interrupteur&lt;br /&gt;
* 4 piles + son socle &lt;br /&gt;
* 2 LED&lt;br /&gt;
* 3 Résistances&lt;br /&gt;
* 2 Roues + 1 petite roue à l'avant&lt;br /&gt;
* 2 Moteurs à courant continu&lt;br /&gt;
* 1 pont en H &lt;br /&gt;
* 1 photo résistance&lt;br /&gt;
* 1 émetteur lazer KY008&lt;br /&gt;
&lt;br /&gt;
==Avancement du projet==&lt;br /&gt;
&lt;br /&gt;
Le 1er robot est terminé.&lt;br /&gt;
Le 2ème est en cours, nous avons imprimé le châssis ainsi que les roues et le socle des piles .&lt;br /&gt;
&lt;br /&gt;
==Fichier==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Diaporama-HackENIB2018.odp]]&lt;br /&gt;
&lt;br /&gt;
[[ Fichier:Impression final svg.svg]]&lt;br /&gt;
&lt;br /&gt;
==Code Robot==&lt;br /&gt;
//////////////////&lt;br /&gt;
// Mortal Robot //&lt;br /&gt;
//////////////////&lt;br /&gt;
&lt;br /&gt;
// Ce programme est inspire de : http://www.esp8266.com/viewtopic.php?f=29&amp;amp;t=6419#sthash.gd1tJhwU.dpuf, http://wikidebrouillard.org/index.php?title=Petit_Bot_un_robot_controlable_en_Wifi&lt;br /&gt;
// Sous licence CC-By-Sa&lt;br /&gt;
// Par des gens bien&lt;br /&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;
&lt;br /&gt;
//  Definition du WiFi&lt;br /&gt;
const char *nomDuReseau = &amp;quot;mortalRobot&amp;quot;;     // Nom du réseau wifi&lt;br /&gt;
const char *motDePasse = &amp;quot;&amp;quot;;    // Mot de passe du réseau wifi&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;
//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;
int life = 3; //point de vie du robot&lt;br /&gt;
bool shoot = false;&lt;br /&gt;
long shootStartTime = 0;;&lt;br /&gt;
long shootDuration = 2000;&lt;br /&gt;
int light = 0;&lt;br /&gt;
int prevLight = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&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é a l'ordinateur&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  configDuWifi();&lt;br /&gt;
  pinMode(D0, OUTPUT);&lt;br /&gt;
  pinMode(D1, OUTPUT);&lt;br /&gt;
  pinMode(D2, OUTPUT);&lt;br /&gt;
  pinMode(D3, OUTPUT);&lt;br /&gt;
  pinMode(D4, OUTPUT);&lt;br /&gt;
  pinMode(D5, OUTPUT);&lt;br /&gt;
  pinMode(D6, OUTPUT);&lt;br /&gt;
  pinMode(D7, OUTPUT);&lt;br /&gt;
  pinMode(D8, OUTPUT);&lt;br /&gt;
  //Moteur à l'arrêt&lt;br /&gt;
  //  analogWrite(D6, LOW);&lt;br /&gt;
  //  analogWrite(D7, LOW);&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;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  val = -1;&lt;br /&gt;
  monServeur.handleClient();&lt;br /&gt;
  //  lifeManage();&lt;br /&gt;
  shootManage();&lt;br /&gt;
  light = analogRead(A0);&lt;br /&gt;
  digitalWrite(D0, (light &amp;gt; prevLight+40));&lt;br /&gt;
  prevLight = light;&lt;br /&gt;
  Serial.println(analogRead(A0));&lt;br /&gt;
  //  digitalWrite(D0,analogRead(A0));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void shootManage()&lt;br /&gt;
{&lt;br /&gt;
  if (shoot)&lt;br /&gt;
  {&lt;br /&gt;
    if ((millis() - shootStartTime) &amp;gt; shootDuration) {&lt;br /&gt;
      digitalWrite(D8, false);&lt;br /&gt;
      shoot = false;&lt;br /&gt;
    } else {&lt;br /&gt;
      digitalWrite(D8, true);&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
  } else&lt;br /&gt;
  {&lt;br /&gt;
    digitalWrite(D8, false);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
bool isShoot()&lt;br /&gt;
{&lt;br /&gt;
  //  Serial.println(&amp;quot;slt&amp;quot;);&lt;br /&gt;
  //  Serial.println(analogRead(A0));&lt;br /&gt;
  return (analogRead(A0) &amp;gt; 800);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void lifeManage() //gere les points de vie et l'affichage&lt;br /&gt;
{&lt;br /&gt;
  if (isShoot())&lt;br /&gt;
  {&lt;br /&gt;
    life--;&lt;br /&gt;
  }&lt;br /&gt;
  switch (life) {&lt;br /&gt;
    case (3) :&lt;br /&gt;
      digitalWrite(D0, true);&lt;br /&gt;
      digitalWrite(D5, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case (2) :&lt;br /&gt;
      analogWrite(D0, 135);&lt;br /&gt;
      digitalWrite(D5, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case (1) :&lt;br /&gt;
      analogWrite(D0, 90);&lt;br /&gt;
      digitalWrite(D5, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case (0) :&lt;br /&gt;
      digitalWrite(D0, false);&lt;br /&gt;
      digitalWrite(D5, true);&lt;br /&gt;
      break;&lt;br /&gt;
    case (5) : //shoot&lt;br /&gt;
      Serial.println(&amp;quot;shoot&amp;quot;);&lt;br /&gt;
      shoot = true;&lt;br /&gt;
      shootStartTime = millis();&lt;br /&gt;
      break;&lt;br /&gt;
  }&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;/shoot&amp;quot;, HTTP_GET, []() {&lt;br /&gt;
    val = 5;&lt;br /&gt;
    Serial.println(&amp;quot;shoot&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;style type=\&amp;quot;text/css\&amp;quot;&amp;gt;  body { color: #212121; background-color: #F08D29 } &amp;lt;/style&amp;gt;&amp;quot;;&lt;br /&gt;
  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;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;/avance\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; height:20%; background-color:#6B6764;\&amp;quot;\&amp;gt;Avance &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/br&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;/gauche\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Gauche &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: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Droite &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;a href=\&amp;quot;/recule\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Recule &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/br&amp;gt;&amp;lt;/br&amp;gt;\r\n&amp;quot;;&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: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Stop &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/br&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;/shoot\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;button style=\&amp;quot;font-size:200%; width: 45%; background-color:#6B6764;\&amp;quot;\&amp;gt;Shoot &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;
void instruction(int valeur) { //Cette fonction traite les instructions qui sont reçues&lt;br /&gt;
  switch (valeur) {                     // En fonction de la variable valeur on va donner un ordre aux servos&lt;br /&gt;
    case 0 : //stop&lt;br /&gt;
      digitalWrite(D1, false);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, false);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      break;&lt;br /&gt;
    case 1 : //avance&lt;br /&gt;
      digitalWrite(D1, true);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, true);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      //      analogWrite(D6, true);&lt;br /&gt;
      //      analogWrite(D7, true);&lt;br /&gt;
      break;&lt;br /&gt;
    case 2 : //recule&lt;br /&gt;
      digitalWrite(D1, false);&lt;br /&gt;
      digitalWrite(D2, true);&lt;br /&gt;
      digitalWrite(D3, false);&lt;br /&gt;
      digitalWrite(D4, true);&lt;br /&gt;
      //      analogWrite(D6, 100);&lt;br /&gt;
      //      analogWrite(D7, 100);&lt;br /&gt;
      break;&lt;br /&gt;
    case 3 : //gauche&lt;br /&gt;
      digitalWrite(D1, true);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, false);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      //      analogWrite(D7, 180);&lt;br /&gt;
      break;&lt;br /&gt;
    case 4 : //droite&lt;br /&gt;
      digitalWrite(D1, false);&lt;br /&gt;
      digitalWrite(D2, false);&lt;br /&gt;
      digitalWrite(D3, true);&lt;br /&gt;
      digitalWrite(D4, false);&lt;br /&gt;
      //      analogWrite(D6, 180);&lt;br /&gt;
      break;&lt;br /&gt;
    case 5 : //shoot&lt;br /&gt;
      shoot = true;&lt;br /&gt;
      shootStartTime = millis();&lt;br /&gt;
      break;&lt;br /&gt;
  }&lt;br /&gt;
&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;
  return;                                  // on retourne à l'endroit ou la fonction a été appelée.&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
[[catégorie:enib2018]]&lt;/div&gt;</summary>
		<author><name>Phycelot</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8811</id>
		<title>Mortal robot</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8811"/>
				<updated>2018-01-19T15:03:29Z</updated>
		
		<summary type="html">&lt;p&gt;Phycelot : /* Membres de l'équipe */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sur la base des petits bots, il s'agit d'ajouter un laser et un récepteur avec un système de point de vie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Pédagogie==&lt;br /&gt;
*construire&lt;br /&gt;
*programmer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Membres de l'équipe==&lt;br /&gt;
* Prouteau Antonin&lt;br /&gt;
* Jegou Gergaud Nils&lt;br /&gt;
* Kerouanton Jeremy&lt;br /&gt;
* Ridae Hamdani&lt;br /&gt;
* Asaad ALAKOUM&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 0359.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Matériel pour le 1er robot==&lt;br /&gt;
&lt;br /&gt;
* Carte wemos D1 mini &lt;br /&gt;
* 1 interrupteur&lt;br /&gt;
* 4 piles + son socle &lt;br /&gt;
* 2 LED&lt;br /&gt;
* 3 Résistances&lt;br /&gt;
* 2 Roues + 1 petite roue à l'avant&lt;br /&gt;
* 2 Moteurs à courant continu&lt;br /&gt;
* 1 pont en H &lt;br /&gt;
* 1 photo résistance&lt;br /&gt;
* 1 émetteur lazer KY008&lt;br /&gt;
&lt;br /&gt;
==Avancement du projet==&lt;br /&gt;
&lt;br /&gt;
Le 1er robot est terminé.&lt;br /&gt;
Le 2ème est en cours, nous avons imprimé le châssis ainsi que les roues et le socle des piles .&lt;br /&gt;
&lt;br /&gt;
==Fichier==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Diaporama-HackENIB2018.odp]]&lt;br /&gt;
&lt;br /&gt;
[[ Fichier:Impression final svg.svg]]&lt;br /&gt;
&lt;br /&gt;
==Code Robot==&lt;br /&gt;
&lt;br /&gt;
[[catégorie:enib2018]]&lt;/div&gt;</summary>
		<author><name>Phycelot</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:IMG_0359.jpg&amp;diff=8808</id>
		<title>Fichier:IMG 0359.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:IMG_0359.jpg&amp;diff=8808"/>
				<updated>2018-01-19T15:02:34Z</updated>
		
		<summary type="html">&lt;p&gt;Phycelot : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Phycelot</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8807</id>
		<title>Mortal robot</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8807"/>
				<updated>2018-01-19T15:01:48Z</updated>
		
		<summary type="html">&lt;p&gt;Phycelot : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sur la base des petits bots, il s'agit d'ajouter un laser et un récepteur avec un système de point de vie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Pédagogie==&lt;br /&gt;
*construire&lt;br /&gt;
*programmer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Membres de l'équipe==&lt;br /&gt;
* Prouteau Antonin&lt;br /&gt;
* Jegou Gergaud Nils&lt;br /&gt;
* Kerouanton Jeremy&lt;br /&gt;
* Ridae Hamdani&lt;br /&gt;
* Asaad ALAKOUM&lt;br /&gt;
&lt;br /&gt;
==Matériel pour le 1er robot==&lt;br /&gt;
&lt;br /&gt;
* Carte wemos D1 mini &lt;br /&gt;
* 1 interrupteur&lt;br /&gt;
* 4 piles + son socle &lt;br /&gt;
* 2 LED&lt;br /&gt;
* 3 Résistances&lt;br /&gt;
* 2 Roues + 1 petite roue à l'avant&lt;br /&gt;
* 2 Moteurs à courant continu&lt;br /&gt;
* 1 pont en H &lt;br /&gt;
* 1 photo résistance&lt;br /&gt;
* 1 émetteur lazer KY008&lt;br /&gt;
&lt;br /&gt;
==Avancement du projet==&lt;br /&gt;
&lt;br /&gt;
Le 1er robot est terminé.&lt;br /&gt;
Le 2ème est en cours, nous avons imprimé le châssis ainsi que les roues et le socle des piles .&lt;br /&gt;
&lt;br /&gt;
==Fichier==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Diaporama-HackENIB2018.odp]]&lt;br /&gt;
&lt;br /&gt;
[[ Fichier:Impression final svg.svg]]&lt;br /&gt;
&lt;br /&gt;
==Code Robot==&lt;br /&gt;
&lt;br /&gt;
[[catégorie:enib2018]]&lt;/div&gt;</summary>
		<author><name>Phycelot</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8794</id>
		<title>Mortal robot</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8794"/>
				<updated>2018-01-19T14:51:20Z</updated>
		
		<summary type="html">&lt;p&gt;Phycelot : /* Fichier */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sur la base des petits bots, il s'agit d'ajouter un laser et un récepteur avec un système de point de vie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Pédagogie==&lt;br /&gt;
*construire&lt;br /&gt;
*programmer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Membres de l'équipe==&lt;br /&gt;
* Prouteau Antonin&lt;br /&gt;
* Jegou Gergaud Nils&lt;br /&gt;
* Kerouanton Jeremy&lt;br /&gt;
* Ridae Hamdani&lt;br /&gt;
* Asaad ALAKOUM&lt;br /&gt;
&lt;br /&gt;
==Matériel pour le 1er robot==&lt;br /&gt;
&lt;br /&gt;
* Carte wemos D1 mini &lt;br /&gt;
* 1 interrupteur&lt;br /&gt;
* 4 piles + son socle &lt;br /&gt;
* 2 LED&lt;br /&gt;
* 3 Résistances&lt;br /&gt;
* 2 Roues + 1 petite roue à l'avant&lt;br /&gt;
* 2 Moteurs à courant continu&lt;br /&gt;
* 1 pont en H &lt;br /&gt;
* 1 photo résistance&lt;br /&gt;
* 1 émetteur lazer KY008&lt;br /&gt;
&lt;br /&gt;
==Avancement du projet==&lt;br /&gt;
&lt;br /&gt;
Le 1er robot est terminé.&lt;br /&gt;
Le 2ème est en cours, nous avons imprimé le châssis ainsi que les roues et le socle des piles .&lt;br /&gt;
&lt;br /&gt;
==Fichier==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Diaporama-HackENIB2018.odp]]&lt;br /&gt;
&lt;br /&gt;
[[ Fichier:Impression final svg.svg]]&lt;br /&gt;
&lt;br /&gt;
[[catégorie:enib2018]]&lt;/div&gt;</summary>
		<author><name>Phycelot</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8791</id>
		<title>Mortal robot</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8791"/>
				<updated>2018-01-19T14:50:28Z</updated>
		
		<summary type="html">&lt;p&gt;Phycelot : /* Fichier */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sur la base des petits bots, il s'agit d'ajouter un laser et un récepteur avec un système de point de vie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Pédagogie==&lt;br /&gt;
*construire&lt;br /&gt;
*programmer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Membres de l'équipe==&lt;br /&gt;
* Prouteau Antonin&lt;br /&gt;
* Jegou Gergaud Nils&lt;br /&gt;
* Kerouanton Jeremy&lt;br /&gt;
* Ridae Hamdani&lt;br /&gt;
* Asaad ALAKOUM&lt;br /&gt;
&lt;br /&gt;
==Matériel pour le 1er robot==&lt;br /&gt;
&lt;br /&gt;
* Carte wemos D1 mini &lt;br /&gt;
* 1 interrupteur&lt;br /&gt;
* 4 piles + son socle &lt;br /&gt;
* 2 LED&lt;br /&gt;
* 3 Résistances&lt;br /&gt;
* 2 Roues + 1 petite roue à l'avant&lt;br /&gt;
* 2 Moteurs à courant continu&lt;br /&gt;
* 1 pont en H &lt;br /&gt;
* 1 photo résistance&lt;br /&gt;
* 1 émetteur lazer KY008&lt;br /&gt;
&lt;br /&gt;
==Avancement du projet==&lt;br /&gt;
&lt;br /&gt;
Le 1er robot est terminé.&lt;br /&gt;
Le 2ème est en cours, nous avons imprimé le châssis ainsi que les roues et le socle des piles .&lt;br /&gt;
&lt;br /&gt;
==Fichier==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Diaporama-HackENIB2018.odp]]&lt;br /&gt;
&lt;br /&gt;
[[ Fichier:Impression final svg.svg]]&lt;br /&gt;
[[catégorie:enib2018]]&lt;/div&gt;</summary>
		<author><name>Phycelot</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:Impression_final_svg.svg&amp;diff=8788</id>
		<title>Fichier:Impression final svg.svg</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:Impression_final_svg.svg&amp;diff=8788"/>
				<updated>2018-01-19T14:48:16Z</updated>
		
		<summary type="html">&lt;p&gt;Phycelot : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Phycelot</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8787</id>
		<title>Mortal robot</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8787"/>
				<updated>2018-01-19T14:46:32Z</updated>
		
		<summary type="html">&lt;p&gt;Phycelot : /* Avancer du projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sur la base des petits bots, il s'agit d'ajouter un laser et un récepteur avec un système de point de vie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Pédagogie==&lt;br /&gt;
*construire&lt;br /&gt;
*programmer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Membres de l'équipe==&lt;br /&gt;
* Prouteau Antonin&lt;br /&gt;
* Jegou Gergaud Nils&lt;br /&gt;
* Kerouanton Jeremy&lt;br /&gt;
* Ridae Hamdani&lt;br /&gt;
* Asaad ALAKOUM&lt;br /&gt;
&lt;br /&gt;
==Matériel pour le 1er robot==&lt;br /&gt;
&lt;br /&gt;
* Carte wemos D1 mini &lt;br /&gt;
* 1 interrupteur&lt;br /&gt;
* 4 piles + son socle &lt;br /&gt;
* 2 LED&lt;br /&gt;
* 3 Résistances&lt;br /&gt;
* 2 Roues + 1 petite roue à l'avant&lt;br /&gt;
* 2 Moteurs à courant continu&lt;br /&gt;
* 1 pont en H &lt;br /&gt;
* 1 photo résistance&lt;br /&gt;
* 1 émetteur lazer KY008&lt;br /&gt;
&lt;br /&gt;
==Avancement du projet==&lt;br /&gt;
&lt;br /&gt;
Le 1er robot est terminé.&lt;br /&gt;
Le 2ème est en cours, nous avons imprimé le châssis ainsi que les roues et le socle des piles .&lt;br /&gt;
&lt;br /&gt;
==Fichier==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Diaporama-HackENIB2018.odp]]&lt;br /&gt;
&lt;br /&gt;
[[catégorie:enib2018]]&lt;/div&gt;</summary>
		<author><name>Phycelot</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8786</id>
		<title>Mortal robot</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8786"/>
				<updated>2018-01-19T14:46:05Z</updated>
		
		<summary type="html">&lt;p&gt;Phycelot : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sur la base des petits bots, il s'agit d'ajouter un laser et un récepteur avec un système de point de vie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Pédagogie==&lt;br /&gt;
*construire&lt;br /&gt;
*programmer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Membres de l'équipe==&lt;br /&gt;
* Prouteau Antonin&lt;br /&gt;
* Jegou Gergaud Nils&lt;br /&gt;
* Kerouanton Jeremy&lt;br /&gt;
* Ridae Hamdani&lt;br /&gt;
* Asaad ALAKOUM&lt;br /&gt;
&lt;br /&gt;
==Matériel pour le 1er robot==&lt;br /&gt;
&lt;br /&gt;
* Carte wemos D1 mini &lt;br /&gt;
* 1 interrupteur&lt;br /&gt;
* 4 piles + son socle &lt;br /&gt;
* 2 LED&lt;br /&gt;
* 3 Résistances&lt;br /&gt;
* 2 Roues + 1 petite roue à l'avant&lt;br /&gt;
* 2 Moteurs à courant continu&lt;br /&gt;
* 1 pont en H &lt;br /&gt;
* 1 photo résistance&lt;br /&gt;
* 1 émetteur lazer KY008&lt;br /&gt;
&lt;br /&gt;
==Avancer du projet==&lt;br /&gt;
&lt;br /&gt;
Le 1er robot est terminé.&lt;br /&gt;
Le 2ème est en cours, nous avons imprimé le châssis ainsi que les roues et le socle des piles .&lt;br /&gt;
&lt;br /&gt;
==Fichier==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Diaporama-HackENIB2018.odp]]&lt;br /&gt;
&lt;br /&gt;
[[catégorie:enib2018]]&lt;/div&gt;</summary>
		<author><name>Phycelot</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8776</id>
		<title>Mortal robot</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8776"/>
				<updated>2018-01-19T14:38:14Z</updated>
		
		<summary type="html">&lt;p&gt;Phycelot : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sur la base des petits bots, il s'agit d'ajouter un laser et un récepteur avec un système de point de vie.&lt;br /&gt;
&lt;br /&gt;
==Pédagogie==&lt;br /&gt;
*construire&lt;br /&gt;
*programmer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Membres de l'équipe==&lt;br /&gt;
* Prouteau Antonin&lt;br /&gt;
* Jegou Gergaud Nils&lt;br /&gt;
* Kerouanton Jeremy&lt;br /&gt;
* Ridae Hamdani&lt;br /&gt;
* Asaad ALAKOUM&lt;br /&gt;
&lt;br /&gt;
==Matériel pour le 1er robot==&lt;br /&gt;
&lt;br /&gt;
* Carte wemos D1 mini &lt;br /&gt;
* 1 interrupteur&lt;br /&gt;
* 4 piles + son socle &lt;br /&gt;
* 2 LED&lt;br /&gt;
* 3 Résistances&lt;br /&gt;
* 2 Roues + 1 petite roue à l'avant&lt;br /&gt;
* 2 Moteurs à courant continu&lt;br /&gt;
* 1 pont en H &lt;br /&gt;
* 1 photo résistance&lt;br /&gt;
* 1 émetteur lazer KY008&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Fichier==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Diaporama-HackENIB2018.odp]]&lt;br /&gt;
&lt;br /&gt;
[[catégorie:enib2018]]&lt;/div&gt;</summary>
		<author><name>Phycelot</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8491</id>
		<title>Mortal robot</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8491"/>
				<updated>2018-01-18T14:50:38Z</updated>
		
		<summary type="html">&lt;p&gt;Phycelot : /* Membres de l'équipe */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sur la base des petits bots, il s'agit d'ajouter un laser et un récepteur avec un système de point de vie.&lt;br /&gt;
&lt;br /&gt;
==Pédagogie==&lt;br /&gt;
*construire&lt;br /&gt;
*programmer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Membres de l'équipe==&lt;br /&gt;
* Prouteau Antonin&lt;br /&gt;
* Jegou Gergaud Nils&lt;br /&gt;
* Kerouanton Jeremy&lt;br /&gt;
* Ridae Hamdani&lt;br /&gt;
* Asaad ALAKOUM&lt;br /&gt;
&lt;br /&gt;
==Fichier==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Diaporama-HackENIB2018.odp]]&lt;br /&gt;
&lt;br /&gt;
[[catégorie:enib2018]]&lt;/div&gt;</summary>
		<author><name>Phycelot</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8489</id>
		<title>Mortal robot</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8489"/>
				<updated>2018-01-18T14:50:08Z</updated>
		
		<summary type="html">&lt;p&gt;Phycelot : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sur la base des petits bots, il s'agit d'ajouter un laser et un récepteur avec un système de point de vie.&lt;br /&gt;
&lt;br /&gt;
==Pédagogie==&lt;br /&gt;
*construire&lt;br /&gt;
*programmer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Membres de l'équipe==&lt;br /&gt;
* Prouteau Antonin&lt;br /&gt;
* Jegou Gergaud Nils&lt;br /&gt;
* Kerouanton Jeremy&lt;br /&gt;
* Ridae Hamdani&lt;br /&gt;
* Asaad ALAKOUM&lt;br /&gt;
&lt;br /&gt;
==Membres de l'équipe==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Diaporama-HackENIB2018.odp]]&lt;br /&gt;
&lt;br /&gt;
[[catégorie:enib2018]]&lt;/div&gt;</summary>
		<author><name>Phycelot</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8485</id>
		<title>Mortal robot</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8485"/>
				<updated>2018-01-18T14:49:33Z</updated>
		
		<summary type="html">&lt;p&gt;Phycelot : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sur la base des petits bots, il s'agit d'ajouter un laser et un récepteur avec un système de point de vie.&lt;br /&gt;
&lt;br /&gt;
==Pédagogie==&lt;br /&gt;
*construire&lt;br /&gt;
*programmer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Membres de l'équipe==&lt;br /&gt;
* Prouteau Antonin&lt;br /&gt;
* Jegou Gergaud Nils&lt;br /&gt;
* Kerouanton Jeremy&lt;br /&gt;
* Ridae Hamdani&lt;br /&gt;
* Asaad ALAKOUM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[catégorie:enib2018]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Diaporama-HackENIB2018.odp]]&lt;/div&gt;</summary>
		<author><name>Phycelot</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:Diaporama-HackENIB2018.odp&amp;diff=8482</id>
		<title>Fichier:Diaporama-HackENIB2018.odp</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:Diaporama-HackENIB2018.odp&amp;diff=8482"/>
				<updated>2018-01-18T14:48:36Z</updated>
		
		<summary type="html">&lt;p&gt;Phycelot : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Phycelot</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8476</id>
		<title>Mortal robot</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8476"/>
				<updated>2018-01-18T14:45:43Z</updated>
		
		<summary type="html">&lt;p&gt;Phycelot : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sur la base des petits bots, il s'agit d'ajouter un laser et un récepteur avec un système de point de vie.&lt;br /&gt;
&lt;br /&gt;
==Pédagogie==&lt;br /&gt;
*construire&lt;br /&gt;
*programmer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Membres de l'équipe==&lt;br /&gt;
* Prouteau Antonin&lt;br /&gt;
* Jegou Gergaud Nils&lt;br /&gt;
* Kerouanton Jeremy&lt;br /&gt;
* Ridae Hamdani&lt;br /&gt;
* Asaad ALAKOUM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[catégorie:enib2018]]&lt;/div&gt;</summary>
		<author><name>Phycelot</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8466</id>
		<title>Mortal robot</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8466"/>
				<updated>2018-01-18T09:52:56Z</updated>
		
		<summary type="html">&lt;p&gt;Phycelot : /* Membres de l'équipe */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;sur la base des petits bots, il s'agit d'ajouter un laser et un récepteur avec un système de point de vie.&lt;br /&gt;
&lt;br /&gt;
==Pédagogie==&lt;br /&gt;
*construire&lt;br /&gt;
*programmer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Membres de l'équipe==&lt;br /&gt;
* Prouteau Antonin&lt;br /&gt;
* Jegou Gergaud Nils&lt;br /&gt;
* Kerouanton Jeremy&lt;br /&gt;
* ridae hamdani&lt;br /&gt;
* Asaad ALAKOUM &lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[catégorie:enib2018]]&lt;/div&gt;</summary>
		<author><name>Phycelot</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8247</id>
		<title>Mortal robot</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8247"/>
				<updated>2018-01-12T15:33:12Z</updated>
		
		<summary type="html">&lt;p&gt;Phycelot : /* Membres de l'équipe */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;sur la base des petits bots, il s'agit d'ajouter un laser et un récepteur avec un système de point de vie.&lt;br /&gt;
&lt;br /&gt;
==Pédagogie==&lt;br /&gt;
*construire&lt;br /&gt;
*programmer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Membres de l'équipe==&lt;br /&gt;
* Prouteau Antonin&lt;br /&gt;
* Jegou Gergaud Nils&lt;br /&gt;
* Kerouanton Jeremy&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[catégorie:enib2018]]&lt;/div&gt;</summary>
		<author><name>Phycelot</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8242</id>
		<title>Mortal robot</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8242"/>
				<updated>2018-01-12T15:31:28Z</updated>
		
		<summary type="html">&lt;p&gt;Phycelot : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;sur la base des petits bots, il s'agit d'ajouter un laser et un récepteur avec un système de point de vie.&lt;br /&gt;
&lt;br /&gt;
==Pédagogie==&lt;br /&gt;
*construire&lt;br /&gt;
*programmer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Membres de l'équipe==&lt;br /&gt;
* Prouteau Antonin&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[catégorie:enib2018]]&lt;/div&gt;</summary>
		<author><name>Phycelot</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8240</id>
		<title>Mortal robot</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Mortal_robot&amp;diff=8240"/>
				<updated>2018-01-12T15:31:12Z</updated>
		
		<summary type="html">&lt;p&gt;Phycelot : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;sur la base des petits bots, il s'agit d'ajouter un laser et un récepteur avec un système de point de vie.&lt;br /&gt;
&lt;br /&gt;
==Pédagogie==&lt;br /&gt;
*construire, programmer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Membres de l'équipe==&lt;br /&gt;
* Prouteau Antonin&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[catégorie:enib2018]]&lt;/div&gt;</summary>
		<author><name>Phycelot</name></author>	</entry>

	</feed>