<?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=Titouan+Melon</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=Titouan+Melon"/>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Sp%C3%A9cial:Contributions/Titouan_Melon"/>
		<updated>2026-05-18T19:24:13Z</updated>
		<subtitle>Contributions de l’utilisateur</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19338</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19338"/>
				<updated>2022-01-19T14:01:44Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : /* Solénoïde */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Des taupes montent et descendent.&lt;br /&gt;
Quand elles sortent de leur trou, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle ne redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D) (x7)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x7)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
* Breadboard&lt;br /&gt;
&lt;br /&gt;
* Alimentation 12V&lt;br /&gt;
* Alimentation 5V (câble USB+PC)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
[[Fichier:BoxPartie1.pdf|vignette]]&lt;br /&gt;
[[Fichier:BoxPartie2.pdf|vignette]]&lt;br /&gt;
[[Fichier:BoxPartie3.pdf|vignette]]&lt;br /&gt;
&lt;br /&gt;
Mécanisme prévu à l'origine pour allonger la course de la taupe :&lt;br /&gt;
[[Fichier:Taupe originale.jpg|vignette|néant|Taupe origninale]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Une taupe.jpg|vignette|néant|Une taupe]]&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette|néant]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mega était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
===Relais===&lt;br /&gt;
&lt;br /&gt;
Un relais et un interrupteur commandé par un signal de commande électriques.&lt;br /&gt;
&lt;br /&gt;
Il faut d'un coté brancher le relais à la masse de l'arduino et aux 5V de l'arduino et sur un pin de l'arduino qui servira a commander le relais.&lt;br /&gt;
&lt;br /&gt;
De l'autre coté il faut brancher le + et la masse de la tension voulu et le cable de sortie qui sortira soit du OV soit du 12V ici.&lt;br /&gt;
&lt;br /&gt;
Ensuite quand on met le pin a 1 on active le relais et donc on sort du 12V et quand on a un 0 on sort du 0V&lt;br /&gt;
&lt;br /&gt;
===Solénoide===&lt;br /&gt;
&lt;br /&gt;
Il s'agit d'un électroaimant qui fait rentrer un tige monté sur ressort quand elle est alimenté et quand elle n'est pas alimenté la tige ressort grâce aux ressort.&lt;br /&gt;
&lt;br /&gt;
Pour l'alimenter il faut mettre une de ses bornes a la masse et l'autre aux 12V.&lt;br /&gt;
&lt;br /&gt;
Attention le solénoïde chauffe beaucoup mais c'est prévu par le fonctionnement normal.&lt;br /&gt;
&lt;br /&gt;
===Bouton===&lt;br /&gt;
&lt;br /&gt;
Il faut mettre une bornes aux 5V de l'arduino via une resistance et une autre sur un pin de commande, et une résistance entre ce pin et la masse.&lt;br /&gt;
&lt;br /&gt;
===Ecran OLED===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|néant|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&lt;br /&gt;
Tout d'abord il faut tester les composants pour s'assurer qu'ils fonctionnent tous bien&lt;br /&gt;
&lt;br /&gt;
===Bouton===&lt;br /&gt;
&lt;br /&gt;
Ce code permet de verifier le fonctionnement des boutons&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22; //22 represente le pin ou sera branché le bouton&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT); //Cette ligne permet de passer le pin en mode entré&lt;br /&gt;
  Serial.begin(9600); //Initialise le terminal &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1)); //Ecris l'etat du pin du bouton (0 ou 1)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Solénoïde===&lt;br /&gt;
&lt;br /&gt;
Ce code permettra d'activer/desactiver le solenoide 1s/1s&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cmd_taupe1 = 53; //53 represente le pin ou sera branché le bouton&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT); //Cette ligne passe le pin en sortie&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  digitalWrite(cmd_taupe1, HIGH); //Active le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
  digitalWrite(cmd_taupe1, LOW); //Desactive le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===LCD===&lt;br /&gt;
&lt;br /&gt;
Pour voir toute les possibilité offerte par le LCD nous vous conseillons le site electronique amateur&amp;lt;ref&amp;gt;https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ici on ne fait que écrire &amp;quot;vous avez: xx points&amp;quot; sur l'écran&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Vous avez :&amp;quot;);&lt;br /&gt;
  display.setCursor(50, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.println(&amp;quot; points&amp;quot;);&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.print(pts);&lt;br /&gt;
  display.display(); //Affiche l'ecran&lt;br /&gt;
  display.clearDisplay(); //Efface l'ecran&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Taupe===&lt;br /&gt;
&lt;br /&gt;
Ici le code rassemble un solenoide et un bouton pour faire une taupe&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int cmd_taupe1 = 53;&lt;br /&gt;
int int_cmd_taupe1 = 1;&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
&lt;br /&gt;
int pts = 0;&lt;br /&gt;
&lt;br /&gt;
int start = 0;&lt;br /&gt;
int now = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  now = millis(); //On récupère le temps dans une variable&lt;br /&gt;
  if (now-start &amp;gt; 1000) //Si il s'est écoulé plus de 1s&lt;br /&gt;
  {&lt;br /&gt;
    start = millis(); //On renitialise le temps de départ du timer&lt;br /&gt;
    if (int_cmd_taupe1 == 1) //Si la taupe est rentré elle sort&lt;br /&gt;
      int_cmd_taupe1 = 0;&lt;br /&gt;
    else //sinon elle rentre&lt;br /&gt;
      int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  digitalWrite(cmd_taupe1, int_cmd_taupe1); //On ecrit sur les pin des selenoide les valeurs de commande de ceux ci&lt;br /&gt;
&lt;br /&gt;
  //Capteur&lt;br /&gt;
  if (digitalRead(cpt_taupe1) == 1 &amp;amp;&amp;amp; int_cmd_taupe1 == 0) //Si la taupe est relevé est que le bouton est appuyé on gagne 1 points et la taupe se baisse&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prog final===&lt;br /&gt;
&lt;br /&gt;
Aprés avoir vérifié et cablé il ne reste plus qu'a tout rassembler pour le code final&lt;br /&gt;
&lt;br /&gt;
Ici il n'y a que 3 taupes mais vous pouvez en rajouter a votre guise et changer le texte sur l'ecran.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
int cmd_taupe1 = 53;&lt;br /&gt;
int cmd_taupe2 = 51;&lt;br /&gt;
int cmd_taupe3 = 49;&lt;br /&gt;
&lt;br /&gt;
int int_cmd_taupe1 = 1;&lt;br /&gt;
int int_cmd_taupe2 = 1;&lt;br /&gt;
int int_cmd_taupe3 = 1;&lt;br /&gt;
&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
int cpt_taupe2 = 24;&lt;br /&gt;
int cpt_taupe3 = 26;&lt;br /&gt;
&lt;br /&gt;
int pts = 0;&lt;br /&gt;
&lt;br /&gt;
int start = 0;&lt;br /&gt;
int now = 0;&lt;br /&gt;
&lt;br /&gt;
int random_int = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe2, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe3, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe2, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe3, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
  randomSeed(analogRead(0)); //Initialise le random par la lecture du bruit d'un pin analogique non branché&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  now = millis(); //On récupère le temps dans une variable&lt;br /&gt;
&lt;br /&gt;
  if (now-start &amp;gt; 1000) //Si il s'est écoulé plus de 1s&lt;br /&gt;
  {&lt;br /&gt;
    start = millis(); //On renitialise le temps de départ du timer&lt;br /&gt;
    random_int = random(1, 3); //On créer un nombre random entre 1 et le nombre de taupe (ici 3)&lt;br /&gt;
    if (int_cmd_taupe1 == 1 and random_int == 1) //Si la taupe est rentré est que le random l'indique elle sort&lt;br /&gt;
      int_cmd_taupe1 = 0;&lt;br /&gt;
    else //sinon elle rentre&lt;br /&gt;
      int_cmd_taupe1 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe2 == 1 and random_int == 2)&lt;br /&gt;
      int_cmd_taupe2 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe2 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe3 == 1 and random_int == 3)&lt;br /&gt;
      int_cmd_taupe3 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  //Taupe&lt;br /&gt;
  digitalWrite(cmd_taupe1, int_cmd_taupe1); //On ecrit sur les pin des selenoide les valeurs de commande de ceux ci&lt;br /&gt;
  digitalWrite(cmd_taupe2, int_cmd_taupe2);&lt;br /&gt;
  digitalWrite(cmd_taupe3, int_cmd_taupe3);&lt;br /&gt;
&lt;br /&gt;
  //LCD&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Vous avez :&amp;quot;);&lt;br /&gt;
  display.setCursor(50, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.println(&amp;quot; points&amp;quot;);&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.print(pts);&lt;br /&gt;
  display.display(); //Affiche l'ecran&lt;br /&gt;
  display.clearDisplay(); //Efface l'ecran&lt;br /&gt;
&lt;br /&gt;
  //Capteur&lt;br /&gt;
  if (digitalRead(cpt_taupe1) == 1 &amp;amp;&amp;amp; int_cmd_taupe1 == 0) //Si la taupe est relevé est que le bouton est appuyé on gagne 1 points et la taupe se baisse&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe2) == 1 &amp;amp;&amp;amp; int_cmd_taupe2 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe2 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe3) == 1 &amp;amp;&amp;amp; int_cmd_taupe3 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19337</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19337"/>
				<updated>2022-01-19T14:01:12Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : /* Schéma électrique */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Des taupes montent et descendent.&lt;br /&gt;
Quand elles sortent de leur trou, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle ne redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D) (x7)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x7)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
* Breadboard&lt;br /&gt;
&lt;br /&gt;
* Alimentation 12V&lt;br /&gt;
* Alimentation 5V (câble USB+PC)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
[[Fichier:BoxPartie1.pdf|vignette]]&lt;br /&gt;
[[Fichier:BoxPartie2.pdf|vignette]]&lt;br /&gt;
[[Fichier:BoxPartie3.pdf|vignette]]&lt;br /&gt;
&lt;br /&gt;
Mécanisme prévu à l'origine pour allonger la course de la taupe :&lt;br /&gt;
[[Fichier:Taupe originale.jpg|vignette|néant|Taupe origninale]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Une taupe.jpg|vignette|néant|Une taupe]]&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette|néant]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mega était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
===Relais===&lt;br /&gt;
&lt;br /&gt;
Un relais et un interrupteur commandé par un signal de commande électriques.&lt;br /&gt;
&lt;br /&gt;
Il faut d'un coté brancher le relais à la masse de l'arduino et aux 5V de l'arduino et sur un pin de l'arduino qui servira a commander le relais.&lt;br /&gt;
&lt;br /&gt;
De l'autre coté il faut brancher le + et la masse de la tension voulu et le cable de sortie qui sortira soit du OV soit du 12V ici.&lt;br /&gt;
&lt;br /&gt;
Ensuite quand on met le pin a 1 on active le relais et donc on sort du 12V et quand on a un 0 on sort du 0V&lt;br /&gt;
&lt;br /&gt;
===Solénoide===&lt;br /&gt;
&lt;br /&gt;
Il s'agit d'un électroaimant qui fait rentrer un tige monté sur ressort quand elle est alimenté et quand elle n'est pas alimenté la tige ressort grâce aux ressort.&lt;br /&gt;
&lt;br /&gt;
Pour l'alimenter il faut mettre une de ses bornes a la masse et l'autre aux 12V.&lt;br /&gt;
&lt;br /&gt;
Attention le solénoïde chauffe beaucoup mais c'est prévu par le fonctionnement normal.&lt;br /&gt;
&lt;br /&gt;
===Bouton===&lt;br /&gt;
&lt;br /&gt;
Il faut mettre une bornes aux 5V de l'arduino via une resistance et une autre sur un pin de commande, et une résistance entre ce pin et la masse.&lt;br /&gt;
&lt;br /&gt;
===Ecran OLED===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|néant|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&lt;br /&gt;
Tout d'abord il faut tester les composants pour s'assurer qu'ils fonctionnent tous bien&lt;br /&gt;
&lt;br /&gt;
===Bouton===&lt;br /&gt;
&lt;br /&gt;
Ce code permet de verifier le fonctionnement des boutons&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22; //22 represente le pin ou sera branché le bouton&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT); //Cette ligne permet de passer le pin en mode entré&lt;br /&gt;
  Serial.begin(9600); //Initialise le terminal &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1)); //Ecris l'etat du pin du bouton (0 ou 1)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Solénoïde===&lt;br /&gt;
&lt;br /&gt;
Ce code permettra d'activer/desactiver le selenoide 1s/1s&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cmd_taupe1 = 53; //53 represente le pin ou sera branché le bouton&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT); //Cette ligne passe le pin en sortie&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  digitalWrite(cmd_taupe1, HIGH); //Active le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
  digitalWrite(cmd_taupe1, LOW); //Desactive le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===LCD===&lt;br /&gt;
&lt;br /&gt;
Pour voir toute les possibilité offerte par le LCD nous vous conseillons le site electronique amateur&amp;lt;ref&amp;gt;https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ici on ne fait que écrire &amp;quot;vous avez: xx points&amp;quot; sur l'écran&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Vous avez :&amp;quot;);&lt;br /&gt;
  display.setCursor(50, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.println(&amp;quot; points&amp;quot;);&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.print(pts);&lt;br /&gt;
  display.display(); //Affiche l'ecran&lt;br /&gt;
  display.clearDisplay(); //Efface l'ecran&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Taupe===&lt;br /&gt;
&lt;br /&gt;
Ici le code rassemble un solenoide et un bouton pour faire une taupe&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int cmd_taupe1 = 53;&lt;br /&gt;
int int_cmd_taupe1 = 1;&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
&lt;br /&gt;
int pts = 0;&lt;br /&gt;
&lt;br /&gt;
int start = 0;&lt;br /&gt;
int now = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  now = millis(); //On récupère le temps dans une variable&lt;br /&gt;
  if (now-start &amp;gt; 1000) //Si il s'est écoulé plus de 1s&lt;br /&gt;
  {&lt;br /&gt;
    start = millis(); //On renitialise le temps de départ du timer&lt;br /&gt;
    if (int_cmd_taupe1 == 1) //Si la taupe est rentré elle sort&lt;br /&gt;
      int_cmd_taupe1 = 0;&lt;br /&gt;
    else //sinon elle rentre&lt;br /&gt;
      int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  digitalWrite(cmd_taupe1, int_cmd_taupe1); //On ecrit sur les pin des selenoide les valeurs de commande de ceux ci&lt;br /&gt;
&lt;br /&gt;
  //Capteur&lt;br /&gt;
  if (digitalRead(cpt_taupe1) == 1 &amp;amp;&amp;amp; int_cmd_taupe1 == 0) //Si la taupe est relevé est que le bouton est appuyé on gagne 1 points et la taupe se baisse&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prog final===&lt;br /&gt;
&lt;br /&gt;
Aprés avoir vérifié et cablé il ne reste plus qu'a tout rassembler pour le code final&lt;br /&gt;
&lt;br /&gt;
Ici il n'y a que 3 taupes mais vous pouvez en rajouter a votre guise et changer le texte sur l'ecran.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
int cmd_taupe1 = 53;&lt;br /&gt;
int cmd_taupe2 = 51;&lt;br /&gt;
int cmd_taupe3 = 49;&lt;br /&gt;
&lt;br /&gt;
int int_cmd_taupe1 = 1;&lt;br /&gt;
int int_cmd_taupe2 = 1;&lt;br /&gt;
int int_cmd_taupe3 = 1;&lt;br /&gt;
&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
int cpt_taupe2 = 24;&lt;br /&gt;
int cpt_taupe3 = 26;&lt;br /&gt;
&lt;br /&gt;
int pts = 0;&lt;br /&gt;
&lt;br /&gt;
int start = 0;&lt;br /&gt;
int now = 0;&lt;br /&gt;
&lt;br /&gt;
int random_int = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe2, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe3, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe2, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe3, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
  randomSeed(analogRead(0)); //Initialise le random par la lecture du bruit d'un pin analogique non branché&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  now = millis(); //On récupère le temps dans une variable&lt;br /&gt;
&lt;br /&gt;
  if (now-start &amp;gt; 1000) //Si il s'est écoulé plus de 1s&lt;br /&gt;
  {&lt;br /&gt;
    start = millis(); //On renitialise le temps de départ du timer&lt;br /&gt;
    random_int = random(1, 3); //On créer un nombre random entre 1 et le nombre de taupe (ici 3)&lt;br /&gt;
    if (int_cmd_taupe1 == 1 and random_int == 1) //Si la taupe est rentré est que le random l'indique elle sort&lt;br /&gt;
      int_cmd_taupe1 = 0;&lt;br /&gt;
    else //sinon elle rentre&lt;br /&gt;
      int_cmd_taupe1 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe2 == 1 and random_int == 2)&lt;br /&gt;
      int_cmd_taupe2 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe2 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe3 == 1 and random_int == 3)&lt;br /&gt;
      int_cmd_taupe3 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  //Taupe&lt;br /&gt;
  digitalWrite(cmd_taupe1, int_cmd_taupe1); //On ecrit sur les pin des selenoide les valeurs de commande de ceux ci&lt;br /&gt;
  digitalWrite(cmd_taupe2, int_cmd_taupe2);&lt;br /&gt;
  digitalWrite(cmd_taupe3, int_cmd_taupe3);&lt;br /&gt;
&lt;br /&gt;
  //LCD&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Vous avez :&amp;quot;);&lt;br /&gt;
  display.setCursor(50, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.println(&amp;quot; points&amp;quot;);&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.print(pts);&lt;br /&gt;
  display.display(); //Affiche l'ecran&lt;br /&gt;
  display.clearDisplay(); //Efface l'ecran&lt;br /&gt;
&lt;br /&gt;
  //Capteur&lt;br /&gt;
  if (digitalRead(cpt_taupe1) == 1 &amp;amp;&amp;amp; int_cmd_taupe1 == 0) //Si la taupe est relevé est que le bouton est appuyé on gagne 1 points et la taupe se baisse&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe2) == 1 &amp;amp;&amp;amp; int_cmd_taupe2 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe2 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe3) == 1 &amp;amp;&amp;amp; int_cmd_taupe3 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19336</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19336"/>
				<updated>2022-01-19T13:58:45Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : /* Bouton */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Des taupes montent et descendent.&lt;br /&gt;
Quand elles sortent de leur trou, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle ne redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D) (x7)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x7)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
* Breadboard&lt;br /&gt;
&lt;br /&gt;
* Alimentation 12V&lt;br /&gt;
* Alimentation 5V (câble USB+PC)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
[[Fichier:BoxPartie1.pdf|vignette]]&lt;br /&gt;
[[Fichier:BoxPartie2.pdf|vignette]]&lt;br /&gt;
[[Fichier:BoxPartie3.pdf|vignette]]&lt;br /&gt;
&lt;br /&gt;
Mécanisme prévu à l'origine pour allonger la course de la taupe :&lt;br /&gt;
[[Fichier:Taupe originale.jpg|vignette|néant|Taupe origninale]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Une taupe.jpg|vignette|néant|Une taupe]]&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette|néant]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
===Relais===&lt;br /&gt;
&lt;br /&gt;
Un relais et un interrupteur commandé par un signal de commande électriques.&lt;br /&gt;
&lt;br /&gt;
Il faut d'un coté brancher le relais à la masse de l'arduino et aux 5V de l'arduino et sur un pin de l'arduino qui servira a commander le relais.&lt;br /&gt;
&lt;br /&gt;
De l'autre coté il faut brancher le + et la masse de la tension voulu et le cable de sortie qui sortira soit du OV soit du 12V ici.&lt;br /&gt;
&lt;br /&gt;
Ensuite quand on met le pin a 1 on active le relais et donc on sort du 12V et quand on a un 0 on sort du 0V&lt;br /&gt;
&lt;br /&gt;
===Solénoide===&lt;br /&gt;
&lt;br /&gt;
Il s'agit d'un électroaimant qui fait rentrer un tige monté sur ressort quand elle est alimenté et quand elle n'est pas alimenté la tige ressort grâce aux ressort.&lt;br /&gt;
&lt;br /&gt;
Pour l'alimenter il faut mettre une de ses bornes a la masse et l'autre aux 12V.&lt;br /&gt;
&lt;br /&gt;
Attention le solénoïde chauffe beaucoup mais c'est prévu par le fonctionnement normal.&lt;br /&gt;
&lt;br /&gt;
===Bouton===&lt;br /&gt;
&lt;br /&gt;
Il faut mettre une bornes aux 5V de l'arduino via une resistance et une autre sur un pin de commande, et une résistance entre ce pin et la masse.&lt;br /&gt;
&lt;br /&gt;
===Ecran OLED===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|néant|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&lt;br /&gt;
Tout d'abord il faut tester les composants pour s'assurer qu'ils fonctionnent tous bien&lt;br /&gt;
&lt;br /&gt;
===Bouton===&lt;br /&gt;
&lt;br /&gt;
Ce code permet de verifier le fonctionnement des boutons&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22; //22 represente le pin ou sera branché le bouton&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT); //Cette ligne permet de passer le pin en mode entré&lt;br /&gt;
  Serial.begin(9600); //Initialise le terminal &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1)); //Ecris l'etat du pin du bouton (0 ou 1)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Solénoïde===&lt;br /&gt;
&lt;br /&gt;
Ce code permettra d'activer/desactiver le selenoide 1s/1s&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cmd_taupe1 = 53; //53 represente le pin ou sera branché le bouton&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT); //Cette ligne passe le pin en sortie&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  digitalWrite(cmd_taupe1, HIGH); //Active le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
  digitalWrite(cmd_taupe1, LOW); //Desactive le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===LCD===&lt;br /&gt;
&lt;br /&gt;
Pour voir toute les possibilité offerte par le LCD nous vous conseillons le site electronique amateur&amp;lt;ref&amp;gt;https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ici on ne fait que écrire &amp;quot;vous avez: xx points&amp;quot; sur l'écran&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Vous avez :&amp;quot;);&lt;br /&gt;
  display.setCursor(50, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.println(&amp;quot; points&amp;quot;);&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.print(pts);&lt;br /&gt;
  display.display(); //Affiche l'ecran&lt;br /&gt;
  display.clearDisplay(); //Efface l'ecran&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Taupe===&lt;br /&gt;
&lt;br /&gt;
Ici le code rassemble un solenoide et un bouton pour faire une taupe&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int cmd_taupe1 = 53;&lt;br /&gt;
int int_cmd_taupe1 = 1;&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
&lt;br /&gt;
int pts = 0;&lt;br /&gt;
&lt;br /&gt;
int start = 0;&lt;br /&gt;
int now = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  now = millis(); //On récupère le temps dans une variable&lt;br /&gt;
  if (now-start &amp;gt; 1000) //Si il s'est écoulé plus de 1s&lt;br /&gt;
  {&lt;br /&gt;
    start = millis(); //On renitialise le temps de départ du timer&lt;br /&gt;
    if (int_cmd_taupe1 == 1) //Si la taupe est rentré elle sort&lt;br /&gt;
      int_cmd_taupe1 = 0;&lt;br /&gt;
    else //sinon elle rentre&lt;br /&gt;
      int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  digitalWrite(cmd_taupe1, int_cmd_taupe1); //On ecrit sur les pin des selenoide les valeurs de commande de ceux ci&lt;br /&gt;
&lt;br /&gt;
  //Capteur&lt;br /&gt;
  if (digitalRead(cpt_taupe1) == 1 &amp;amp;&amp;amp; int_cmd_taupe1 == 0) //Si la taupe est relevé est que le bouton est appuyé on gagne 1 points et la taupe se baisse&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prog final===&lt;br /&gt;
&lt;br /&gt;
Aprés avoir vérifié et cablé il ne reste plus qu'a tout rassembler pour le code final&lt;br /&gt;
&lt;br /&gt;
Ici il n'y a que 3 taupes mais vous pouvez en rajouter a votre guise et changer le texte sur l'ecran.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
int cmd_taupe1 = 53;&lt;br /&gt;
int cmd_taupe2 = 51;&lt;br /&gt;
int cmd_taupe3 = 49;&lt;br /&gt;
&lt;br /&gt;
int int_cmd_taupe1 = 1;&lt;br /&gt;
int int_cmd_taupe2 = 1;&lt;br /&gt;
int int_cmd_taupe3 = 1;&lt;br /&gt;
&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
int cpt_taupe2 = 24;&lt;br /&gt;
int cpt_taupe3 = 26;&lt;br /&gt;
&lt;br /&gt;
int pts = 0;&lt;br /&gt;
&lt;br /&gt;
int start = 0;&lt;br /&gt;
int now = 0;&lt;br /&gt;
&lt;br /&gt;
int random_int = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe2, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe3, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe2, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe3, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
  randomSeed(analogRead(0)); //Initialise le random par la lecture du bruit d'un pin analogique non branché&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  now = millis(); //On récupère le temps dans une variable&lt;br /&gt;
&lt;br /&gt;
  if (now-start &amp;gt; 1000) //Si il s'est écoulé plus de 1s&lt;br /&gt;
  {&lt;br /&gt;
    start = millis(); //On renitialise le temps de départ du timer&lt;br /&gt;
    random_int = random(1, 3); //On créer un nombre random entre 1 et le nombre de taupe (ici 3)&lt;br /&gt;
    if (int_cmd_taupe1 == 1 and random_int == 1) //Si la taupe est rentré est que le random l'indique elle sort&lt;br /&gt;
      int_cmd_taupe1 = 0;&lt;br /&gt;
    else //sinon elle rentre&lt;br /&gt;
      int_cmd_taupe1 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe2 == 1 and random_int == 2)&lt;br /&gt;
      int_cmd_taupe2 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe2 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe3 == 1 and random_int == 3)&lt;br /&gt;
      int_cmd_taupe3 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  //Taupe&lt;br /&gt;
  digitalWrite(cmd_taupe1, int_cmd_taupe1); //On ecrit sur les pin des selenoide les valeurs de commande de ceux ci&lt;br /&gt;
  digitalWrite(cmd_taupe2, int_cmd_taupe2);&lt;br /&gt;
  digitalWrite(cmd_taupe3, int_cmd_taupe3);&lt;br /&gt;
&lt;br /&gt;
  //LCD&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Vous avez :&amp;quot;);&lt;br /&gt;
  display.setCursor(50, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.println(&amp;quot; points&amp;quot;);&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.print(pts);&lt;br /&gt;
  display.display(); //Affiche l'ecran&lt;br /&gt;
  display.clearDisplay(); //Efface l'ecran&lt;br /&gt;
&lt;br /&gt;
  //Capteur&lt;br /&gt;
  if (digitalRead(cpt_taupe1) == 1 &amp;amp;&amp;amp; int_cmd_taupe1 == 0) //Si la taupe est relevé est que le bouton est appuyé on gagne 1 points et la taupe se baisse&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe2) == 1 &amp;amp;&amp;amp; int_cmd_taupe2 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe2 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe3) == 1 &amp;amp;&amp;amp; int_cmd_taupe3 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19335</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19335"/>
				<updated>2022-01-19T13:57:38Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : /* Solénoide */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Des taupes montent et descendent.&lt;br /&gt;
Quand elles sortent de leur trou, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle ne redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D) (x7)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x7)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
* Breadboard&lt;br /&gt;
&lt;br /&gt;
* Alimentation 12V&lt;br /&gt;
* Alimentation 5V (câble USB+PC)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
[[Fichier:BoxPartie1.pdf|vignette]]&lt;br /&gt;
[[Fichier:BoxPartie2.pdf|vignette]]&lt;br /&gt;
[[Fichier:BoxPartie3.pdf|vignette]]&lt;br /&gt;
&lt;br /&gt;
Mécanisme prévu à l'origine pour allonger la course de la taupe :&lt;br /&gt;
[[Fichier:Taupe originale.jpg|vignette|néant|Taupe origninale]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Une taupe.jpg|vignette|néant|Une taupe]]&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette|néant]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
===Relais===&lt;br /&gt;
&lt;br /&gt;
Un relais et un interrupteur commandé par un signal de commande électriques.&lt;br /&gt;
&lt;br /&gt;
Il faut d'un coté brancher le relais à la masse de l'arduino et aux 5V de l'arduino et sur un pin de l'arduino qui servira a commander le relais.&lt;br /&gt;
&lt;br /&gt;
De l'autre coté il faut brancher le + et la masse de la tension voulu et le cable de sortie qui sortira soit du OV soit du 12V ici.&lt;br /&gt;
&lt;br /&gt;
Ensuite quand on met le pin a 1 on active le relais et donc on sort du 12V et quand on a un 0 on sort du 0V&lt;br /&gt;
&lt;br /&gt;
===Solénoide===&lt;br /&gt;
&lt;br /&gt;
Il s'agit d'un électroaimant qui fait rentrer un tige monté sur ressort quand elle est alimenté et quand elle n'est pas alimenté la tige ressort grâce aux ressort.&lt;br /&gt;
&lt;br /&gt;
Pour l'alimenter il faut mettre une de ses bornes a la masse et l'autre aux 12V.&lt;br /&gt;
&lt;br /&gt;
Attention le solénoïde chauffe beaucoup mais c'est prévu par le fonctionnement normal.&lt;br /&gt;
&lt;br /&gt;
===Bouton===&lt;br /&gt;
&lt;br /&gt;
Ecran LCD.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|néant|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&lt;br /&gt;
Tout d'abord il faut tester les composants pour s'assurer qu'ils fonctionnent tous bien&lt;br /&gt;
&lt;br /&gt;
===Bouton===&lt;br /&gt;
&lt;br /&gt;
Ce code permet de verifier le fonctionnement des boutons&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22; //22 represente le pin ou sera branché le bouton&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT); //Cette ligne permet de passer le pin en mode entré&lt;br /&gt;
  Serial.begin(9600); //Initialise le terminal &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1)); //Ecris l'etat du pin du bouton (0 ou 1)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Solénoïde===&lt;br /&gt;
&lt;br /&gt;
Ce code permettra d'activer/desactiver le selenoide 1s/1s&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cmd_taupe1 = 53; //53 represente le pin ou sera branché le bouton&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT); //Cette ligne passe le pin en sortie&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  digitalWrite(cmd_taupe1, HIGH); //Active le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
  digitalWrite(cmd_taupe1, LOW); //Desactive le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===LCD===&lt;br /&gt;
&lt;br /&gt;
Pour voir toute les possibilité offerte par le LCD nous vous conseillons le site electronique amateur&amp;lt;ref&amp;gt;https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ici on ne fait que écrire &amp;quot;vous avez: xx points&amp;quot; sur l'écran&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Vous avez :&amp;quot;);&lt;br /&gt;
  display.setCursor(50, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.println(&amp;quot; points&amp;quot;);&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.print(pts);&lt;br /&gt;
  display.display(); //Affiche l'ecran&lt;br /&gt;
  display.clearDisplay(); //Efface l'ecran&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Taupe===&lt;br /&gt;
&lt;br /&gt;
Ici le code rassemble un solenoide et un bouton pour faire une taupe&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int cmd_taupe1 = 53;&lt;br /&gt;
int int_cmd_taupe1 = 1;&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
&lt;br /&gt;
int pts = 0;&lt;br /&gt;
&lt;br /&gt;
int start = 0;&lt;br /&gt;
int now = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  now = millis(); //On récupère le temps dans une variable&lt;br /&gt;
  if (now-start &amp;gt; 1000) //Si il s'est écoulé plus de 1s&lt;br /&gt;
  {&lt;br /&gt;
    start = millis(); //On renitialise le temps de départ du timer&lt;br /&gt;
    if (int_cmd_taupe1 == 1) //Si la taupe est rentré elle sort&lt;br /&gt;
      int_cmd_taupe1 = 0;&lt;br /&gt;
    else //sinon elle rentre&lt;br /&gt;
      int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  digitalWrite(cmd_taupe1, int_cmd_taupe1); //On ecrit sur les pin des selenoide les valeurs de commande de ceux ci&lt;br /&gt;
&lt;br /&gt;
  //Capteur&lt;br /&gt;
  if (digitalRead(cpt_taupe1) == 1 &amp;amp;&amp;amp; int_cmd_taupe1 == 0) //Si la taupe est relevé est que le bouton est appuyé on gagne 1 points et la taupe se baisse&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prog final===&lt;br /&gt;
&lt;br /&gt;
Aprés avoir vérifié et cablé il ne reste plus qu'a tout rassembler pour le code final&lt;br /&gt;
&lt;br /&gt;
Ici il n'y a que 3 taupes mais vous pouvez en rajouter a votre guise et changer le texte sur l'ecran.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
int cmd_taupe1 = 53;&lt;br /&gt;
int cmd_taupe2 = 51;&lt;br /&gt;
int cmd_taupe3 = 49;&lt;br /&gt;
&lt;br /&gt;
int int_cmd_taupe1 = 1;&lt;br /&gt;
int int_cmd_taupe2 = 1;&lt;br /&gt;
int int_cmd_taupe3 = 1;&lt;br /&gt;
&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
int cpt_taupe2 = 24;&lt;br /&gt;
int cpt_taupe3 = 26;&lt;br /&gt;
&lt;br /&gt;
int pts = 0;&lt;br /&gt;
&lt;br /&gt;
int start = 0;&lt;br /&gt;
int now = 0;&lt;br /&gt;
&lt;br /&gt;
int random_int = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe2, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe3, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe2, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe3, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
  randomSeed(analogRead(0)); //Initialise le random par la lecture du bruit d'un pin analogique non branché&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  now = millis(); //On récupère le temps dans une variable&lt;br /&gt;
&lt;br /&gt;
  if (now-start &amp;gt; 1000) //Si il s'est écoulé plus de 1s&lt;br /&gt;
  {&lt;br /&gt;
    start = millis(); //On renitialise le temps de départ du timer&lt;br /&gt;
    random_int = random(1, 3); //On créer un nombre random entre 1 et le nombre de taupe (ici 3)&lt;br /&gt;
    if (int_cmd_taupe1 == 1 and random_int == 1) //Si la taupe est rentré est que le random l'indique elle sort&lt;br /&gt;
      int_cmd_taupe1 = 0;&lt;br /&gt;
    else //sinon elle rentre&lt;br /&gt;
      int_cmd_taupe1 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe2 == 1 and random_int == 2)&lt;br /&gt;
      int_cmd_taupe2 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe2 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe3 == 1 and random_int == 3)&lt;br /&gt;
      int_cmd_taupe3 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  //Taupe&lt;br /&gt;
  digitalWrite(cmd_taupe1, int_cmd_taupe1); //On ecrit sur les pin des selenoide les valeurs de commande de ceux ci&lt;br /&gt;
  digitalWrite(cmd_taupe2, int_cmd_taupe2);&lt;br /&gt;
  digitalWrite(cmd_taupe3, int_cmd_taupe3);&lt;br /&gt;
&lt;br /&gt;
  //LCD&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Vous avez :&amp;quot;);&lt;br /&gt;
  display.setCursor(50, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.println(&amp;quot; points&amp;quot;);&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.print(pts);&lt;br /&gt;
  display.display(); //Affiche l'ecran&lt;br /&gt;
  display.clearDisplay(); //Efface l'ecran&lt;br /&gt;
&lt;br /&gt;
  //Capteur&lt;br /&gt;
  if (digitalRead(cpt_taupe1) == 1 &amp;amp;&amp;amp; int_cmd_taupe1 == 0) //Si la taupe est relevé est que le bouton est appuyé on gagne 1 points et la taupe se baisse&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe2) == 1 &amp;amp;&amp;amp; int_cmd_taupe2 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe2 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe3) == 1 &amp;amp;&amp;amp; int_cmd_taupe3 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19329</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19329"/>
				<updated>2022-01-19T13:51:37Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : /* Relais */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Des taupes montent et descendent.&lt;br /&gt;
Quand elles sortent de leur trou, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle ne redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D) (x7)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x7)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
* Breadboard&lt;br /&gt;
&lt;br /&gt;
* Alimentation 12V&lt;br /&gt;
* Alimentation 5V (câble USB+PC)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
[[Fichier:BoxPartie1.pdf|vignette]]&lt;br /&gt;
[[Fichier:BoxPartie2.pdf|vignette]]&lt;br /&gt;
[[Fichier:BoxPartie3.pdf|vignette]]&lt;br /&gt;
&lt;br /&gt;
Mécanisme prévu à l'origine pour allonger la course de la taupe :&lt;br /&gt;
[[Fichier:Taupe originale.jpg|vignette|néant|Taupe origninale]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Une taupe.jpg|vignette|néant|Une taupe]]&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette|néant]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
===Relais===&lt;br /&gt;
&lt;br /&gt;
Un relais et un interrupteur commandé par un signal de commande électriques.&lt;br /&gt;
&lt;br /&gt;
Il faut d'un coté brancher le relais à la masse de l'arduino et aux 5V de l'arduino et sur un pin de l'arduino qui servira a commander le relais.&lt;br /&gt;
&lt;br /&gt;
De l'autre coté il faut brancher le + et la masse de la tension voulu et le cable de sortie qui sortira soit du OV soit du 12V ici.&lt;br /&gt;
&lt;br /&gt;
Ensuite quand on met le pin a 1 on active le relais et donc on sort du 12V et quand on a un 0 on sort du 0V&lt;br /&gt;
&lt;br /&gt;
===Solénoide===&lt;br /&gt;
&lt;br /&gt;
===Bouton===&lt;br /&gt;
&lt;br /&gt;
Ecran LCD.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|néant|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&lt;br /&gt;
Tout d'abord il faut tester les composants pour s'assurer qu'ils fonctionnent tous bien&lt;br /&gt;
&lt;br /&gt;
===Bouton===&lt;br /&gt;
&lt;br /&gt;
Ce code permet de verifier le fonctionnement des boutons&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22; //22 represente le pin ou sera branché le bouton&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT); //Cette ligne permet de passer le pin en mode entré&lt;br /&gt;
  Serial.begin(9600); //Initialise le terminal &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1)); //Ecris l'etat du pin du bouton (0 ou 1)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Solénoïde===&lt;br /&gt;
&lt;br /&gt;
Ce code permettra d'activer/desactiver le selenoide 1s/1s&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cmd_taupe1 = 53; //53 represente le pin ou sera branché le bouton&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT); //Cette ligne passe le pin en sortie&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  digitalWrite(cmd_taupe1, HIGH); //Active le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
  digitalWrite(cmd_taupe1, LOW); //Desactive le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===LCD===&lt;br /&gt;
&lt;br /&gt;
Pour voir toute les possibilité offerte par le LCD nous vous conseillons le site electronique amateur&amp;lt;ref&amp;gt;https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ici on ne fait que écrire &amp;quot;vous avez: xx points&amp;quot; sur l'écran&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Vous avez :&amp;quot;);&lt;br /&gt;
  display.setCursor(50, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.println(&amp;quot; points&amp;quot;);&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.print(pts);&lt;br /&gt;
  display.display(); //Affiche l'ecran&lt;br /&gt;
  display.clearDisplay(); //Efface l'ecran&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Taupe===&lt;br /&gt;
&lt;br /&gt;
Ici le code rassemble un solenoide et un bouton pour faire une taupe&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int cmd_taupe1 = 53;&lt;br /&gt;
int int_cmd_taupe1 = 1;&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
&lt;br /&gt;
int pts = 0;&lt;br /&gt;
&lt;br /&gt;
int start = 0;&lt;br /&gt;
int now = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  now = millis(); //On récupère le temps dans une variable&lt;br /&gt;
  if (now-start &amp;gt; 1000) //Si il s'est écoulé plus de 1s&lt;br /&gt;
  {&lt;br /&gt;
    start = millis(); //On renitialise le temps de départ du timer&lt;br /&gt;
    if (int_cmd_taupe1 == 1) //Si la taupe est rentré elle sort&lt;br /&gt;
      int_cmd_taupe1 = 0;&lt;br /&gt;
    else //sinon elle rentre&lt;br /&gt;
      int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  digitalWrite(cmd_taupe1, int_cmd_taupe1); //On ecrit sur les pin des selenoide les valeurs de commande de ceux ci&lt;br /&gt;
&lt;br /&gt;
  //Capteur&lt;br /&gt;
  if (digitalRead(cpt_taupe1) == 1 &amp;amp;&amp;amp; int_cmd_taupe1 == 0) //Si la taupe est relevé est que le bouton est appuyé on gagne 1 points et la taupe se baisse&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prog final===&lt;br /&gt;
&lt;br /&gt;
Aprés avoir vérifié et cablé il ne reste plus qu'a tout rassembler pour le code final&lt;br /&gt;
&lt;br /&gt;
Ici il n'y a que 3 taupes mais vous pouvez en rajouter a votre guise et changer le texte sur l'ecran.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
int cmd_taupe1 = 53;&lt;br /&gt;
int cmd_taupe2 = 51;&lt;br /&gt;
int cmd_taupe3 = 49;&lt;br /&gt;
&lt;br /&gt;
int int_cmd_taupe1 = 1;&lt;br /&gt;
int int_cmd_taupe2 = 1;&lt;br /&gt;
int int_cmd_taupe3 = 1;&lt;br /&gt;
&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
int cpt_taupe2 = 24;&lt;br /&gt;
int cpt_taupe3 = 26;&lt;br /&gt;
&lt;br /&gt;
int pts = 0;&lt;br /&gt;
&lt;br /&gt;
int start = 0;&lt;br /&gt;
int now = 0;&lt;br /&gt;
&lt;br /&gt;
int random_int = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe2, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe3, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe2, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe3, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
  randomSeed(analogRead(0)); //Initialise le random par la lecture du bruit d'un pin analogique non branché&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  now = millis(); //On récupère le temps dans une variable&lt;br /&gt;
&lt;br /&gt;
  if (now-start &amp;gt; 1000) //Si il s'est écoulé plus de 1s&lt;br /&gt;
  {&lt;br /&gt;
    start = millis(); //On renitialise le temps de départ du timer&lt;br /&gt;
    random_int = random(1, 3); //On créer un nombre random entre 1 et le nombre de taupe (ici 3)&lt;br /&gt;
    if (int_cmd_taupe1 == 1 and random_int == 1) //Si la taupe est rentré est que le random l'indique elle sort&lt;br /&gt;
      int_cmd_taupe1 = 0;&lt;br /&gt;
    else //sinon elle rentre&lt;br /&gt;
      int_cmd_taupe1 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe2 == 1 and random_int == 2)&lt;br /&gt;
      int_cmd_taupe2 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe2 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe3 == 1 and random_int == 3)&lt;br /&gt;
      int_cmd_taupe3 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  //Taupe&lt;br /&gt;
  digitalWrite(cmd_taupe1, int_cmd_taupe1); //On ecrit sur les pin des selenoide les valeurs de commande de ceux ci&lt;br /&gt;
  digitalWrite(cmd_taupe2, int_cmd_taupe2);&lt;br /&gt;
  digitalWrite(cmd_taupe3, int_cmd_taupe3);&lt;br /&gt;
&lt;br /&gt;
  //LCD&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Vous avez :&amp;quot;);&lt;br /&gt;
  display.setCursor(50, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.println(&amp;quot; points&amp;quot;);&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.print(pts);&lt;br /&gt;
  display.display(); //Affiche l'ecran&lt;br /&gt;
  display.clearDisplay(); //Efface l'ecran&lt;br /&gt;
&lt;br /&gt;
  //Capteur&lt;br /&gt;
  if (digitalRead(cpt_taupe1) == 1 &amp;amp;&amp;amp; int_cmd_taupe1 == 0) //Si la taupe est relevé est que le bouton est appuyé on gagne 1 points et la taupe se baisse&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe2) == 1 &amp;amp;&amp;amp; int_cmd_taupe2 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe2 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe3) == 1 &amp;amp;&amp;amp; int_cmd_taupe3 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19320</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19320"/>
				<updated>2022-01-19T13:46:25Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : /* Schéma électrique */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Des taupes montent et descendent.&lt;br /&gt;
Quand elles sortent de leur trou, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle ne redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D) (x7)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x7)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
* Breadboard&lt;br /&gt;
&lt;br /&gt;
* Alimentation 12V&lt;br /&gt;
* Alimentation 5V (câble USB+PC)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
[[Fichier:BoxPartie1.pdf|vignette]]&lt;br /&gt;
[[Fichier:BoxPartie2.pdf|vignette]]&lt;br /&gt;
[[Fichier:BoxPartie3.pdf|vignette]]&lt;br /&gt;
&lt;br /&gt;
Mécanisme prévu à l'origine pour allonger la course de la taupe :&lt;br /&gt;
[[Fichier:Taupe originale.jpg|vignette|néant|Taupe origninale]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Une taupe.jpg|vignette|néant|Une taupe]]&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette|néant]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
===Relais===&lt;br /&gt;
&lt;br /&gt;
===Solénoide===&lt;br /&gt;
&lt;br /&gt;
===Bouton===&lt;br /&gt;
&lt;br /&gt;
Ecran LCD.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|néant|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&lt;br /&gt;
Tout d'abord il faut tester les composants pour s'assurer qu'ils fonctionnent tous bien&lt;br /&gt;
&lt;br /&gt;
===Bouton===&lt;br /&gt;
&lt;br /&gt;
Ce code permet de verifier le fonctionnement des boutons&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22; //22 represente le pin ou sera branché le bouton&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT); //Cette ligne permet de passer le pin en mode entré&lt;br /&gt;
  Serial.begin(9600); //Initialise le terminal &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1)); //Ecris l'etat du pin du bouton (0 ou 1)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Solénoïde===&lt;br /&gt;
&lt;br /&gt;
Ce code permettra d'activer/desactiver le selenoide 1s/1s&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cmd_taupe1 = 53; //53 represente le pin ou sera branché le bouton&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT); //Cette ligne passe le pin en sortie&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  digitalWrite(cmd_taupe1, HIGH); //Active le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
  digitalWrite(cmd_taupe1, LOW); //Desactive le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===LCD===&lt;br /&gt;
&lt;br /&gt;
Pour voir toute les possibilité offerte par le LCD nous vous conseillons le site electronique amateur&amp;lt;ref&amp;gt;https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ici on ne fait que écrire &amp;quot;vous avez: xx points&amp;quot; sur l'écran&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Vous avez :&amp;quot;);&lt;br /&gt;
  display.setCursor(50, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.println(&amp;quot; points&amp;quot;);&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.print(pts);&lt;br /&gt;
  display.display(); //Affiche l'ecran&lt;br /&gt;
  display.clearDisplay(); //Efface l'ecran&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Taupe===&lt;br /&gt;
&lt;br /&gt;
Ici le code rassemble un solenoide et un bouton pour faire une taupe&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int cmd_taupe1 = 53;&lt;br /&gt;
int int_cmd_taupe1 = 1;&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
&lt;br /&gt;
int pts = 0;&lt;br /&gt;
&lt;br /&gt;
int start = 0;&lt;br /&gt;
int now = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  now = millis(); //On récupère le temps dans une variable&lt;br /&gt;
  if (now-start &amp;gt; 1000) //Si il s'est écoulé plus de 1s&lt;br /&gt;
  {&lt;br /&gt;
    start = millis(); //On renitialise le temps de départ du timer&lt;br /&gt;
    if (int_cmd_taupe1 == 1) //Si la taupe est rentré elle sort&lt;br /&gt;
      int_cmd_taupe1 = 0;&lt;br /&gt;
    else //sinon elle rentre&lt;br /&gt;
      int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  digitalWrite(cmd_taupe1, int_cmd_taupe1); //On ecrit sur les pin des selenoide les valeurs de commande de ceux ci&lt;br /&gt;
&lt;br /&gt;
  //Capteur&lt;br /&gt;
  if (digitalRead(cpt_taupe1) == 1 &amp;amp;&amp;amp; int_cmd_taupe1 == 0) //Si la taupe est relevé est que le bouton est appuyé on gagne 1 points et la taupe se baisse&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prog final===&lt;br /&gt;
&lt;br /&gt;
Aprés avoir vérifié et cablé il ne reste plus qu'a tout rassembler pour le code final&lt;br /&gt;
&lt;br /&gt;
Ici il n'y a que 3 taupes mais vous pouvez en rajouter a votre guise et changer le texte sur l'ecran.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
int cmd_taupe1 = 53;&lt;br /&gt;
int cmd_taupe2 = 51;&lt;br /&gt;
int cmd_taupe3 = 49;&lt;br /&gt;
&lt;br /&gt;
int int_cmd_taupe1 = 1;&lt;br /&gt;
int int_cmd_taupe2 = 1;&lt;br /&gt;
int int_cmd_taupe3 = 1;&lt;br /&gt;
&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
int cpt_taupe2 = 24;&lt;br /&gt;
int cpt_taupe3 = 26;&lt;br /&gt;
&lt;br /&gt;
int pts = 0;&lt;br /&gt;
&lt;br /&gt;
int start = 0;&lt;br /&gt;
int now = 0;&lt;br /&gt;
&lt;br /&gt;
int random_int = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe2, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe3, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe2, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe3, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
  randomSeed(analogRead(0)); //Initialise le random par la lecture du bruit d'un pin analogique non branché&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  now = millis(); //On récupère le temps dans une variable&lt;br /&gt;
&lt;br /&gt;
  if (now-start &amp;gt; 1000) //Si il s'est écoulé plus de 1s&lt;br /&gt;
  {&lt;br /&gt;
    start = millis(); //On renitialise le temps de départ du timer&lt;br /&gt;
    random_int = random(1, 3); //On créer un nombre random entre 1 et le nombre de taupe (ici 3)&lt;br /&gt;
    if (int_cmd_taupe1 == 1 and random_int == 1) //Si la taupe est rentré est que le random l'indique elle sort&lt;br /&gt;
      int_cmd_taupe1 = 0;&lt;br /&gt;
    else //sinon elle rentre&lt;br /&gt;
      int_cmd_taupe1 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe2 == 1 and random_int == 2)&lt;br /&gt;
      int_cmd_taupe2 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe2 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe3 == 1 and random_int == 3)&lt;br /&gt;
      int_cmd_taupe3 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  //Taupe&lt;br /&gt;
  digitalWrite(cmd_taupe1, int_cmd_taupe1); //On ecrit sur les pin des selenoide les valeurs de commande de ceux ci&lt;br /&gt;
  digitalWrite(cmd_taupe2, int_cmd_taupe2);&lt;br /&gt;
  digitalWrite(cmd_taupe3, int_cmd_taupe3);&lt;br /&gt;
&lt;br /&gt;
  //LCD&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Vous avez :&amp;quot;);&lt;br /&gt;
  display.setCursor(50, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.println(&amp;quot; points&amp;quot;);&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.print(pts);&lt;br /&gt;
  display.display(); //Affiche l'ecran&lt;br /&gt;
  display.clearDisplay(); //Efface l'ecran&lt;br /&gt;
&lt;br /&gt;
  //Capteur&lt;br /&gt;
  if (digitalRead(cpt_taupe1) == 1 &amp;amp;&amp;amp; int_cmd_taupe1 == 0) //Si la taupe est relevé est que le bouton est appuyé on gagne 1 points et la taupe se baisse&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe2) == 1 &amp;amp;&amp;amp; int_cmd_taupe2 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe2 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe3) == 1 &amp;amp;&amp;amp; int_cmd_taupe3 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_Groupe_D_:_Bateau_pirate_%22Larguez_vos_amarres%22&amp;diff=19308</id>
		<title>ENIB 2022 - Groupe D : Bateau pirate &quot;Larguez vos amarres&quot;</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_Groupe_D_:_Bateau_pirate_%22Larguez_vos_amarres%22&amp;diff=19308"/>
				<updated>2022-01-19T13:29:30Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : /* Schéma électrique */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:Logo-enib.png|300px|right]]&lt;br /&gt;
== Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Etudiants en 3eme année à l'ENIB, nous avons pu dans le cadre de notre intersemestre et en collaboration avec les petit débrouillards participer à un &amp;quot;Hackaton&amp;quot; avec pour sujet la '''Fête foraine''', nous avons donc fait le choix de créer un bateau pirate miniature comme on peut en voir dans de nombreuse fête foraine.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:BateauPirate2022.jpg|Rendu réaliste&lt;br /&gt;
Image:BateauPirateCAO2022.jpg|Partie CAO&lt;br /&gt;
Image:BateauPirateArduino2022.JPG|Cablage Arduino&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Les membres du projet ==&lt;br /&gt;
*Paul TESSON&lt;br /&gt;
*Julien SORIANO&lt;br /&gt;
*Florian ARNOUX&lt;br /&gt;
*Francisco RODRIGUES&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
{|align=&amp;quot;center&amp;quot; class=&amp;quot;wikitable&amp;quot;  &lt;br /&gt;
! rowspan=&amp;quot;1&amp;quot; | Produit&lt;br /&gt;
!! width=&amp;quot;33%&amp;quot; rowspan=&amp;quot;1&amp;quot; |Caractéristiques&lt;br /&gt;
!! width=&amp;quot;33%&amp;quot; rowspan=&amp;quot;1&amp;quot; |Quantité&lt;br /&gt;
|-&lt;br /&gt;
||Arduino&lt;br /&gt;
|rowspan=&amp;quot;1&amp;quot; colspan=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot; valign=&amp;quot;center&amp;quot; |Mega 2560&lt;br /&gt;
|rowspan=&amp;quot;1&amp;quot; colspan=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot; valign=&amp;quot;center&amp;quot; |1&lt;br /&gt;
|-&lt;br /&gt;
||Câbles&lt;br /&gt;
|rowspan=&amp;quot;1&amp;quot; colspan=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot; valign=&amp;quot;center&amp;quot; |Équipés de duponts (mâles et femelles)&lt;br /&gt;
|rowspan=&amp;quot;1&amp;quot; colspan=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot; valign=&amp;quot;center&amp;quot; |Environ 20&lt;br /&gt;
|-&lt;br /&gt;
||Breadboard&lt;br /&gt;
|rowspan=&amp;quot;1&amp;quot; colspan=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot; valign=&amp;quot;center&amp;quot; |-&lt;br /&gt;
|rowspan=&amp;quot;1&amp;quot; colspan=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot; valign=&amp;quot;center&amp;quot; |1&lt;br /&gt;
|-&lt;br /&gt;
||Pont en H&lt;br /&gt;
|rowspan=&amp;quot;1&amp;quot; colspan=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot; valign=&amp;quot;center&amp;quot; |L298N&lt;br /&gt;
|rowspan=&amp;quot;1&amp;quot; colspan=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot; valign=&amp;quot;center&amp;quot; |1&lt;br /&gt;
|-&lt;br /&gt;
||Roulements à billes&lt;br /&gt;
|rowspan=&amp;quot;1&amp;quot; colspan=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot; valign=&amp;quot;center&amp;quot; |d=8mm ; D=22mm&lt;br /&gt;
|rowspan=&amp;quot;1&amp;quot; colspan=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot; valign=&amp;quot;center&amp;quot; |2&lt;br /&gt;
|-&lt;br /&gt;
||Médium&lt;br /&gt;
|rowspan=&amp;quot;1&amp;quot; colspan=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot; valign=&amp;quot;center&amp;quot; |Plaques l=300mm ; L=600mm&lt;br /&gt;
|rowspan=&amp;quot;1&amp;quot; colspan=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot; valign=&amp;quot;center&amp;quot; |4&lt;br /&gt;
|-&lt;br /&gt;
||Haut parleur&lt;br /&gt;
|rowspan=&amp;quot;1&amp;quot; colspan=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot; valign=&amp;quot;center&amp;quot; |Simple&lt;br /&gt;
|rowspan=&amp;quot;1&amp;quot; colspan=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot; valign=&amp;quot;center&amp;quot; |1&lt;br /&gt;
|-&lt;br /&gt;
||Lecteur de microSD&lt;br /&gt;
|rowspan=&amp;quot;1&amp;quot; colspan=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot; valign=&amp;quot;center&amp;quot; |1528-1462-ND de chez Adafruit Industries LLC&lt;br /&gt;
|rowspan=&amp;quot;1&amp;quot; colspan=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot; valign=&amp;quot;center&amp;quot; |1&lt;br /&gt;
|-&lt;br /&gt;
||Bande LED&lt;br /&gt;
|rowspan=&amp;quot;1&amp;quot; colspan=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot; valign=&amp;quot;center&amp;quot; |-&lt;br /&gt;
|rowspan=&amp;quot;1&amp;quot; colspan=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot; valign=&amp;quot;center&amp;quot; |1&lt;br /&gt;
|-&lt;br /&gt;
||Axe&lt;br /&gt;
|rowspan=&amp;quot;1&amp;quot; colspan=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot; valign=&amp;quot;center&amp;quot; |D=8mm&lt;br /&gt;
|rowspan=&amp;quot;1&amp;quot; colspan=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot; valign=&amp;quot;center&amp;quot; |1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Plan des pièces à réaliser au laser ==&lt;br /&gt;
Ces plans ont été élaborés pour des plaques de médium de 300×600mm&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; style=&amp;quot;border:1px solid #19C533;background-color:#52E969; margin-bottom:5px;&amp;quot; width=&amp;quot;450&amp;quot;&lt;br /&gt;
|'''Fichiers 3D'''&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|[https://www.wiki.lesfabriquesduponant.net/images/b/b7/PlansLaserBateauPirate2022-1.svg Plan 1] [https://www.wiki.lesfabriquesduponant.net/images/3/3b/PlansLaserBateauPirate2022-3.svg Plan 3]&amp;lt;br/&amp;gt;[https://www.wiki.lesfabriquesduponant.net/images/8/88/PlansLaserBateauPirate2022-2.svg Plan 2] [https://www.wiki.lesfabriquesduponant.net/images/6/6e/PlansLaserBateauPirate2022-4.svg Plan 4]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
[[Image:BateauPirateARDSH2022.png|1000px|center]]&lt;br /&gt;
&lt;br /&gt;
==Musiques==&lt;br /&gt;
Lien : https://www.youtube.com/watch?v=gVzQWP4bKPA&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
{|align=&amp;quot;center&amp;quot; class=&amp;quot;wikitable&amp;quot;  &lt;br /&gt;
! rowspan=&amp;quot;1&amp;quot; | Musique&lt;br /&gt;
!! width=&amp;quot;50%&amp;quot; rowspan=&amp;quot;1&amp;quot; | Moteur&lt;br /&gt;
|-&lt;br /&gt;
||&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;DFPlayer_Mini_Mp3.h&amp;gt;&lt;br /&gt;
#include &amp;lt;SoftwareSerial.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int i=0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin (9600);&lt;br /&gt;
  mp3_set_serial (Serial);&lt;br /&gt;
  mp3_set_volume (25);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop () {&lt;br /&gt;
  while (i&amp;lt;3){&lt;br /&gt;
      i++;&lt;br /&gt;
      mp3_play(i);&lt;br /&gt;
      delay(119000);&lt;br /&gt;
      i=i%2;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|rowspan=&amp;quot;1&amp;quot; colspan=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; valign=&amp;quot;center&amp;quot; |&amp;lt;pre&amp;gt;&lt;br /&gt;
// Pont en H L298N&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Ports de commande du moteur B&lt;br /&gt;
int motorPin1 = 8;&lt;br /&gt;
int motorPin2 = 9;&lt;br /&gt;
int enablePin = 5;&lt;br /&gt;
 &lt;br /&gt;
// Vitesse du moteur&lt;br /&gt;
int state = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(9600); &lt;br /&gt;
  Serial.println(F(&amp;quot;Initialize System&amp;quot;)); &lt;br /&gt;
  //Init btn &lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
    // Initialisation du port série&lt;br /&gt;
    Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
void loop() {&lt;br /&gt;
&lt;br /&gt;
    if (Serial.available() &amp;gt; 0)&lt;br /&gt;
    {&lt;br /&gt;
      // Lecture de l'entier passé au port série&lt;br /&gt;
      state = Serial.parseInt();&lt;br /&gt;
&lt;br /&gt;
      //&lt;br /&gt;
      // Sens du mouvement&lt;br /&gt;
      //&lt;br /&gt;
      if (state &amp;gt; 0) // avant&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(motorPin1, HIGH); &lt;br /&gt;
        digitalWrite(motorPin2, LOW);&lt;br /&gt;
        Serial.print(&amp;quot;Avant &amp;quot;);&lt;br /&gt;
        Serial.println(state);&lt;br /&gt;
      }&lt;br /&gt;
      else if (state &amp;lt; 0) // arrière&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(motorPin1, LOW); &lt;br /&gt;
        digitalWrite(motorPin2, HIGH);&lt;br /&gt;
        Serial.print(&amp;quot;Arriere &amp;quot;);&lt;br /&gt;
        Serial.println(state);&lt;br /&gt;
      }&lt;br /&gt;
      else // Stop (freinage)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(motorPin1, HIGH); &lt;br /&gt;
        digitalWrite(motorPin2, HIGH);&lt;br /&gt;
        Serial.println(&amp;quot;Stop&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      //&lt;br /&gt;
      // Vitesse du mouvement&lt;br /&gt;
      //&lt;br /&gt;
      analogWrite(enablePin, abs(state));&lt;br /&gt;
    }&lt;br /&gt;
    delay(100);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Catégories==&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19304</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19304"/>
				<updated>2022-01-19T13:24:27Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : Annulation des modifications 19303 de Titouan Melon (discussion)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Des taupes montent et descendent.&lt;br /&gt;
Quand elles sortent de leur trou, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle ne redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D) (x7)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x7)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
* Breadboard&lt;br /&gt;
&lt;br /&gt;
* Alimentation 12V&lt;br /&gt;
* Alimentation 5V (câble USB+PC)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
[[Fichier:BoxPartie1.pdf|vignette]]&lt;br /&gt;
[[Fichier:BoxPartie2.pdf|vignette]]&lt;br /&gt;
[[Fichier:BoxPartie3.pdf|vignette]]&lt;br /&gt;
&lt;br /&gt;
Mécanisme prévu à l'origine pour allonger la course de la taupe :&lt;br /&gt;
[[Fichier:Taupe originale.jpg|vignette|néant|Taupe origninale]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Une taupe.jpg|vignette|néant|Une taupe]]&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette|néant]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
Ecran LCD.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|néant|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&lt;br /&gt;
Tout d'abord il faut tester les composants pour s'assurer qu'ils fonctionnent tous bien&lt;br /&gt;
&lt;br /&gt;
===Bouton===&lt;br /&gt;
&lt;br /&gt;
Ce code permet de verifier le fonctionnement des boutons&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22; //22 represente le pin ou sera branché le bouton&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT); //Cette ligne permet de passer le pin en mode entré&lt;br /&gt;
  Serial.begin(9600); //Initialise le terminal &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1)); //Ecris l'etat du pin du bouton (0 ou 1)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Solénoïde===&lt;br /&gt;
&lt;br /&gt;
Ce code permettra d'activer/desactiver le selenoide 1s/1s&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cmd_taupe1 = 53; //53 represente le pin ou sera branché le bouton&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT); //Cette ligne passe le pin en sortie&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  digitalWrite(cmd_taupe1, HIGH); //Active le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
  digitalWrite(cmd_taupe1, LOW); //Desactive le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===LCD===&lt;br /&gt;
&lt;br /&gt;
Pour voir toute les possibilité offerte par le LCD nous vous conseillons le site electronique amateur&amp;lt;ref&amp;gt;https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ici on ne fait que écrire &amp;quot;vous avez: xx points&amp;quot; sur l'écran&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Vous avez :&amp;quot;);&lt;br /&gt;
  display.setCursor(50, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.println(&amp;quot; points&amp;quot;);&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.print(pts);&lt;br /&gt;
  display.display(); //Affiche l'ecran&lt;br /&gt;
  display.clearDisplay(); //Efface l'ecran&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Taupe===&lt;br /&gt;
&lt;br /&gt;
Ici le code rassemble un solenoide et un bouton pour faire une taupe&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int cmd_taupe1 = 53;&lt;br /&gt;
int int_cmd_taupe1 = 1;&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
&lt;br /&gt;
int pts = 0;&lt;br /&gt;
&lt;br /&gt;
int start = 0;&lt;br /&gt;
int now = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  now = millis(); //On récupère le temps dans une variable&lt;br /&gt;
  if (now-start &amp;gt; 1000) //Si il s'est écoulé plus de 1s&lt;br /&gt;
  {&lt;br /&gt;
    start = millis(); //On renitialise le temps de départ du timer&lt;br /&gt;
    if (int_cmd_taupe1 == 1) //Si la taupe est rentré elle sort&lt;br /&gt;
      int_cmd_taupe1 = 0;&lt;br /&gt;
    else //sinon elle rentre&lt;br /&gt;
      int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  digitalWrite(cmd_taupe1, int_cmd_taupe1); //On ecrit sur les pin des selenoide les valeurs de commande de ceux ci&lt;br /&gt;
&lt;br /&gt;
  //Capteur&lt;br /&gt;
  if (digitalRead(cpt_taupe1) == 1 &amp;amp;&amp;amp; int_cmd_taupe1 == 0) //Si la taupe est relevé est que le bouton est appuyé on gagne 1 points et la taupe se baisse&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prog final===&lt;br /&gt;
&lt;br /&gt;
Aprés avoir vérifié et cablé il ne reste plus qu'a tout rassembler pour le code final&lt;br /&gt;
&lt;br /&gt;
Ici il n'y a que 3 taupes mais vous pouvez en rajouter a votre guise et changer le texte sur l'ecran.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
int cmd_taupe1 = 53;&lt;br /&gt;
int cmd_taupe2 = 51;&lt;br /&gt;
int cmd_taupe3 = 49;&lt;br /&gt;
&lt;br /&gt;
int int_cmd_taupe1 = 1;&lt;br /&gt;
int int_cmd_taupe2 = 1;&lt;br /&gt;
int int_cmd_taupe3 = 1;&lt;br /&gt;
&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
int cpt_taupe2 = 24;&lt;br /&gt;
int cpt_taupe3 = 26;&lt;br /&gt;
&lt;br /&gt;
int pts = 0;&lt;br /&gt;
&lt;br /&gt;
int start = 0;&lt;br /&gt;
int now = 0;&lt;br /&gt;
&lt;br /&gt;
int random_int = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe2, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe3, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe2, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe3, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
  randomSeed(analogRead(0)); //Initialise le random par la lecture du bruit d'un pin analogique non branché&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  now = millis(); //On récupère le temps dans une variable&lt;br /&gt;
&lt;br /&gt;
  if (now-start &amp;gt; 1000) //Si il s'est écoulé plus de 1s&lt;br /&gt;
  {&lt;br /&gt;
    start = millis(); //On renitialise le temps de départ du timer&lt;br /&gt;
    random_int = random(1, 3); //On créer un nombre random entre 1 et le nombre de taupe (ici 3)&lt;br /&gt;
    if (int_cmd_taupe1 == 1 and random_int == 1) //Si la taupe est rentré est que le random l'indique elle sort&lt;br /&gt;
      int_cmd_taupe1 = 0;&lt;br /&gt;
    else //sinon elle rentre&lt;br /&gt;
      int_cmd_taupe1 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe2 == 1 and random_int == 2)&lt;br /&gt;
      int_cmd_taupe2 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe2 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe3 == 1 and random_int == 3)&lt;br /&gt;
      int_cmd_taupe3 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  //Taupe&lt;br /&gt;
  digitalWrite(cmd_taupe1, int_cmd_taupe1); //On ecrit sur les pin des selenoide les valeurs de commande de ceux ci&lt;br /&gt;
  digitalWrite(cmd_taupe2, int_cmd_taupe2);&lt;br /&gt;
  digitalWrite(cmd_taupe3, int_cmd_taupe3);&lt;br /&gt;
&lt;br /&gt;
  //LCD&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Vous avez :&amp;quot;);&lt;br /&gt;
  display.setCursor(50, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.println(&amp;quot; points&amp;quot;);&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.print(pts);&lt;br /&gt;
  display.display(); //Affiche l'ecran&lt;br /&gt;
  display.clearDisplay(); //Efface l'ecran&lt;br /&gt;
&lt;br /&gt;
  //Capteur&lt;br /&gt;
  if (digitalRead(cpt_taupe1) == 1 &amp;amp;&amp;amp; int_cmd_taupe1 == 0) //Si la taupe est relevé est que le bouton est appuyé on gagne 1 points et la taupe se baisse&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe2) == 1 &amp;amp;&amp;amp; int_cmd_taupe2 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe2 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe3) == 1 &amp;amp;&amp;amp; int_cmd_taupe3 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19303</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19303"/>
				<updated>2022-01-19T13:23:55Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : /* Construction de la taupe : */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Des taupes montent et descendent.&lt;br /&gt;
Quand elles sortent de leur trou, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle ne redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D) (x7)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x7)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
* Breadboard&lt;br /&gt;
&lt;br /&gt;
* Alimentation 12V&lt;br /&gt;
* Alimentation 5V (câble USB+PC)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
[[BoxPartie1.pdf|vignette]]&lt;br /&gt;
[[BoxPartie2.pdf|vignette]]&lt;br /&gt;
[[BoxPartie3.pdf|vignette]]&lt;br /&gt;
&lt;br /&gt;
Mécanisme prévu à l'origine pour allonger la course de la taupe :&lt;br /&gt;
[[Fichier:Taupe originale.jpg|vignette|néant|Taupe origninale]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Une taupe.jpg|vignette|néant|Une taupe]]&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette|néant]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
Ecran LCD.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|néant|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&lt;br /&gt;
Tout d'abord il faut tester les composants pour s'assurer qu'ils fonctionnent tous bien&lt;br /&gt;
&lt;br /&gt;
===Bouton===&lt;br /&gt;
&lt;br /&gt;
Ce code permet de verifier le fonctionnement des boutons&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22; //22 represente le pin ou sera branché le bouton&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT); //Cette ligne permet de passer le pin en mode entré&lt;br /&gt;
  Serial.begin(9600); //Initialise le terminal &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1)); //Ecris l'etat du pin du bouton (0 ou 1)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Solénoïde===&lt;br /&gt;
&lt;br /&gt;
Ce code permettra d'activer/desactiver le selenoide 1s/1s&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cmd_taupe1 = 53; //53 represente le pin ou sera branché le bouton&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT); //Cette ligne passe le pin en sortie&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  digitalWrite(cmd_taupe1, HIGH); //Active le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
  digitalWrite(cmd_taupe1, LOW); //Desactive le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===LCD===&lt;br /&gt;
&lt;br /&gt;
Pour voir toute les possibilité offerte par le LCD nous vous conseillons le site electronique amateur&amp;lt;ref&amp;gt;https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ici on ne fait que écrire &amp;quot;vous avez: xx points&amp;quot; sur l'écran&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Vous avez :&amp;quot;);&lt;br /&gt;
  display.setCursor(50, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.println(&amp;quot; points&amp;quot;);&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.print(pts);&lt;br /&gt;
  display.display(); //Affiche l'ecran&lt;br /&gt;
  display.clearDisplay(); //Efface l'ecran&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Taupe===&lt;br /&gt;
&lt;br /&gt;
Ici le code rassemble un solenoide et un bouton pour faire une taupe&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int cmd_taupe1 = 53;&lt;br /&gt;
int int_cmd_taupe1 = 1;&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
&lt;br /&gt;
int pts = 0;&lt;br /&gt;
&lt;br /&gt;
int start = 0;&lt;br /&gt;
int now = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  now = millis(); //On récupère le temps dans une variable&lt;br /&gt;
  if (now-start &amp;gt; 1000) //Si il s'est écoulé plus de 1s&lt;br /&gt;
  {&lt;br /&gt;
    start = millis(); //On renitialise le temps de départ du timer&lt;br /&gt;
    if (int_cmd_taupe1 == 1) //Si la taupe est rentré elle sort&lt;br /&gt;
      int_cmd_taupe1 = 0;&lt;br /&gt;
    else //sinon elle rentre&lt;br /&gt;
      int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  digitalWrite(cmd_taupe1, int_cmd_taupe1); //On ecrit sur les pin des selenoide les valeurs de commande de ceux ci&lt;br /&gt;
&lt;br /&gt;
  //Capteur&lt;br /&gt;
  if (digitalRead(cpt_taupe1) == 1 &amp;amp;&amp;amp; int_cmd_taupe1 == 0) //Si la taupe est relevé est que le bouton est appuyé on gagne 1 points et la taupe se baisse&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prog final===&lt;br /&gt;
&lt;br /&gt;
Aprés avoir vérifié et cablé il ne reste plus qu'a tout rassembler pour le code final&lt;br /&gt;
&lt;br /&gt;
Ici il n'y a que 3 taupes mais vous pouvez en rajouter a votre guise et changer le texte sur l'ecran.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
int cmd_taupe1 = 53;&lt;br /&gt;
int cmd_taupe2 = 51;&lt;br /&gt;
int cmd_taupe3 = 49;&lt;br /&gt;
&lt;br /&gt;
int int_cmd_taupe1 = 1;&lt;br /&gt;
int int_cmd_taupe2 = 1;&lt;br /&gt;
int int_cmd_taupe3 = 1;&lt;br /&gt;
&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
int cpt_taupe2 = 24;&lt;br /&gt;
int cpt_taupe3 = 26;&lt;br /&gt;
&lt;br /&gt;
int pts = 0;&lt;br /&gt;
&lt;br /&gt;
int start = 0;&lt;br /&gt;
int now = 0;&lt;br /&gt;
&lt;br /&gt;
int random_int = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe2, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe3, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe2, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe3, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
  randomSeed(analogRead(0)); //Initialise le random par la lecture du bruit d'un pin analogique non branché&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  now = millis(); //On récupère le temps dans une variable&lt;br /&gt;
&lt;br /&gt;
  if (now-start &amp;gt; 1000) //Si il s'est écoulé plus de 1s&lt;br /&gt;
  {&lt;br /&gt;
    start = millis(); //On renitialise le temps de départ du timer&lt;br /&gt;
    random_int = random(1, 3); //On créer un nombre random entre 1 et le nombre de taupe (ici 3)&lt;br /&gt;
    if (int_cmd_taupe1 == 1 and random_int == 1) //Si la taupe est rentré est que le random l'indique elle sort&lt;br /&gt;
      int_cmd_taupe1 = 0;&lt;br /&gt;
    else //sinon elle rentre&lt;br /&gt;
      int_cmd_taupe1 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe2 == 1 and random_int == 2)&lt;br /&gt;
      int_cmd_taupe2 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe2 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe3 == 1 and random_int == 3)&lt;br /&gt;
      int_cmd_taupe3 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  //Taupe&lt;br /&gt;
  digitalWrite(cmd_taupe1, int_cmd_taupe1); //On ecrit sur les pin des selenoide les valeurs de commande de ceux ci&lt;br /&gt;
  digitalWrite(cmd_taupe2, int_cmd_taupe2);&lt;br /&gt;
  digitalWrite(cmd_taupe3, int_cmd_taupe3);&lt;br /&gt;
&lt;br /&gt;
  //LCD&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Vous avez :&amp;quot;);&lt;br /&gt;
  display.setCursor(50, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.println(&amp;quot; points&amp;quot;);&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.print(pts);&lt;br /&gt;
  display.display(); //Affiche l'ecran&lt;br /&gt;
  display.clearDisplay(); //Efface l'ecran&lt;br /&gt;
&lt;br /&gt;
  //Capteur&lt;br /&gt;
  if (digitalRead(cpt_taupe1) == 1 &amp;amp;&amp;amp; int_cmd_taupe1 == 0) //Si la taupe est relevé est que le bouton est appuyé on gagne 1 points et la taupe se baisse&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe2) == 1 &amp;amp;&amp;amp; int_cmd_taupe2 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe2 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe3) == 1 &amp;amp;&amp;amp; int_cmd_taupe3 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19301</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19301"/>
				<updated>2022-01-19T13:23:40Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : /* Construction de la taupe : */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Des taupes montent et descendent.&lt;br /&gt;
Quand elles sortent de leur trou, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle ne redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D) (x7)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x7)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
* Breadboard&lt;br /&gt;
&lt;br /&gt;
* Alimentation 12V&lt;br /&gt;
* Alimentation 5V (câble USB+PC)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
[[Fichier:BoxPartie1.pdf|vignette]]&lt;br /&gt;
[[Fichier:BoxPartie2.pdf|vignette]]&lt;br /&gt;
[[Fichier:BoxPartie3.pdf|vignette]]&lt;br /&gt;
&lt;br /&gt;
Mécanisme prévu à l'origine pour allonger la course de la taupe :&lt;br /&gt;
[[Fichier:Taupe originale.jpg|vignette|néant|Taupe origninale]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Une taupe.jpg|vignette|néant|Une taupe]]&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette|néant]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
Ecran LCD.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|néant|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&lt;br /&gt;
Tout d'abord il faut tester les composants pour s'assurer qu'ils fonctionnent tous bien&lt;br /&gt;
&lt;br /&gt;
===Bouton===&lt;br /&gt;
&lt;br /&gt;
Ce code permet de verifier le fonctionnement des boutons&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22; //22 represente le pin ou sera branché le bouton&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT); //Cette ligne permet de passer le pin en mode entré&lt;br /&gt;
  Serial.begin(9600); //Initialise le terminal &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1)); //Ecris l'etat du pin du bouton (0 ou 1)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Solénoïde===&lt;br /&gt;
&lt;br /&gt;
Ce code permettra d'activer/desactiver le selenoide 1s/1s&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cmd_taupe1 = 53; //53 represente le pin ou sera branché le bouton&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT); //Cette ligne passe le pin en sortie&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  digitalWrite(cmd_taupe1, HIGH); //Active le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
  digitalWrite(cmd_taupe1, LOW); //Desactive le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===LCD===&lt;br /&gt;
&lt;br /&gt;
Pour voir toute les possibilité offerte par le LCD nous vous conseillons le site electronique amateur&amp;lt;ref&amp;gt;https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ici on ne fait que écrire &amp;quot;vous avez: xx points&amp;quot; sur l'écran&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Vous avez :&amp;quot;);&lt;br /&gt;
  display.setCursor(50, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.println(&amp;quot; points&amp;quot;);&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.print(pts);&lt;br /&gt;
  display.display(); //Affiche l'ecran&lt;br /&gt;
  display.clearDisplay(); //Efface l'ecran&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Taupe===&lt;br /&gt;
&lt;br /&gt;
Ici le code rassemble un solenoide et un bouton pour faire une taupe&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int cmd_taupe1 = 53;&lt;br /&gt;
int int_cmd_taupe1 = 1;&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
&lt;br /&gt;
int pts = 0;&lt;br /&gt;
&lt;br /&gt;
int start = 0;&lt;br /&gt;
int now = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  now = millis(); //On récupère le temps dans une variable&lt;br /&gt;
  if (now-start &amp;gt; 1000) //Si il s'est écoulé plus de 1s&lt;br /&gt;
  {&lt;br /&gt;
    start = millis(); //On renitialise le temps de départ du timer&lt;br /&gt;
    if (int_cmd_taupe1 == 1) //Si la taupe est rentré elle sort&lt;br /&gt;
      int_cmd_taupe1 = 0;&lt;br /&gt;
    else //sinon elle rentre&lt;br /&gt;
      int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  digitalWrite(cmd_taupe1, int_cmd_taupe1); //On ecrit sur les pin des selenoide les valeurs de commande de ceux ci&lt;br /&gt;
&lt;br /&gt;
  //Capteur&lt;br /&gt;
  if (digitalRead(cpt_taupe1) == 1 &amp;amp;&amp;amp; int_cmd_taupe1 == 0) //Si la taupe est relevé est que le bouton est appuyé on gagne 1 points et la taupe se baisse&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prog final===&lt;br /&gt;
&lt;br /&gt;
Aprés avoir vérifié et cablé il ne reste plus qu'a tout rassembler pour le code final&lt;br /&gt;
&lt;br /&gt;
Ici il n'y a que 3 taupes mais vous pouvez en rajouter a votre guise et changer le texte sur l'ecran.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
int cmd_taupe1 = 53;&lt;br /&gt;
int cmd_taupe2 = 51;&lt;br /&gt;
int cmd_taupe3 = 49;&lt;br /&gt;
&lt;br /&gt;
int int_cmd_taupe1 = 1;&lt;br /&gt;
int int_cmd_taupe2 = 1;&lt;br /&gt;
int int_cmd_taupe3 = 1;&lt;br /&gt;
&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
int cpt_taupe2 = 24;&lt;br /&gt;
int cpt_taupe3 = 26;&lt;br /&gt;
&lt;br /&gt;
int pts = 0;&lt;br /&gt;
&lt;br /&gt;
int start = 0;&lt;br /&gt;
int now = 0;&lt;br /&gt;
&lt;br /&gt;
int random_int = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe2, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe3, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe2, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe3, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
  randomSeed(analogRead(0)); //Initialise le random par la lecture du bruit d'un pin analogique non branché&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  now = millis(); //On récupère le temps dans une variable&lt;br /&gt;
&lt;br /&gt;
  if (now-start &amp;gt; 1000) //Si il s'est écoulé plus de 1s&lt;br /&gt;
  {&lt;br /&gt;
    start = millis(); //On renitialise le temps de départ du timer&lt;br /&gt;
    random_int = random(1, 3); //On créer un nombre random entre 1 et le nombre de taupe (ici 3)&lt;br /&gt;
    if (int_cmd_taupe1 == 1 and random_int == 1) //Si la taupe est rentré est que le random l'indique elle sort&lt;br /&gt;
      int_cmd_taupe1 = 0;&lt;br /&gt;
    else //sinon elle rentre&lt;br /&gt;
      int_cmd_taupe1 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe2 == 1 and random_int == 2)&lt;br /&gt;
      int_cmd_taupe2 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe2 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe3 == 1 and random_int == 3)&lt;br /&gt;
      int_cmd_taupe3 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  //Taupe&lt;br /&gt;
  digitalWrite(cmd_taupe1, int_cmd_taupe1); //On ecrit sur les pin des selenoide les valeurs de commande de ceux ci&lt;br /&gt;
  digitalWrite(cmd_taupe2, int_cmd_taupe2);&lt;br /&gt;
  digitalWrite(cmd_taupe3, int_cmd_taupe3);&lt;br /&gt;
&lt;br /&gt;
  //LCD&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Vous avez :&amp;quot;);&lt;br /&gt;
  display.setCursor(50, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.println(&amp;quot; points&amp;quot;);&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.print(pts);&lt;br /&gt;
  display.display(); //Affiche l'ecran&lt;br /&gt;
  display.clearDisplay(); //Efface l'ecran&lt;br /&gt;
&lt;br /&gt;
  //Capteur&lt;br /&gt;
  if (digitalRead(cpt_taupe1) == 1 &amp;amp;&amp;amp; int_cmd_taupe1 == 0) //Si la taupe est relevé est que le bouton est appuyé on gagne 1 points et la taupe se baisse&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe2) == 1 &amp;amp;&amp;amp; int_cmd_taupe2 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe2 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe3) == 1 &amp;amp;&amp;amp; int_cmd_taupe3 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19300</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19300"/>
				<updated>2022-01-19T13:23:31Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : /* Construction de la taupe : */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Des taupes montent et descendent.&lt;br /&gt;
Quand elles sortent de leur trou, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle ne redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D) (x7)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x7)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
* Breadboard&lt;br /&gt;
&lt;br /&gt;
* Alimentation 12V&lt;br /&gt;
* Alimentation 5V (câble USB+PC)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
[[Fichier:BoxPartie1.pdf|vignette|]]&lt;br /&gt;
[[Fichier:BoxPartie2.pdf|vignette|]]&lt;br /&gt;
[[Fichier:BoxPartie3.pdf|vignette|]]&lt;br /&gt;
&lt;br /&gt;
Mécanisme prévu à l'origine pour allonger la course de la taupe :&lt;br /&gt;
[[Fichier:Taupe originale.jpg|vignette|néant|Taupe origninale]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Une taupe.jpg|vignette|néant|Une taupe]]&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette|néant]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
Ecran LCD.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|néant|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&lt;br /&gt;
Tout d'abord il faut tester les composants pour s'assurer qu'ils fonctionnent tous bien&lt;br /&gt;
&lt;br /&gt;
===Bouton===&lt;br /&gt;
&lt;br /&gt;
Ce code permet de verifier le fonctionnement des boutons&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22; //22 represente le pin ou sera branché le bouton&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT); //Cette ligne permet de passer le pin en mode entré&lt;br /&gt;
  Serial.begin(9600); //Initialise le terminal &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1)); //Ecris l'etat du pin du bouton (0 ou 1)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Solénoïde===&lt;br /&gt;
&lt;br /&gt;
Ce code permettra d'activer/desactiver le selenoide 1s/1s&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cmd_taupe1 = 53; //53 represente le pin ou sera branché le bouton&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT); //Cette ligne passe le pin en sortie&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  digitalWrite(cmd_taupe1, HIGH); //Active le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
  digitalWrite(cmd_taupe1, LOW); //Desactive le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===LCD===&lt;br /&gt;
&lt;br /&gt;
Pour voir toute les possibilité offerte par le LCD nous vous conseillons le site electronique amateur&amp;lt;ref&amp;gt;https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ici on ne fait que écrire &amp;quot;vous avez: xx points&amp;quot; sur l'écran&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Vous avez :&amp;quot;);&lt;br /&gt;
  display.setCursor(50, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.println(&amp;quot; points&amp;quot;);&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.print(pts);&lt;br /&gt;
  display.display(); //Affiche l'ecran&lt;br /&gt;
  display.clearDisplay(); //Efface l'ecran&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Taupe===&lt;br /&gt;
&lt;br /&gt;
Ici le code rassemble un solenoide et un bouton pour faire une taupe&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int cmd_taupe1 = 53;&lt;br /&gt;
int int_cmd_taupe1 = 1;&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
&lt;br /&gt;
int pts = 0;&lt;br /&gt;
&lt;br /&gt;
int start = 0;&lt;br /&gt;
int now = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  now = millis(); //On récupère le temps dans une variable&lt;br /&gt;
  if (now-start &amp;gt; 1000) //Si il s'est écoulé plus de 1s&lt;br /&gt;
  {&lt;br /&gt;
    start = millis(); //On renitialise le temps de départ du timer&lt;br /&gt;
    if (int_cmd_taupe1 == 1) //Si la taupe est rentré elle sort&lt;br /&gt;
      int_cmd_taupe1 = 0;&lt;br /&gt;
    else //sinon elle rentre&lt;br /&gt;
      int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  digitalWrite(cmd_taupe1, int_cmd_taupe1); //On ecrit sur les pin des selenoide les valeurs de commande de ceux ci&lt;br /&gt;
&lt;br /&gt;
  //Capteur&lt;br /&gt;
  if (digitalRead(cpt_taupe1) == 1 &amp;amp;&amp;amp; int_cmd_taupe1 == 0) //Si la taupe est relevé est que le bouton est appuyé on gagne 1 points et la taupe se baisse&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prog final===&lt;br /&gt;
&lt;br /&gt;
Aprés avoir vérifié et cablé il ne reste plus qu'a tout rassembler pour le code final&lt;br /&gt;
&lt;br /&gt;
Ici il n'y a que 3 taupes mais vous pouvez en rajouter a votre guise et changer le texte sur l'ecran.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
int cmd_taupe1 = 53;&lt;br /&gt;
int cmd_taupe2 = 51;&lt;br /&gt;
int cmd_taupe3 = 49;&lt;br /&gt;
&lt;br /&gt;
int int_cmd_taupe1 = 1;&lt;br /&gt;
int int_cmd_taupe2 = 1;&lt;br /&gt;
int int_cmd_taupe3 = 1;&lt;br /&gt;
&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
int cpt_taupe2 = 24;&lt;br /&gt;
int cpt_taupe3 = 26;&lt;br /&gt;
&lt;br /&gt;
int pts = 0;&lt;br /&gt;
&lt;br /&gt;
int start = 0;&lt;br /&gt;
int now = 0;&lt;br /&gt;
&lt;br /&gt;
int random_int = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe2, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe3, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe2, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe3, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
  randomSeed(analogRead(0)); //Initialise le random par la lecture du bruit d'un pin analogique non branché&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  now = millis(); //On récupère le temps dans une variable&lt;br /&gt;
&lt;br /&gt;
  if (now-start &amp;gt; 1000) //Si il s'est écoulé plus de 1s&lt;br /&gt;
  {&lt;br /&gt;
    start = millis(); //On renitialise le temps de départ du timer&lt;br /&gt;
    random_int = random(1, 3); //On créer un nombre random entre 1 et le nombre de taupe (ici 3)&lt;br /&gt;
    if (int_cmd_taupe1 == 1 and random_int == 1) //Si la taupe est rentré est que le random l'indique elle sort&lt;br /&gt;
      int_cmd_taupe1 = 0;&lt;br /&gt;
    else //sinon elle rentre&lt;br /&gt;
      int_cmd_taupe1 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe2 == 1 and random_int == 2)&lt;br /&gt;
      int_cmd_taupe2 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe2 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe3 == 1 and random_int == 3)&lt;br /&gt;
      int_cmd_taupe3 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  //Taupe&lt;br /&gt;
  digitalWrite(cmd_taupe1, int_cmd_taupe1); //On ecrit sur les pin des selenoide les valeurs de commande de ceux ci&lt;br /&gt;
  digitalWrite(cmd_taupe2, int_cmd_taupe2);&lt;br /&gt;
  digitalWrite(cmd_taupe3, int_cmd_taupe3);&lt;br /&gt;
&lt;br /&gt;
  //LCD&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Vous avez :&amp;quot;);&lt;br /&gt;
  display.setCursor(50, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.println(&amp;quot; points&amp;quot;);&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.print(pts);&lt;br /&gt;
  display.display(); //Affiche l'ecran&lt;br /&gt;
  display.clearDisplay(); //Efface l'ecran&lt;br /&gt;
&lt;br /&gt;
  //Capteur&lt;br /&gt;
  if (digitalRead(cpt_taupe1) == 1 &amp;amp;&amp;amp; int_cmd_taupe1 == 0) //Si la taupe est relevé est que le bouton est appuyé on gagne 1 points et la taupe se baisse&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe2) == 1 &amp;amp;&amp;amp; int_cmd_taupe2 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe2 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe3) == 1 &amp;amp;&amp;amp; int_cmd_taupe3 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19298</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19298"/>
				<updated>2022-01-19T13:22:47Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : /* Construction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Des taupes montent et descendent.&lt;br /&gt;
Quand elles sortent de leur trou, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle ne redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D) (x7)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x7)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
* Breadboard&lt;br /&gt;
&lt;br /&gt;
* Alimentation 12V&lt;br /&gt;
* Alimentation 5V (câble USB+PC)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
[[Fichier:BoxPartie1.pdf|vignette|néant|Taupe origninale]]&lt;br /&gt;
[[Fichier:BoxPartie2.pdf|vignette|néant|Taupe origninale]]&lt;br /&gt;
[[Fichier:BoxPartie3.pdf|vignette|néant|Taupe origninale]]&lt;br /&gt;
&lt;br /&gt;
Mécanisme prévu à l'origine pour allonger la course de la taupe :&lt;br /&gt;
[[Fichier:Taupe originale.jpg|vignette|néant|Taupe origninale]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Une taupe.jpg|vignette|néant|Une taupe]]&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette|néant]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
Ecran LCD.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|néant|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&lt;br /&gt;
Tout d'abord il faut tester les composants pour s'assurer qu'ils fonctionnent tous bien&lt;br /&gt;
&lt;br /&gt;
===Bouton===&lt;br /&gt;
&lt;br /&gt;
Ce code permet de verifier le fonctionnement des boutons&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22; //22 represente le pin ou sera branché le bouton&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT); //Cette ligne permet de passer le pin en mode entré&lt;br /&gt;
  Serial.begin(9600); //Initialise le terminal &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1)); //Ecris l'etat du pin du bouton (0 ou 1)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Solénoïde===&lt;br /&gt;
&lt;br /&gt;
Ce code permettra d'activer/desactiver le selenoide 1s/1s&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cmd_taupe1 = 53; //53 represente le pin ou sera branché le bouton&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT); //Cette ligne passe le pin en sortie&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  digitalWrite(cmd_taupe1, HIGH); //Active le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
  digitalWrite(cmd_taupe1, LOW); //Desactive le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===LCD===&lt;br /&gt;
&lt;br /&gt;
Pour voir toute les possibilité offerte par le LCD nous vous conseillons le site electronique amateur&amp;lt;ref&amp;gt;https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ici on ne fait que écrire &amp;quot;vous avez: xx points&amp;quot; sur l'écran&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Vous avez :&amp;quot;);&lt;br /&gt;
  display.setCursor(50, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.println(&amp;quot; points&amp;quot;);&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.print(pts);&lt;br /&gt;
  display.display(); //Affiche l'ecran&lt;br /&gt;
  display.clearDisplay(); //Efface l'ecran&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Taupe===&lt;br /&gt;
&lt;br /&gt;
Ici le code rassemble un solenoide et un bouton pour faire une taupe&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int cmd_taupe1 = 53;&lt;br /&gt;
int int_cmd_taupe1 = 1;&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
&lt;br /&gt;
int pts = 0;&lt;br /&gt;
&lt;br /&gt;
int start = 0;&lt;br /&gt;
int now = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  now = millis(); //On récupère le temps dans une variable&lt;br /&gt;
  if (now-start &amp;gt; 1000) //Si il s'est écoulé plus de 1s&lt;br /&gt;
  {&lt;br /&gt;
    start = millis(); //On renitialise le temps de départ du timer&lt;br /&gt;
    if (int_cmd_taupe1 == 1) //Si la taupe est rentré elle sort&lt;br /&gt;
      int_cmd_taupe1 = 0;&lt;br /&gt;
    else //sinon elle rentre&lt;br /&gt;
      int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  digitalWrite(cmd_taupe1, int_cmd_taupe1); //On ecrit sur les pin des selenoide les valeurs de commande de ceux ci&lt;br /&gt;
&lt;br /&gt;
  //Capteur&lt;br /&gt;
  if (digitalRead(cpt_taupe1) == 1 &amp;amp;&amp;amp; int_cmd_taupe1 == 0) //Si la taupe est relevé est que le bouton est appuyé on gagne 1 points et la taupe se baisse&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prog final===&lt;br /&gt;
&lt;br /&gt;
Aprés avoir vérifié et cablé il ne reste plus qu'a tout rassembler pour le code final&lt;br /&gt;
&lt;br /&gt;
Ici il n'y a que 3 taupes mais vous pouvez en rajouter a votre guise et changer le texte sur l'ecran.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
int cmd_taupe1 = 53;&lt;br /&gt;
int cmd_taupe2 = 51;&lt;br /&gt;
int cmd_taupe3 = 49;&lt;br /&gt;
&lt;br /&gt;
int int_cmd_taupe1 = 1;&lt;br /&gt;
int int_cmd_taupe2 = 1;&lt;br /&gt;
int int_cmd_taupe3 = 1;&lt;br /&gt;
&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
int cpt_taupe2 = 24;&lt;br /&gt;
int cpt_taupe3 = 26;&lt;br /&gt;
&lt;br /&gt;
int pts = 0;&lt;br /&gt;
&lt;br /&gt;
int start = 0;&lt;br /&gt;
int now = 0;&lt;br /&gt;
&lt;br /&gt;
int random_int = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe2, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe3, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe2, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe3, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
  randomSeed(analogRead(0)); //Initialise le random par la lecture du bruit d'un pin analogique non branché&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  now = millis(); //On récupère le temps dans une variable&lt;br /&gt;
&lt;br /&gt;
  if (now-start &amp;gt; 1000) //Si il s'est écoulé plus de 1s&lt;br /&gt;
  {&lt;br /&gt;
    start = millis(); //On renitialise le temps de départ du timer&lt;br /&gt;
    random_int = random(1, 3); //On créer un nombre random entre 1 et le nombre de taupe (ici 3)&lt;br /&gt;
    if (int_cmd_taupe1 == 1 and random_int == 1) //Si la taupe est rentré est que le random l'indique elle sort&lt;br /&gt;
      int_cmd_taupe1 = 0;&lt;br /&gt;
    else //sinon elle rentre&lt;br /&gt;
      int_cmd_taupe1 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe2 == 1 and random_int == 2)&lt;br /&gt;
      int_cmd_taupe2 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe2 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe3 == 1 and random_int == 3)&lt;br /&gt;
      int_cmd_taupe3 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  //Taupe&lt;br /&gt;
  digitalWrite(cmd_taupe1, int_cmd_taupe1); //On ecrit sur les pin des selenoide les valeurs de commande de ceux ci&lt;br /&gt;
  digitalWrite(cmd_taupe2, int_cmd_taupe2);&lt;br /&gt;
  digitalWrite(cmd_taupe3, int_cmd_taupe3);&lt;br /&gt;
&lt;br /&gt;
  //LCD&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Vous avez :&amp;quot;);&lt;br /&gt;
  display.setCursor(50, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.println(&amp;quot; points&amp;quot;);&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.print(pts);&lt;br /&gt;
  display.display(); //Affiche l'ecran&lt;br /&gt;
  display.clearDisplay(); //Efface l'ecran&lt;br /&gt;
&lt;br /&gt;
  //Capteur&lt;br /&gt;
  if (digitalRead(cpt_taupe1) == 1 &amp;amp;&amp;amp; int_cmd_taupe1 == 0) //Si la taupe est relevé est que le bouton est appuyé on gagne 1 points et la taupe se baisse&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe2) == 1 &amp;amp;&amp;amp; int_cmd_taupe2 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe2 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe3) == 1 &amp;amp;&amp;amp; int_cmd_taupe3 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:BoxPartie3.pdf&amp;diff=19292</id>
		<title>Fichier:BoxPartie3.pdf</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:BoxPartie3.pdf&amp;diff=19292"/>
				<updated>2022-01-19T13:20:52Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:BoxPartie2.pdf&amp;diff=19291</id>
		<title>Fichier:BoxPartie2.pdf</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:BoxPartie2.pdf&amp;diff=19291"/>
				<updated>2022-01-19T13:20:31Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:BoxPartie1.pdf&amp;diff=19290</id>
		<title>Fichier:BoxPartie1.pdf</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:BoxPartie1.pdf&amp;diff=19290"/>
				<updated>2022-01-19T13:20:02Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19274</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19274"/>
				<updated>2022-01-19T13:11:23Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Des taupes montent et descendent.&lt;br /&gt;
Quand elles sortent de leur trou, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle ne redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D) (x7)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x7)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
* Breadboard&lt;br /&gt;
&lt;br /&gt;
* Alimentation 12V&lt;br /&gt;
* Alimentation 5V (câble USB+PC)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
Mécanisme prévu à l'origine pour allonger la course de la taupe :&lt;br /&gt;
[[Fichier:Taupe originale.jpg|vignette|néant|Taupe origninale]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Une taupe.jpg|vignette|néant|Une taupe]]&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette|néant]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
Ecran LCD.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|néant|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&lt;br /&gt;
Tout d'abord il faut tester les composants pour s'assurer qu'ils fonctionnent tous bien&lt;br /&gt;
&lt;br /&gt;
===Bouton===&lt;br /&gt;
&lt;br /&gt;
Ce code permet de verifier le fonctionnement des boutons&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22; //22 represente le pin ou sera branché le bouton&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT); //Cette ligne permet de passer le pin en mode entré&lt;br /&gt;
  Serial.begin(9600); //Initialise le terminal &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1)); //Ecris l'etat du pin du bouton (0 ou 1)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Solénoïde===&lt;br /&gt;
&lt;br /&gt;
Ce code permettra d'activer/desactiver le selenoide 1s/1s&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cmd_taupe1 = 53; //53 represente le pin ou sera branché le bouton&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT); //Cette ligne passe le pin en sortie&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  digitalWrite(cmd_taupe1, HIGH); //Active le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
  digitalWrite(cmd_taupe1, LOW); //Desactive le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===LCD===&lt;br /&gt;
&lt;br /&gt;
Pour voir toute les possibilité offerte par le LCD nous vous conseillons le site electronique amateur&amp;lt;ref&amp;gt;https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ici on ne fait que écrire &amp;quot;vous avez: xx points&amp;quot; sur l'écran&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Vous avez :&amp;quot;);&lt;br /&gt;
  display.setCursor(50, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.println(&amp;quot; points&amp;quot;);&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.print(pts);&lt;br /&gt;
  display.display(); //Affiche l'ecran&lt;br /&gt;
  display.clearDisplay(); //Efface l'ecran&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Taupe===&lt;br /&gt;
&lt;br /&gt;
Ici le code rassemble un solenoide et un bouton pour faire une taupe&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int cmd_taupe1 = 53;&lt;br /&gt;
int int_cmd_taupe1 = 1;&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
&lt;br /&gt;
int pts = 0;&lt;br /&gt;
&lt;br /&gt;
int start = 0;&lt;br /&gt;
int now = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  now = millis(); //On récupère le temps dans une variable&lt;br /&gt;
  if (now-start &amp;gt; 1000) //Si il s'est écoulé plus de 1s&lt;br /&gt;
  {&lt;br /&gt;
    start = millis(); //On renitialise le temps de départ du timer&lt;br /&gt;
    if (int_cmd_taupe1 == 1) //Si la taupe est rentré elle sort&lt;br /&gt;
      int_cmd_taupe1 = 0;&lt;br /&gt;
    else //sinon elle rentre&lt;br /&gt;
      int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  digitalWrite(cmd_taupe1, int_cmd_taupe1); //On ecrit sur les pin des selenoide les valeurs de commande de ceux ci&lt;br /&gt;
&lt;br /&gt;
  //Capteur&lt;br /&gt;
  if (digitalRead(cpt_taupe1) == 1 &amp;amp;&amp;amp; int_cmd_taupe1 == 0) //Si la taupe est relevé est que le bouton est appuyé on gagne 1 points et la taupe se baisse&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prog final===&lt;br /&gt;
&lt;br /&gt;
Aprés avoir vérifié et cablé il ne reste plus qu'a tout rassembler pour le code final&lt;br /&gt;
&lt;br /&gt;
Ici il n'y a que 3 taupes mais vous pouvez en rajouter a votre guise et changer le texte sur l'ecran.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
int cmd_taupe1 = 53;&lt;br /&gt;
int cmd_taupe2 = 51;&lt;br /&gt;
int cmd_taupe3 = 49;&lt;br /&gt;
&lt;br /&gt;
int int_cmd_taupe1 = 1;&lt;br /&gt;
int int_cmd_taupe2 = 1;&lt;br /&gt;
int int_cmd_taupe3 = 1;&lt;br /&gt;
&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
int cpt_taupe2 = 24;&lt;br /&gt;
int cpt_taupe3 = 26;&lt;br /&gt;
&lt;br /&gt;
int pts = 0;&lt;br /&gt;
&lt;br /&gt;
int start = 0;&lt;br /&gt;
int now = 0;&lt;br /&gt;
&lt;br /&gt;
int random_int = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe2, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe3, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe2, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe3, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
  randomSeed(analogRead(0)); //Initialise le random par la lecture du bruit d'un pin analogique non branché&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  now = millis(); //On récupère le temps dans une variable&lt;br /&gt;
&lt;br /&gt;
  if (now-start &amp;gt; 1000) //Si il s'est écoulé plus de 1s&lt;br /&gt;
  {&lt;br /&gt;
    start = millis(); //On renitialise le temps de départ du timer&lt;br /&gt;
    random_int = random(1, 3); //On créer un nombre random entre 1 et le nombre de taupe (ici 3)&lt;br /&gt;
    if (int_cmd_taupe1 == 1 and random_int == 1) //Si la taupe est rentré est que le random l'indique elle sort&lt;br /&gt;
      int_cmd_taupe1 = 0;&lt;br /&gt;
    else //sinon elle rentre&lt;br /&gt;
      int_cmd_taupe1 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe2 == 1 and random_int == 2)&lt;br /&gt;
      int_cmd_taupe2 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe2 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe3 == 1 and random_int == 3)&lt;br /&gt;
      int_cmd_taupe3 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  //Taupe&lt;br /&gt;
  digitalWrite(cmd_taupe1, int_cmd_taupe1); //On ecrit sur les pin des selenoide les valeurs de commande de ceux ci&lt;br /&gt;
  digitalWrite(cmd_taupe2, int_cmd_taupe2);&lt;br /&gt;
  digitalWrite(cmd_taupe3, int_cmd_taupe3);&lt;br /&gt;
&lt;br /&gt;
  //LCD&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Vous avez :&amp;quot;);&lt;br /&gt;
  display.setCursor(50, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.println(&amp;quot; points&amp;quot;);&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.print(pts);&lt;br /&gt;
  display.display(); //Affiche l'ecran&lt;br /&gt;
  display.clearDisplay(); //Efface l'ecran&lt;br /&gt;
&lt;br /&gt;
  //Capteur&lt;br /&gt;
  if (digitalRead(cpt_taupe1) == 1 &amp;amp;&amp;amp; int_cmd_taupe1 == 0) //Si la taupe est relevé est que le bouton est appuyé on gagne 1 points et la taupe se baisse&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe2) == 1 &amp;amp;&amp;amp; int_cmd_taupe2 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe2 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe3) == 1 &amp;amp;&amp;amp; int_cmd_taupe3 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:Une_taupe.jpg&amp;diff=19271</id>
		<title>Fichier:Une taupe.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:Une_taupe.jpg&amp;diff=19271"/>
				<updated>2022-01-19T13:10:46Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Une taupe&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19269</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19269"/>
				<updated>2022-01-19T13:04:12Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Des taupes montent et descendent.&lt;br /&gt;
Quand elles sortent de leur trou, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle ne redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D) (x7)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x7)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
* Breadboard&lt;br /&gt;
&lt;br /&gt;
* Alimentation 12V&lt;br /&gt;
* Alimentation 5V (câble USB+PC)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
Mécanisme prévu à l'origine pour allonger la course de la taupe :&lt;br /&gt;
[[Fichier:Taupe originale.jpg|vignette|néant|Taupe origninale]]&lt;br /&gt;
&lt;br /&gt;
(Ajouter un gros plan de la rangé avec une légende)&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette|néant]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
Ecran LCD.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|néant|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&lt;br /&gt;
Tout d'abord il faut tester les composants pour s'assurer qu'ils fonctionnent tous bien&lt;br /&gt;
&lt;br /&gt;
===Bouton===&lt;br /&gt;
&lt;br /&gt;
Ce code permet de verifier le fonctionnement des boutons&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22; //22 represente le pin ou sera branché le bouton&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT); //Cette ligne permet de passer le pin en mode entré&lt;br /&gt;
  Serial.begin(9600); //Initialise le terminal &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1)); //Ecris l'etat du pin du bouton (0 ou 1)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Solénoïde===&lt;br /&gt;
&lt;br /&gt;
Ce code permettra d'activer/desactiver le selenoide 1s/1s&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cmd_taupe1 = 53; //53 represente le pin ou sera branché le bouton&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT); //Cette ligne passe le pin en sortie&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  digitalWrite(cmd_taupe1, HIGH); //Active le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
  digitalWrite(cmd_taupe1, LOW); //Desactive le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===LCD===&lt;br /&gt;
&lt;br /&gt;
Pour voir toute les possibilité offerte par le LCD nous vous conseillons le site electronique amateur&amp;lt;ref&amp;gt;https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ici on ne fait que écrire &amp;quot;vous avez: xx points&amp;quot; sur l'écran&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Vous avez :&amp;quot;);&lt;br /&gt;
  display.setCursor(50, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.println(&amp;quot; points&amp;quot;);&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.print(pts);&lt;br /&gt;
  display.display(); //Affiche l'ecran&lt;br /&gt;
  display.clearDisplay(); //Efface l'ecran&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Taupe===&lt;br /&gt;
&lt;br /&gt;
Ici le code rassemble un solenoide et un bouton pour faire une taupe&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int cmd_taupe1 = 53;&lt;br /&gt;
int int_cmd_taupe1 = 1;&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
&lt;br /&gt;
int pts = 0;&lt;br /&gt;
&lt;br /&gt;
int start = 0;&lt;br /&gt;
int now = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  now = millis(); //On récupère le temps dans une variable&lt;br /&gt;
  if (now-start &amp;gt; 1000) //Si il s'est écoulé plus de 1s&lt;br /&gt;
  {&lt;br /&gt;
    start = millis(); //On renitialise le temps de départ du timer&lt;br /&gt;
    if (int_cmd_taupe1 == 1) //Si la taupe est rentré elle sort&lt;br /&gt;
      int_cmd_taupe1 = 0;&lt;br /&gt;
    else //sinon elle rentre&lt;br /&gt;
      int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  digitalWrite(cmd_taupe1, int_cmd_taupe1); //On ecrit sur les pin des selenoide les valeurs de commande de ceux ci&lt;br /&gt;
&lt;br /&gt;
  //Capteur&lt;br /&gt;
  if (digitalRead(cpt_taupe1) == 1 &amp;amp;&amp;amp; int_cmd_taupe1 == 0) //Si la taupe est relevé est que le bouton est appuyé on gagne 1 points et la taupe se baisse&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prog final===&lt;br /&gt;
&lt;br /&gt;
Aprés avoir vérifié et cablé il ne reste plus qu'a tout rassembler pour le code final&lt;br /&gt;
&lt;br /&gt;
Ici il n'y a que 3 taupes mais vous pouvez en rajouter a votre guise et changer le texte sur l'ecran.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
int cmd_taupe1 = 53;&lt;br /&gt;
int cmd_taupe2 = 51;&lt;br /&gt;
int cmd_taupe3 = 49;&lt;br /&gt;
&lt;br /&gt;
int int_cmd_taupe1 = 1;&lt;br /&gt;
int int_cmd_taupe2 = 1;&lt;br /&gt;
int int_cmd_taupe3 = 1;&lt;br /&gt;
&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
int cpt_taupe2 = 24;&lt;br /&gt;
int cpt_taupe3 = 26;&lt;br /&gt;
&lt;br /&gt;
int pts = 0;&lt;br /&gt;
&lt;br /&gt;
int start = 0;&lt;br /&gt;
int now = 0;&lt;br /&gt;
&lt;br /&gt;
int random_int = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe2, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe3, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe2, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe3, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
  randomSeed(analogRead(0)); //Initialise le random par la lecture du bruit d'un pin analogique non branché&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  now = millis(); //On récupère le temps dans une variable&lt;br /&gt;
&lt;br /&gt;
  if (now-start &amp;gt; 1000) //Si il s'est écoulé plus de 1s&lt;br /&gt;
  {&lt;br /&gt;
    start = millis(); //On renitialise le temps de départ du timer&lt;br /&gt;
    random_int = random(1, 3); //On créer un nombre random entre 1 et le nombre de taupe (ici 3)&lt;br /&gt;
    if (int_cmd_taupe1 == 1 and random_int == 1) //Si la taupe est rentré est que le random l'indique elle sort&lt;br /&gt;
      int_cmd_taupe1 = 0;&lt;br /&gt;
    else //sinon elle rentre&lt;br /&gt;
      int_cmd_taupe1 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe2 == 1 and random_int == 2)&lt;br /&gt;
      int_cmd_taupe2 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe2 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe3 == 1 and random_int == 3)&lt;br /&gt;
      int_cmd_taupe3 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  //Taupe&lt;br /&gt;
  digitalWrite(cmd_taupe1, int_cmd_taupe1); //On ecrit sur les pin des selenoide les valeurs de commande de ceux ci&lt;br /&gt;
  digitalWrite(cmd_taupe2, int_cmd_taupe2);&lt;br /&gt;
  digitalWrite(cmd_taupe3, int_cmd_taupe3);&lt;br /&gt;
&lt;br /&gt;
  //LCD&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Vous avez :&amp;quot;);&lt;br /&gt;
  display.setCursor(50, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.println(&amp;quot; points&amp;quot;);&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.print(pts);&lt;br /&gt;
  display.display(); //Affiche l'ecran&lt;br /&gt;
  display.clearDisplay(); //Efface l'ecran&lt;br /&gt;
&lt;br /&gt;
  //Capteur&lt;br /&gt;
  if (digitalRead(cpt_taupe1) == 1 &amp;amp;&amp;amp; int_cmd_taupe1 == 0) //Si la taupe est relevé est que le bouton est appuyé on gagne 1 points et la taupe se baisse&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe2) == 1 &amp;amp;&amp;amp; int_cmd_taupe2 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe2 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe3) == 1 &amp;amp;&amp;amp; int_cmd_taupe3 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19202</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19202"/>
				<updated>2022-01-18T17:25:56Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : /* LCD */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Les boutons poussoir sont montés sur de solénoïdes, ils montent et descendent.&lt;br /&gt;
Quand ils sortent, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x5)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
(Ajouter un gros plan de la rangé avec une légende)&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette|néant]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
Ecran LCD.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|néant|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&lt;br /&gt;
Tout d'abord il faut tester les composants pour s'assurer qu'ils fonctionnent tous bien&lt;br /&gt;
&lt;br /&gt;
===Boutton===&lt;br /&gt;
&lt;br /&gt;
Ce code permet de verifier le fonctionnement des boutons&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22; //22 represente le pin ou sera branché le bouton&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT); //Cette ligne permet de passer le pin en mode entré&lt;br /&gt;
  Serial.begin(9600); //Initialise le terminal &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1)); //Ecris l'etat du pin du bouton (0 ou 1)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Solénoïde===&lt;br /&gt;
&lt;br /&gt;
Ce code permettra d'activer/desactiver le selenoide 1s/1s&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cmd_taupe1 = 53; //53 represente le pin ou sera branché le bouton&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT); //Cette ligne passe le pin en sortie&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  digitalWrite(cmd_taupe1, HIGH); //Active le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
  digitalWrite(cmd_taupe1, LOW); //Desactive le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===LCD===&lt;br /&gt;
&lt;br /&gt;
Pour voir toute les possibilité offerte par le LCD nous vous conseillons le site electronique amateur&amp;lt;ref&amp;gt;https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ici on ne fait que écrire &amp;quot;vous avez: xx points&amp;quot; sur l'écran&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Vous avez :&amp;quot;);&lt;br /&gt;
  display.setCursor(50, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.println(&amp;quot; points&amp;quot;);&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.print(pts);&lt;br /&gt;
  display.display(); //Affiche l'ecran&lt;br /&gt;
  display.clearDisplay(); //Efface l'ecran&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Taupe===&lt;br /&gt;
&lt;br /&gt;
Ici le code rassemble un solenoide et un bouton pour faire une taupe&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int cmd_taupe1 = 53;&lt;br /&gt;
int int_cmd_taupe1 = 1;&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
&lt;br /&gt;
int pts = 0;&lt;br /&gt;
&lt;br /&gt;
int start = 0;&lt;br /&gt;
int now = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  now = millis(); //On récupère le temps dans une variable&lt;br /&gt;
  if (now-start &amp;gt; 1000) //Si il s'est écoulé plus de 1s&lt;br /&gt;
  {&lt;br /&gt;
    start = millis(); //On renitialise le temps de départ du timer&lt;br /&gt;
    if (int_cmd_taupe1 == 1) //Si la taupe est rentré elle sort&lt;br /&gt;
      int_cmd_taupe1 = 0;&lt;br /&gt;
    else //sinon elle rentre&lt;br /&gt;
      int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  digitalWrite(cmd_taupe1, int_cmd_taupe1); //On ecrit sur les pin des selenoide les valeurs de commande de ceux ci&lt;br /&gt;
&lt;br /&gt;
  //Capteur&lt;br /&gt;
  if (digitalRead(cpt_taupe1) == 1 &amp;amp;&amp;amp; int_cmd_taupe1 == 0) //Si la taupe est relevé est que le bouton est appuyé on gagne 1 points et la taupe se baisse&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prog final===&lt;br /&gt;
&lt;br /&gt;
Aprés avoir vérifié et cablé il ne reste plus qu'a tout rassembler pour le code final&lt;br /&gt;
&lt;br /&gt;
Ici il n'y a que 3 taupes mais vous pouvez en rajouter a votre guise et changer le texte sur l'ecran.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
int cmd_taupe1 = 53;&lt;br /&gt;
int cmd_taupe2 = 51;&lt;br /&gt;
int cmd_taupe3 = 49;&lt;br /&gt;
&lt;br /&gt;
int int_cmd_taupe1 = 1;&lt;br /&gt;
int int_cmd_taupe2 = 1;&lt;br /&gt;
int int_cmd_taupe3 = 1;&lt;br /&gt;
&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
int cpt_taupe2 = 24;&lt;br /&gt;
int cpt_taupe3 = 26;&lt;br /&gt;
&lt;br /&gt;
int pts = 0;&lt;br /&gt;
&lt;br /&gt;
int start = 0;&lt;br /&gt;
int now = 0;&lt;br /&gt;
&lt;br /&gt;
int random_int = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe2, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe3, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe2, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe3, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
  randomSeed(analogRead(0)); //Initialise le random par la lecture du bruit d'un pin analogique non branché&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  now = millis(); //On récupère le temps dans une variable&lt;br /&gt;
&lt;br /&gt;
  if (now-start &amp;gt; 1000) //Si il s'est écoulé plus de 1s&lt;br /&gt;
  {&lt;br /&gt;
    start = millis(); //On renitialise le temps de départ du timer&lt;br /&gt;
    random_int = random(1, 3); //On créer un nombre random entre 1 et le nombre de taupe (ici 3)&lt;br /&gt;
    if (int_cmd_taupe1 == 1 and random_int == 1) //Si la taupe est rentré est que le random l'indique elle sort&lt;br /&gt;
      int_cmd_taupe1 = 0;&lt;br /&gt;
    else //sinon elle rentre&lt;br /&gt;
      int_cmd_taupe1 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe2 == 1 and random_int == 2)&lt;br /&gt;
      int_cmd_taupe2 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe2 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe3 == 1 and random_int == 3)&lt;br /&gt;
      int_cmd_taupe3 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  //Taupe&lt;br /&gt;
  digitalWrite(cmd_taupe1, int_cmd_taupe1); //On ecrit sur les pin des selenoide les valeurs de commande de ceux ci&lt;br /&gt;
  digitalWrite(cmd_taupe2, int_cmd_taupe2);&lt;br /&gt;
  digitalWrite(cmd_taupe3, int_cmd_taupe3);&lt;br /&gt;
&lt;br /&gt;
  //LCD&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Vous avez :&amp;quot;);&lt;br /&gt;
  display.setCursor(50, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.println(&amp;quot; points&amp;quot;);&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.print(pts);&lt;br /&gt;
  display.display(); //Affiche l'ecran&lt;br /&gt;
  display.clearDisplay(); //Efface l'ecran&lt;br /&gt;
&lt;br /&gt;
  //Capteur&lt;br /&gt;
  if (digitalRead(cpt_taupe1) == 1 &amp;amp;&amp;amp; int_cmd_taupe1 == 0) //Si la taupe est relevé est que le bouton est appuyé on gagne 1 points et la taupe se baisse&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe2) == 1 &amp;amp;&amp;amp; int_cmd_taupe2 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe2 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe3) == 1 &amp;amp;&amp;amp; int_cmd_taupe3 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19200</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19200"/>
				<updated>2022-01-18T17:23:11Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : /* LCD */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Les boutons poussoir sont montés sur de solénoïdes, ils montent et descendent.&lt;br /&gt;
Quand ils sortent, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x5)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
(Ajouter un gros plan de la rangé avec une légende)&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette|néant]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
Ecran LCD.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|néant|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&lt;br /&gt;
Tout d'abord il faut tester les composants pour s'assurer qu'ils fonctionnent tous bien&lt;br /&gt;
&lt;br /&gt;
===Boutton===&lt;br /&gt;
&lt;br /&gt;
Ce code permet de verifier le fonctionnement des boutons&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22; //22 represente le pin ou sera branché le bouton&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT); //Cette ligne permet de passer le pin en mode entré&lt;br /&gt;
  Serial.begin(9600); //Initialise le terminal &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1)); //Ecris l'etat du pin du bouton (0 ou 1)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Selenoide===&lt;br /&gt;
&lt;br /&gt;
Ce code permettra d'activer/desactiver le selenoide 1s/1s&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cmd_taupe1 = 53; //53 represente le pin ou sera branché le bouton&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT); //Cette ligne passe le pin en sortie&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  digitalWrite(cmd_taupe1, HIGH); //Active le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
  digitalWrite(cmd_taupe1, LOW); //Desactive le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===LCD===&lt;br /&gt;
&lt;br /&gt;
Cette exemple de code provient du site electronique amateur&amp;lt;ref&amp;gt;https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&amp;lt;/ref&amp;gt; il permet de voir les possibilités offerte par le LCD&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Taupe===&lt;br /&gt;
&lt;br /&gt;
Ici le code rassemble un solenoide et un bouton pour faire une taupe&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int cmd_taupe1 = 53;&lt;br /&gt;
int int_cmd_taupe1 = 1;&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
&lt;br /&gt;
int pts = 0;&lt;br /&gt;
&lt;br /&gt;
int start = 0;&lt;br /&gt;
int now = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  now = millis(); //On récupère le temps dans une variable&lt;br /&gt;
  if (now-start &amp;gt; 1000) //Si il s'est écoulé plus de 1s&lt;br /&gt;
  {&lt;br /&gt;
    start = millis(); //On renitialise le temps de départ du timer&lt;br /&gt;
    if (int_cmd_taupe1 == 1) //Si la taupe est rentré elle sort&lt;br /&gt;
      int_cmd_taupe1 = 0;&lt;br /&gt;
    else //sinon elle rentre&lt;br /&gt;
      int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  digitalWrite(cmd_taupe1, int_cmd_taupe1); //On ecrit sur les pin des selenoide les valeurs de commande de ceux ci&lt;br /&gt;
&lt;br /&gt;
  //Capteur&lt;br /&gt;
  if (digitalRead(cpt_taupe1) == 1 &amp;amp;&amp;amp; int_cmd_taupe1 == 0) //Si la taupe est relevé est que le bouton est appuyé on gagne 1 points et la taupe se baisse&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prog final===&lt;br /&gt;
&lt;br /&gt;
Aprés avoir vérifié et cablé il ne reste plus qu'a tout rassembler pour le code final&lt;br /&gt;
&lt;br /&gt;
Ici il n'y a que 3 taupes mais vous pouvez en rajouter a votre guise et changer le texte sur l'ecran.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
int cmd_taupe1 = 53;&lt;br /&gt;
int cmd_taupe2 = 51;&lt;br /&gt;
int cmd_taupe3 = 49;&lt;br /&gt;
&lt;br /&gt;
int int_cmd_taupe1 = 1;&lt;br /&gt;
int int_cmd_taupe2 = 1;&lt;br /&gt;
int int_cmd_taupe3 = 1;&lt;br /&gt;
&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
int cpt_taupe2 = 24;&lt;br /&gt;
int cpt_taupe3 = 26;&lt;br /&gt;
&lt;br /&gt;
int pts = 0;&lt;br /&gt;
&lt;br /&gt;
int start = 0;&lt;br /&gt;
int now = 0;&lt;br /&gt;
&lt;br /&gt;
int random_int = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe2, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe3, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe2, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe3, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
  randomSeed(analogRead(0)); //Initialise le random par la lecture du bruit d'un pin analogique non branché&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  now = millis(); //On récupère le temps dans une variable&lt;br /&gt;
&lt;br /&gt;
  if (now-start &amp;gt; 1000) //Si il s'est écoulé plus de 1s&lt;br /&gt;
  {&lt;br /&gt;
    start = millis(); //On renitialise le temps de départ du timer&lt;br /&gt;
    random_int = random(1, 3); //On créer un nombre random entre 1 et le nombre de taupe (ici 3)&lt;br /&gt;
    if (int_cmd_taupe1 == 1 and random_int == 1) //Si la taupe est rentré est que le random l'indique elle sort&lt;br /&gt;
      int_cmd_taupe1 = 0;&lt;br /&gt;
    else //sinon elle rentre&lt;br /&gt;
      int_cmd_taupe1 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe2 == 1 and random_int == 2)&lt;br /&gt;
      int_cmd_taupe2 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe2 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe3 == 1 and random_int == 3)&lt;br /&gt;
      int_cmd_taupe3 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  //Taupe&lt;br /&gt;
  digitalWrite(cmd_taupe1, int_cmd_taupe1); //On ecrit sur les pin des selenoide les valeurs de commande de ceux ci&lt;br /&gt;
  digitalWrite(cmd_taupe2, int_cmd_taupe2);&lt;br /&gt;
  digitalWrite(cmd_taupe3, int_cmd_taupe3);&lt;br /&gt;
&lt;br /&gt;
  //LCD&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Vous avez :&amp;quot;);&lt;br /&gt;
  display.setCursor(50, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.println(&amp;quot; points&amp;quot;);&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.print(pts);&lt;br /&gt;
  display.display(); //Affiche l'ecran&lt;br /&gt;
  display.clearDisplay(); //Efface l'ecran&lt;br /&gt;
&lt;br /&gt;
  //Capteur&lt;br /&gt;
  if (digitalRead(cpt_taupe1) == 1 &amp;amp;&amp;amp; int_cmd_taupe1 == 0) //Si la taupe est relevé est que le bouton est appuyé on gagne 1 points et la taupe se baisse&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe2) == 1 &amp;amp;&amp;amp; int_cmd_taupe2 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe2 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe3) == 1 &amp;amp;&amp;amp; int_cmd_taupe3 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19198</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19198"/>
				<updated>2022-01-18T17:17:41Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : /* Taupe */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Les boutons poussoir sont montés sur de solénoïdes, ils montent et descendent.&lt;br /&gt;
Quand ils sortent, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x5)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
(Ajouter un gros plan de la rangé avec une légende)&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
Ecran LCD.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&lt;br /&gt;
Tout d'abord il faut tester les composants pour s'assurer qu'ils fonctionnent tous bien&lt;br /&gt;
&lt;br /&gt;
===Boutton===&lt;br /&gt;
&lt;br /&gt;
Ce code permet de verifier le fonctionnement des boutons&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22; //22 represente le pin ou sera branché le bouton&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT); //Cette ligne permet de passer le pin en mode entré&lt;br /&gt;
  Serial.begin(9600); //Initialise le terminal &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1)); //Ecris l'etat du pin du bouton (0 ou 1)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Selenoide===&lt;br /&gt;
&lt;br /&gt;
Ce code permettra d'activer/desactiver le selenoide 1s/1s&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cmd_taupe1 = 53; //53 represente le pin ou sera branché le bouton&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT); //Cette ligne passe le pin en sortie&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  digitalWrite(cmd_taupe1, HIGH); //Active le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
  digitalWrite(cmd_taupe1, LOW); //Desactive le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===LCD===&lt;br /&gt;
&lt;br /&gt;
Cette exemple de code provient du site electronique amateur&amp;lt;ref&amp;gt;https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&amp;lt;/ref&amp;gt; il permet de voir les possibilités offerte par le LCD&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
/*********************************************************************&lt;br /&gt;
  Démonstration d'un écran OLED i2c SH1106 avec un Arduino,&lt;br /&gt;
  en utilisant une bibliothèque d'Adafruit:&lt;br /&gt;
  https://github.com/adafruit/Adafruit-GFX-Library&lt;br /&gt;
  ...et une bibliothèque compatible par Wohho-maker:&lt;br /&gt;
  https://github.com/wonho-maker/Adafruit_SH1106&lt;br /&gt;
  &lt;br /&gt;
  Plus d'infos:&lt;br /&gt;
  https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&lt;br /&gt;
*********************************************************************/&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/* Puisque la bibliothèque est basée sur celle du SSD1306, le constructeur&lt;br /&gt;
prévoit qu'on passe le numéro de la broche RESET en argument. Mais le SH1106&lt;br /&gt;
n'a pas de broche RESET, alors on écrit n'importe quel entier (de préférence,&lt;br /&gt;
le numéro d'une broche de l'Arduino que vous n'utilisez pas). */&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
/* Définition d'une image bitmap: logo du blog Électronique en Amateur&lt;br /&gt;
  Réalisée avec l'outil en ligne  http://javl.github.io/image2cpp/  */&lt;br /&gt;
&lt;br /&gt;
const unsigned char myBitmap [] PROGMEM = {&lt;br /&gt;
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xf0, 0x00, 0x00, 0x03, 0x9f, 0xff, 0xe0, 0x00, 0x07,&lt;br /&gt;
  0x9f, 0xff, 0xfe, 0x00, 0x0f, 0xdf, 0x0f, 0xbe, 0x00, 0x1f, 0xde, 0x06, 0x0e, 0x00, 0x3f, 0xdc,&lt;br /&gt;
  0x04, 0x0e, 0x00, 0x3f, 0xdc, 0x00, 0x06, 0x00, 0x3f, 0xdc, 0x00, 0x06, 0x00, 0x3f, 0xdc, 0x60,&lt;br /&gt;
  0x06, 0x00, 0x3f, 0xdc, 0xf1, 0x8e, 0x00, 0x3f, 0xdc, 0xf3, 0xce, 0x00, 0x3f, 0xde, 0x63, 0xde,&lt;br /&gt;
  0x00, 0x3f, 0xdf, 0x09, 0x9e, 0x00, 0x3f, 0xdf, 0xfc, 0x7e, 0x00, 0x3f, 0xde, 0x7f, 0xfe, 0x00,&lt;br /&gt;
  0x3f, 0xde, 0x7f, 0xf6, 0x00, 0x3f, 0xdf, 0x3f, 0xe6, 0x00, 0x3f, 0xdf, 0x8f, 0x8e, 0x00, 0x3f,&lt;br /&gt;
  0xdf, 0xe0, 0x3e, 0x00, 0x3f, 0x00, 0x3f, 0xfe, 0x00, 0x3e, 0xff, 0xc0, 0x1e, 0x00, 0x3d, 0xff,&lt;br /&gt;
  0xff, 0xc0, 0x00, 0x3b, 0xff, 0xff, 0xfe, 0x00, 0x37, 0xff, 0xff, 0xfe, 0x00, 0x2f, 0xff, 0xff,&lt;br /&gt;
  0xfe, 0x00, 0x0e, 0x1f, 0xff, 0xfe, 0x00, 0x1f, 0x9f, 0x9f, 0xfe, 0x00, 0x3f, 0x9f, 0x9f, 0x9e,&lt;br /&gt;
  0x00, 0x3f, 0x9f, 0x9f, 0x9e, 0x00, 0x3f, 0x9f, 0x9f, 0x9e, 0x00, 0x3f, 0x9f, 0x9f, 0x9c, 0x00,&lt;br /&gt;
  0x1f, 0x9f, 0x9f, 0x98, 0x00, 0x0f, 0x9f, 0x9f, 0x90, 0x00, 0x07, 0x9f, 0x9f, 0x90, 0x00, 0x00,&lt;br /&gt;
  0x9f, 0x9f, 0x90, 0x00, 0x00, 0x9f, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91,&lt;br /&gt;
  0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91,&lt;br /&gt;
  0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90,&lt;br /&gt;
  0x00, 0x00, 0xf1, 0xd1, 0x90, 0x00, 0x00, 0x01, 0xc1, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup()   {&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  /**************** Éxcriture de texte  ***************/&lt;br /&gt;
  // taille par défaut&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Petit...&amp;quot;);&lt;br /&gt;
  display.display();  // affichage à l'écran&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  // deux fois plus gros&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextSize(2);  // taille double&lt;br /&gt;
  display.println(&amp;quot;GROS!&amp;quot;);&lt;br /&gt;
  display.display();  // affichage à l'écran&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();  // on efface tout&lt;br /&gt;
&lt;br /&gt;
  /******************** Dessiner une ligne ******************************************/&lt;br /&gt;
  // ligne horizontale au centre de l'écran&lt;br /&gt;
  display.drawLine(0, display.height() / 2, display.width() , display.height() / 2,  WHITE);&lt;br /&gt;
  // ligne verticale au centre de l'écran&lt;br /&gt;
  display.drawLine(display.width() / 2, 0, display.width() / 2, display.height(), WHITE);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /********************* Dessiner des contours de formes géométriques ******************/&lt;br /&gt;
  display.drawRect( 15, 5, 30, 15, WHITE); // contour d'un rectangle&lt;br /&gt;
  display.drawCircle(95, 15, 8, WHITE);  // contour d'un cercle&lt;br /&gt;
  display.drawRoundRect(15, 40, 30, 16, 5, WHITE);  // contour d'un rectangle à coins arrondis&lt;br /&gt;
  display.drawTriangle(95, 40, 80, 55, 110, 55, WHITE);  // contour d'un triangle&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(1000);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /******************* Dessiner des formes géométriqeus pleines *************************/&lt;br /&gt;
  display.fillRect( 15, 5, 30, 15, WHITE); // contour d'un rectangle&lt;br /&gt;
  display.fillCircle(95, 15, 8, WHITE);  // contour d'un cercle&lt;br /&gt;
  display.fillRoundRect(15, 40, 30, 16, 5, WHITE);  // contour d'un rectangle à coins arrondis&lt;br /&gt;
  display.fillTriangle(95, 40, 80, 55, 110, 55, WHITE);  // contour d'un triangle&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
  &lt;br /&gt;
  /********************** Dessiner un pixel à la fois ***********************************************/&lt;br /&gt;
  // on trace une fonction sinusoidale, point par point&lt;br /&gt;
  for (int x = 1; x &amp;lt; 128; x++) {&lt;br /&gt;
    int y = 32 + round(16.0 * sin(x / 5.0));&lt;br /&gt;
    display.drawPixel(x, y, WHITE);&lt;br /&gt;
  }&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /**************************** Dessiner une image  bitmap **********************************/&lt;br /&gt;
  // on affiche l'image stockée dans la constante myBitmap définie au début de ce fichier.&lt;br /&gt;
  display.fillRect(5,5,44,58,WHITE);  // fond blanc derrière l'image bitmap&lt;br /&gt;
  display.drawBitmap(10, 10, myBitmap, 34, 48, BLACK);&lt;br /&gt;
  display.setCursor(60, 30);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Au revoir!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Taupe===&lt;br /&gt;
&lt;br /&gt;
Ici le code rassemble un solenoide et un bouton pour faire une taupe&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int cmd_taupe1 = 53;&lt;br /&gt;
int int_cmd_taupe1 = 1;&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
&lt;br /&gt;
int pts = 0;&lt;br /&gt;
&lt;br /&gt;
int start = 0;&lt;br /&gt;
int now = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  now = millis(); //On récupère le temps dans une variable&lt;br /&gt;
  if (now-start &amp;gt; 1000) //Si il s'est écoulé plus de 1s&lt;br /&gt;
  {&lt;br /&gt;
    start = millis(); //On renitialise le temps de départ du timer&lt;br /&gt;
    if (int_cmd_taupe1 == 1) //Si la taupe est rentré elle sort&lt;br /&gt;
      int_cmd_taupe1 = 0;&lt;br /&gt;
    else //sinon elle rentre&lt;br /&gt;
      int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  digitalWrite(cmd_taupe1, int_cmd_taupe1); //On ecrit sur les pin des selenoide les valeurs de commande de ceux ci&lt;br /&gt;
&lt;br /&gt;
  //Capteur&lt;br /&gt;
  if (digitalRead(cpt_taupe1) == 1 &amp;amp;&amp;amp; int_cmd_taupe1 == 0) //Si la taupe est relevé est que le bouton est appuyé on gagne 1 points et la taupe se baisse&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prog final===&lt;br /&gt;
&lt;br /&gt;
Aprés avoir vérifié et cablé il ne reste plus qu'a tout rassembler pour le code final&lt;br /&gt;
&lt;br /&gt;
Ici il n'y a que 3 taupes mais vous pouvez en rajouter a votre guise et changer le texte sur l'ecran.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
int cmd_taupe1 = 53;&lt;br /&gt;
int cmd_taupe2 = 51;&lt;br /&gt;
int cmd_taupe3 = 49;&lt;br /&gt;
&lt;br /&gt;
int int_cmd_taupe1 = 1;&lt;br /&gt;
int int_cmd_taupe2 = 1;&lt;br /&gt;
int int_cmd_taupe3 = 1;&lt;br /&gt;
&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
int cpt_taupe2 = 24;&lt;br /&gt;
int cpt_taupe3 = 26;&lt;br /&gt;
&lt;br /&gt;
int pts = 0;&lt;br /&gt;
&lt;br /&gt;
int start = 0;&lt;br /&gt;
int now = 0;&lt;br /&gt;
&lt;br /&gt;
int random_int = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe2, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe3, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe2, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe3, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
  randomSeed(analogRead(0)); //Initialise le random par la lecture du bruit d'un pin analogique non branché&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  now = millis(); //On récupère le temps dans une variable&lt;br /&gt;
&lt;br /&gt;
  if (now-start &amp;gt; 1000) //Si il s'est écoulé plus de 1s&lt;br /&gt;
  {&lt;br /&gt;
    start = millis(); //On renitialise le temps de départ du timer&lt;br /&gt;
    random_int = random(1, 3); //On créer un nombre random entre 1 et le nombre de taupe (ici 3)&lt;br /&gt;
    if (int_cmd_taupe1 == 1 and random_int == 1) //Si la taupe est rentré est que le random l'indique elle sort&lt;br /&gt;
      int_cmd_taupe1 = 0;&lt;br /&gt;
    else //sinon elle rentre&lt;br /&gt;
      int_cmd_taupe1 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe2 == 1 and random_int == 2)&lt;br /&gt;
      int_cmd_taupe2 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe2 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe3 == 1 and random_int == 3)&lt;br /&gt;
      int_cmd_taupe3 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  //Taupe&lt;br /&gt;
  digitalWrite(cmd_taupe1, int_cmd_taupe1); //On ecrit sur les pin des selenoide les valeurs de commande de ceux ci&lt;br /&gt;
  digitalWrite(cmd_taupe2, int_cmd_taupe2);&lt;br /&gt;
  digitalWrite(cmd_taupe3, int_cmd_taupe3);&lt;br /&gt;
&lt;br /&gt;
  //LCD&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Vous avez :&amp;quot;);&lt;br /&gt;
  display.setCursor(50, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.println(&amp;quot; points&amp;quot;);&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.print(pts);&lt;br /&gt;
  display.display(); //Affiche l'ecran&lt;br /&gt;
  display.clearDisplay(); //Efface l'ecran&lt;br /&gt;
&lt;br /&gt;
  //Capteur&lt;br /&gt;
  if (digitalRead(cpt_taupe1) == 1 &amp;amp;&amp;amp; int_cmd_taupe1 == 0) //Si la taupe est relevé est que le bouton est appuyé on gagne 1 points et la taupe se baisse&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe2) == 1 &amp;amp;&amp;amp; int_cmd_taupe2 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe2 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe3) == 1 &amp;amp;&amp;amp; int_cmd_taupe3 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19197</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19197"/>
				<updated>2022-01-18T17:16:55Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : /* Taupe */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Les boutons poussoir sont montés sur de solénoïdes, ils montent et descendent.&lt;br /&gt;
Quand ils sortent, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x5)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
(Ajouter un gros plan de la rangé avec une légende)&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
Ecran LCD.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&lt;br /&gt;
Tout d'abord il faut tester les composants pour s'assurer qu'ils fonctionnent tous bien&lt;br /&gt;
&lt;br /&gt;
===Boutton===&lt;br /&gt;
&lt;br /&gt;
Ce code permet de verifier le fonctionnement des boutons&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22; //22 represente le pin ou sera branché le bouton&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT); //Cette ligne permet de passer le pin en mode entré&lt;br /&gt;
  Serial.begin(9600); //Initialise le terminal &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1)); //Ecris l'etat du pin du bouton (0 ou 1)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Selenoide===&lt;br /&gt;
&lt;br /&gt;
Ce code permettra d'activer/desactiver le selenoide 1s/1s&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cmd_taupe1 = 53; //53 represente le pin ou sera branché le bouton&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT); //Cette ligne passe le pin en sortie&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  digitalWrite(cmd_taupe1, HIGH); //Active le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
  digitalWrite(cmd_taupe1, LOW); //Desactive le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===LCD===&lt;br /&gt;
&lt;br /&gt;
Cette exemple de code provient du site electronique amateur&amp;lt;ref&amp;gt;https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&amp;lt;/ref&amp;gt; il permet de voir les possibilités offerte par le LCD&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
/*********************************************************************&lt;br /&gt;
  Démonstration d'un écran OLED i2c SH1106 avec un Arduino,&lt;br /&gt;
  en utilisant une bibliothèque d'Adafruit:&lt;br /&gt;
  https://github.com/adafruit/Adafruit-GFX-Library&lt;br /&gt;
  ...et une bibliothèque compatible par Wohho-maker:&lt;br /&gt;
  https://github.com/wonho-maker/Adafruit_SH1106&lt;br /&gt;
  &lt;br /&gt;
  Plus d'infos:&lt;br /&gt;
  https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&lt;br /&gt;
*********************************************************************/&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/* Puisque la bibliothèque est basée sur celle du SSD1306, le constructeur&lt;br /&gt;
prévoit qu'on passe le numéro de la broche RESET en argument. Mais le SH1106&lt;br /&gt;
n'a pas de broche RESET, alors on écrit n'importe quel entier (de préférence,&lt;br /&gt;
le numéro d'une broche de l'Arduino que vous n'utilisez pas). */&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
/* Définition d'une image bitmap: logo du blog Électronique en Amateur&lt;br /&gt;
  Réalisée avec l'outil en ligne  http://javl.github.io/image2cpp/  */&lt;br /&gt;
&lt;br /&gt;
const unsigned char myBitmap [] PROGMEM = {&lt;br /&gt;
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xf0, 0x00, 0x00, 0x03, 0x9f, 0xff, 0xe0, 0x00, 0x07,&lt;br /&gt;
  0x9f, 0xff, 0xfe, 0x00, 0x0f, 0xdf, 0x0f, 0xbe, 0x00, 0x1f, 0xde, 0x06, 0x0e, 0x00, 0x3f, 0xdc,&lt;br /&gt;
  0x04, 0x0e, 0x00, 0x3f, 0xdc, 0x00, 0x06, 0x00, 0x3f, 0xdc, 0x00, 0x06, 0x00, 0x3f, 0xdc, 0x60,&lt;br /&gt;
  0x06, 0x00, 0x3f, 0xdc, 0xf1, 0x8e, 0x00, 0x3f, 0xdc, 0xf3, 0xce, 0x00, 0x3f, 0xde, 0x63, 0xde,&lt;br /&gt;
  0x00, 0x3f, 0xdf, 0x09, 0x9e, 0x00, 0x3f, 0xdf, 0xfc, 0x7e, 0x00, 0x3f, 0xde, 0x7f, 0xfe, 0x00,&lt;br /&gt;
  0x3f, 0xde, 0x7f, 0xf6, 0x00, 0x3f, 0xdf, 0x3f, 0xe6, 0x00, 0x3f, 0xdf, 0x8f, 0x8e, 0x00, 0x3f,&lt;br /&gt;
  0xdf, 0xe0, 0x3e, 0x00, 0x3f, 0x00, 0x3f, 0xfe, 0x00, 0x3e, 0xff, 0xc0, 0x1e, 0x00, 0x3d, 0xff,&lt;br /&gt;
  0xff, 0xc0, 0x00, 0x3b, 0xff, 0xff, 0xfe, 0x00, 0x37, 0xff, 0xff, 0xfe, 0x00, 0x2f, 0xff, 0xff,&lt;br /&gt;
  0xfe, 0x00, 0x0e, 0x1f, 0xff, 0xfe, 0x00, 0x1f, 0x9f, 0x9f, 0xfe, 0x00, 0x3f, 0x9f, 0x9f, 0x9e,&lt;br /&gt;
  0x00, 0x3f, 0x9f, 0x9f, 0x9e, 0x00, 0x3f, 0x9f, 0x9f, 0x9e, 0x00, 0x3f, 0x9f, 0x9f, 0x9c, 0x00,&lt;br /&gt;
  0x1f, 0x9f, 0x9f, 0x98, 0x00, 0x0f, 0x9f, 0x9f, 0x90, 0x00, 0x07, 0x9f, 0x9f, 0x90, 0x00, 0x00,&lt;br /&gt;
  0x9f, 0x9f, 0x90, 0x00, 0x00, 0x9f, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91,&lt;br /&gt;
  0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91,&lt;br /&gt;
  0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90,&lt;br /&gt;
  0x00, 0x00, 0xf1, 0xd1, 0x90, 0x00, 0x00, 0x01, 0xc1, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup()   {&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  /**************** Éxcriture de texte  ***************/&lt;br /&gt;
  // taille par défaut&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Petit...&amp;quot;);&lt;br /&gt;
  display.display();  // affichage à l'écran&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  // deux fois plus gros&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextSize(2);  // taille double&lt;br /&gt;
  display.println(&amp;quot;GROS!&amp;quot;);&lt;br /&gt;
  display.display();  // affichage à l'écran&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();  // on efface tout&lt;br /&gt;
&lt;br /&gt;
  /******************** Dessiner une ligne ******************************************/&lt;br /&gt;
  // ligne horizontale au centre de l'écran&lt;br /&gt;
  display.drawLine(0, display.height() / 2, display.width() , display.height() / 2,  WHITE);&lt;br /&gt;
  // ligne verticale au centre de l'écran&lt;br /&gt;
  display.drawLine(display.width() / 2, 0, display.width() / 2, display.height(), WHITE);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /********************* Dessiner des contours de formes géométriques ******************/&lt;br /&gt;
  display.drawRect( 15, 5, 30, 15, WHITE); // contour d'un rectangle&lt;br /&gt;
  display.drawCircle(95, 15, 8, WHITE);  // contour d'un cercle&lt;br /&gt;
  display.drawRoundRect(15, 40, 30, 16, 5, WHITE);  // contour d'un rectangle à coins arrondis&lt;br /&gt;
  display.drawTriangle(95, 40, 80, 55, 110, 55, WHITE);  // contour d'un triangle&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(1000);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /******************* Dessiner des formes géométriqeus pleines *************************/&lt;br /&gt;
  display.fillRect( 15, 5, 30, 15, WHITE); // contour d'un rectangle&lt;br /&gt;
  display.fillCircle(95, 15, 8, WHITE);  // contour d'un cercle&lt;br /&gt;
  display.fillRoundRect(15, 40, 30, 16, 5, WHITE);  // contour d'un rectangle à coins arrondis&lt;br /&gt;
  display.fillTriangle(95, 40, 80, 55, 110, 55, WHITE);  // contour d'un triangle&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
  &lt;br /&gt;
  /********************** Dessiner un pixel à la fois ***********************************************/&lt;br /&gt;
  // on trace une fonction sinusoidale, point par point&lt;br /&gt;
  for (int x = 1; x &amp;lt; 128; x++) {&lt;br /&gt;
    int y = 32 + round(16.0 * sin(x / 5.0));&lt;br /&gt;
    display.drawPixel(x, y, WHITE);&lt;br /&gt;
  }&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /**************************** Dessiner une image  bitmap **********************************/&lt;br /&gt;
  // on affiche l'image stockée dans la constante myBitmap définie au début de ce fichier.&lt;br /&gt;
  display.fillRect(5,5,44,58,WHITE);  // fond blanc derrière l'image bitmap&lt;br /&gt;
  display.drawBitmap(10, 10, myBitmap, 34, 48, BLACK);&lt;br /&gt;
  display.setCursor(60, 30);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Au revoir!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Taupe===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int cmd_taupe1 = 53;&lt;br /&gt;
int int_cmd_taupe1 = 1;&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
&lt;br /&gt;
int pts = 0;&lt;br /&gt;
&lt;br /&gt;
int start = 0;&lt;br /&gt;
int now = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  now = millis(); //On récupère le temps dans une variable&lt;br /&gt;
  if (now-start &amp;gt; 1000) //Si il s'est écoulé plus de 1s&lt;br /&gt;
  {&lt;br /&gt;
    start = millis(); //On renitialise le temps de départ du timer&lt;br /&gt;
    if (int_cmd_taupe1 == 1) //Si la taupe est rentré elle sort&lt;br /&gt;
      int_cmd_taupe1 = 0;&lt;br /&gt;
    else //sinon elle rentre&lt;br /&gt;
      int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  digitalWrite(cmd_taupe1, int_cmd_taupe1); //On ecrit sur les pin des selenoide les valeurs de commande de ceux ci&lt;br /&gt;
&lt;br /&gt;
  //Capteur&lt;br /&gt;
  if (digitalRead(cpt_taupe1) == 1 &amp;amp;&amp;amp; int_cmd_taupe1 == 0) //Si la taupe est relevé est que le bouton est appuyé on gagne 1 points et la taupe se baisse&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prog final===&lt;br /&gt;
&lt;br /&gt;
Aprés avoir vérifié et cablé il ne reste plus qu'a tout rassembler pour le code final&lt;br /&gt;
&lt;br /&gt;
Ici il n'y a que 3 taupes mais vous pouvez en rajouter a votre guise et changer le texte sur l'ecran.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
int cmd_taupe1 = 53;&lt;br /&gt;
int cmd_taupe2 = 51;&lt;br /&gt;
int cmd_taupe3 = 49;&lt;br /&gt;
&lt;br /&gt;
int int_cmd_taupe1 = 1;&lt;br /&gt;
int int_cmd_taupe2 = 1;&lt;br /&gt;
int int_cmd_taupe3 = 1;&lt;br /&gt;
&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
int cpt_taupe2 = 24;&lt;br /&gt;
int cpt_taupe3 = 26;&lt;br /&gt;
&lt;br /&gt;
int pts = 0;&lt;br /&gt;
&lt;br /&gt;
int start = 0;&lt;br /&gt;
int now = 0;&lt;br /&gt;
&lt;br /&gt;
int random_int = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe2, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe3, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe2, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe3, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
  randomSeed(analogRead(0)); //Initialise le random par la lecture du bruit d'un pin analogique non branché&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  now = millis(); //On récupère le temps dans une variable&lt;br /&gt;
&lt;br /&gt;
  if (now-start &amp;gt; 1000) //Si il s'est écoulé plus de 1s&lt;br /&gt;
  {&lt;br /&gt;
    start = millis(); //On renitialise le temps de départ du timer&lt;br /&gt;
    random_int = random(1, 3); //On créer un nombre random entre 1 et le nombre de taupe (ici 3)&lt;br /&gt;
    if (int_cmd_taupe1 == 1 and random_int == 1) //Si la taupe est rentré est que le random l'indique elle sort&lt;br /&gt;
      int_cmd_taupe1 = 0;&lt;br /&gt;
    else //sinon elle rentre&lt;br /&gt;
      int_cmd_taupe1 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe2 == 1 and random_int == 2)&lt;br /&gt;
      int_cmd_taupe2 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe2 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe3 == 1 and random_int == 3)&lt;br /&gt;
      int_cmd_taupe3 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  //Taupe&lt;br /&gt;
  digitalWrite(cmd_taupe1, int_cmd_taupe1); //On ecrit sur les pin des selenoide les valeurs de commande de ceux ci&lt;br /&gt;
  digitalWrite(cmd_taupe2, int_cmd_taupe2);&lt;br /&gt;
  digitalWrite(cmd_taupe3, int_cmd_taupe3);&lt;br /&gt;
&lt;br /&gt;
  //LCD&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Vous avez :&amp;quot;);&lt;br /&gt;
  display.setCursor(50, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.println(&amp;quot; points&amp;quot;);&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.print(pts);&lt;br /&gt;
  display.display(); //Affiche l'ecran&lt;br /&gt;
  display.clearDisplay(); //Efface l'ecran&lt;br /&gt;
&lt;br /&gt;
  //Capteur&lt;br /&gt;
  if (digitalRead(cpt_taupe1) == 1 &amp;amp;&amp;amp; int_cmd_taupe1 == 0) //Si la taupe est relevé est que le bouton est appuyé on gagne 1 points et la taupe se baisse&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe2) == 1 &amp;amp;&amp;amp; int_cmd_taupe2 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe2 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe3) == 1 &amp;amp;&amp;amp; int_cmd_taupe3 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19196</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19196"/>
				<updated>2022-01-18T17:14:58Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : /* Code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Les boutons poussoir sont montés sur de solénoïdes, ils montent et descendent.&lt;br /&gt;
Quand ils sortent, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x5)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
(Ajouter un gros plan de la rangé avec une légende)&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
Ecran LCD.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&lt;br /&gt;
Tout d'abord il faut tester les composants pour s'assurer qu'ils fonctionnent tous bien&lt;br /&gt;
&lt;br /&gt;
===Boutton===&lt;br /&gt;
&lt;br /&gt;
Ce code permet de verifier le fonctionnement des boutons&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22; //22 represente le pin ou sera branché le bouton&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT); //Cette ligne permet de passer le pin en mode entré&lt;br /&gt;
  Serial.begin(9600); //Initialise le terminal &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1)); //Ecris l'etat du pin du bouton (0 ou 1)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Selenoide===&lt;br /&gt;
&lt;br /&gt;
Ce code permettra d'activer/desactiver le selenoide 1s/1s&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cmd_taupe1 = 53; //53 represente le pin ou sera branché le bouton&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT); //Cette ligne passe le pin en sortie&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  digitalWrite(cmd_taupe1, HIGH); //Active le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
  digitalWrite(cmd_taupe1, LOW); //Desactive le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===LCD===&lt;br /&gt;
&lt;br /&gt;
Cette exemple de code provient du site electronique amateur&amp;lt;ref&amp;gt;https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&amp;lt;/ref&amp;gt; il permet de voir les possibilités offerte par le LCD&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
/*********************************************************************&lt;br /&gt;
  Démonstration d'un écran OLED i2c SH1106 avec un Arduino,&lt;br /&gt;
  en utilisant une bibliothèque d'Adafruit:&lt;br /&gt;
  https://github.com/adafruit/Adafruit-GFX-Library&lt;br /&gt;
  ...et une bibliothèque compatible par Wohho-maker:&lt;br /&gt;
  https://github.com/wonho-maker/Adafruit_SH1106&lt;br /&gt;
  &lt;br /&gt;
  Plus d'infos:&lt;br /&gt;
  https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&lt;br /&gt;
*********************************************************************/&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/* Puisque la bibliothèque est basée sur celle du SSD1306, le constructeur&lt;br /&gt;
prévoit qu'on passe le numéro de la broche RESET en argument. Mais le SH1106&lt;br /&gt;
n'a pas de broche RESET, alors on écrit n'importe quel entier (de préférence,&lt;br /&gt;
le numéro d'une broche de l'Arduino que vous n'utilisez pas). */&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
/* Définition d'une image bitmap: logo du blog Électronique en Amateur&lt;br /&gt;
  Réalisée avec l'outil en ligne  http://javl.github.io/image2cpp/  */&lt;br /&gt;
&lt;br /&gt;
const unsigned char myBitmap [] PROGMEM = {&lt;br /&gt;
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xf0, 0x00, 0x00, 0x03, 0x9f, 0xff, 0xe0, 0x00, 0x07,&lt;br /&gt;
  0x9f, 0xff, 0xfe, 0x00, 0x0f, 0xdf, 0x0f, 0xbe, 0x00, 0x1f, 0xde, 0x06, 0x0e, 0x00, 0x3f, 0xdc,&lt;br /&gt;
  0x04, 0x0e, 0x00, 0x3f, 0xdc, 0x00, 0x06, 0x00, 0x3f, 0xdc, 0x00, 0x06, 0x00, 0x3f, 0xdc, 0x60,&lt;br /&gt;
  0x06, 0x00, 0x3f, 0xdc, 0xf1, 0x8e, 0x00, 0x3f, 0xdc, 0xf3, 0xce, 0x00, 0x3f, 0xde, 0x63, 0xde,&lt;br /&gt;
  0x00, 0x3f, 0xdf, 0x09, 0x9e, 0x00, 0x3f, 0xdf, 0xfc, 0x7e, 0x00, 0x3f, 0xde, 0x7f, 0xfe, 0x00,&lt;br /&gt;
  0x3f, 0xde, 0x7f, 0xf6, 0x00, 0x3f, 0xdf, 0x3f, 0xe6, 0x00, 0x3f, 0xdf, 0x8f, 0x8e, 0x00, 0x3f,&lt;br /&gt;
  0xdf, 0xe0, 0x3e, 0x00, 0x3f, 0x00, 0x3f, 0xfe, 0x00, 0x3e, 0xff, 0xc0, 0x1e, 0x00, 0x3d, 0xff,&lt;br /&gt;
  0xff, 0xc0, 0x00, 0x3b, 0xff, 0xff, 0xfe, 0x00, 0x37, 0xff, 0xff, 0xfe, 0x00, 0x2f, 0xff, 0xff,&lt;br /&gt;
  0xfe, 0x00, 0x0e, 0x1f, 0xff, 0xfe, 0x00, 0x1f, 0x9f, 0x9f, 0xfe, 0x00, 0x3f, 0x9f, 0x9f, 0x9e,&lt;br /&gt;
  0x00, 0x3f, 0x9f, 0x9f, 0x9e, 0x00, 0x3f, 0x9f, 0x9f, 0x9e, 0x00, 0x3f, 0x9f, 0x9f, 0x9c, 0x00,&lt;br /&gt;
  0x1f, 0x9f, 0x9f, 0x98, 0x00, 0x0f, 0x9f, 0x9f, 0x90, 0x00, 0x07, 0x9f, 0x9f, 0x90, 0x00, 0x00,&lt;br /&gt;
  0x9f, 0x9f, 0x90, 0x00, 0x00, 0x9f, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91,&lt;br /&gt;
  0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91,&lt;br /&gt;
  0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90,&lt;br /&gt;
  0x00, 0x00, 0xf1, 0xd1, 0x90, 0x00, 0x00, 0x01, 0xc1, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup()   {&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  /**************** Éxcriture de texte  ***************/&lt;br /&gt;
  // taille par défaut&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Petit...&amp;quot;);&lt;br /&gt;
  display.display();  // affichage à l'écran&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  // deux fois plus gros&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextSize(2);  // taille double&lt;br /&gt;
  display.println(&amp;quot;GROS!&amp;quot;);&lt;br /&gt;
  display.display();  // affichage à l'écran&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();  // on efface tout&lt;br /&gt;
&lt;br /&gt;
  /******************** Dessiner une ligne ******************************************/&lt;br /&gt;
  // ligne horizontale au centre de l'écran&lt;br /&gt;
  display.drawLine(0, display.height() / 2, display.width() , display.height() / 2,  WHITE);&lt;br /&gt;
  // ligne verticale au centre de l'écran&lt;br /&gt;
  display.drawLine(display.width() / 2, 0, display.width() / 2, display.height(), WHITE);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /********************* Dessiner des contours de formes géométriques ******************/&lt;br /&gt;
  display.drawRect( 15, 5, 30, 15, WHITE); // contour d'un rectangle&lt;br /&gt;
  display.drawCircle(95, 15, 8, WHITE);  // contour d'un cercle&lt;br /&gt;
  display.drawRoundRect(15, 40, 30, 16, 5, WHITE);  // contour d'un rectangle à coins arrondis&lt;br /&gt;
  display.drawTriangle(95, 40, 80, 55, 110, 55, WHITE);  // contour d'un triangle&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(1000);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /******************* Dessiner des formes géométriqeus pleines *************************/&lt;br /&gt;
  display.fillRect( 15, 5, 30, 15, WHITE); // contour d'un rectangle&lt;br /&gt;
  display.fillCircle(95, 15, 8, WHITE);  // contour d'un cercle&lt;br /&gt;
  display.fillRoundRect(15, 40, 30, 16, 5, WHITE);  // contour d'un rectangle à coins arrondis&lt;br /&gt;
  display.fillTriangle(95, 40, 80, 55, 110, 55, WHITE);  // contour d'un triangle&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
  &lt;br /&gt;
  /********************** Dessiner un pixel à la fois ***********************************************/&lt;br /&gt;
  // on trace une fonction sinusoidale, point par point&lt;br /&gt;
  for (int x = 1; x &amp;lt; 128; x++) {&lt;br /&gt;
    int y = 32 + round(16.0 * sin(x / 5.0));&lt;br /&gt;
    display.drawPixel(x, y, WHITE);&lt;br /&gt;
  }&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /**************************** Dessiner une image  bitmap **********************************/&lt;br /&gt;
  // on affiche l'image stockée dans la constante myBitmap définie au début de ce fichier.&lt;br /&gt;
  display.fillRect(5,5,44,58,WHITE);  // fond blanc derrière l'image bitmap&lt;br /&gt;
  display.drawBitmap(10, 10, myBitmap, 34, 48, BLACK);&lt;br /&gt;
  display.setCursor(60, 30);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Au revoir!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Taupe===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
int cmd_taupe1 = 53;&lt;br /&gt;
int cmd_taupe2 = 51;&lt;br /&gt;
int cmd_taupe3 = 49;&lt;br /&gt;
&lt;br /&gt;
int int_cmd_taupe1 = 1;&lt;br /&gt;
int int_cmd_taupe2 = 1;&lt;br /&gt;
int int_cmd_taupe3 = 1;&lt;br /&gt;
&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
int cpt_taupe2 = 24;&lt;br /&gt;
int cpt_taupe3 = 26;&lt;br /&gt;
&lt;br /&gt;
int pts = 0;&lt;br /&gt;
&lt;br /&gt;
int start = 0;&lt;br /&gt;
int now = 0;&lt;br /&gt;
&lt;br /&gt;
int random_int = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe2, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe3, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe2, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe3, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
  randomSeed(analogRead(0)); //Initialise le random par la lecture du bruit d'un pin analogique non branché&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  now = millis(); //On récupère le temps dans une variable&lt;br /&gt;
&lt;br /&gt;
  if (now-start &amp;gt; 1000) //Si il s'est écoulé plus de 1s&lt;br /&gt;
  {&lt;br /&gt;
    start = millis(); //On renitialise le temps de départ du timer&lt;br /&gt;
    random_int = random(1, 3); //On créer un nombre random entre 1 et le nombre de taupe (ici 3)&lt;br /&gt;
    if (int_cmd_taupe1 == 1 and random_int == 1) //Si la taupe est rentré est que le random l'indique elle sort&lt;br /&gt;
      int_cmd_taupe1 = 0;&lt;br /&gt;
    else //sinon elle rentre&lt;br /&gt;
      int_cmd_taupe1 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe2 == 1 and random_int == 2)&lt;br /&gt;
      int_cmd_taupe2 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe2 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe3 == 1 and random_int == 3)&lt;br /&gt;
      int_cmd_taupe3 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  //Taupe&lt;br /&gt;
  digitalWrite(cmd_taupe1, int_cmd_taupe1); //On ecrit sur les pin des selenoide les valeurs de commande de ceux ci&lt;br /&gt;
  digitalWrite(cmd_taupe2, int_cmd_taupe2);&lt;br /&gt;
  digitalWrite(cmd_taupe3, int_cmd_taupe3);&lt;br /&gt;
&lt;br /&gt;
  //LCD&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Vous avez :&amp;quot;);&lt;br /&gt;
  display.setCursor(50, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.println(&amp;quot; points&amp;quot;);&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.print(pts);&lt;br /&gt;
  display.display(); //Affiche l'ecran&lt;br /&gt;
  display.clearDisplay(); //Efface l'ecran&lt;br /&gt;
&lt;br /&gt;
  //Capteur&lt;br /&gt;
  if (digitalRead(cpt_taupe1) == 1 &amp;amp;&amp;amp; int_cmd_taupe1 == 0) //Si la taupe est relevé est que le bouton est appuyé on gagne 1 points et la taupe se baisse&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe2) == 1 &amp;amp;&amp;amp; int_cmd_taupe2 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe2 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe3) == 1 &amp;amp;&amp;amp; int_cmd_taupe3 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prog final===&lt;br /&gt;
&lt;br /&gt;
Aprés avoir vérifié et cablé il ne reste plus qu'a tout rassembler pour le code final&lt;br /&gt;
&lt;br /&gt;
Ici il n'y a que 3 taupes mais vous pouvez en rajouter a votre guise et changer le texte sur l'ecran.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
int cmd_taupe1 = 53;&lt;br /&gt;
int cmd_taupe2 = 51;&lt;br /&gt;
int cmd_taupe3 = 49;&lt;br /&gt;
&lt;br /&gt;
int int_cmd_taupe1 = 1;&lt;br /&gt;
int int_cmd_taupe2 = 1;&lt;br /&gt;
int int_cmd_taupe3 = 1;&lt;br /&gt;
&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
int cpt_taupe2 = 24;&lt;br /&gt;
int cpt_taupe3 = 26;&lt;br /&gt;
&lt;br /&gt;
int pts = 0;&lt;br /&gt;
&lt;br /&gt;
int start = 0;&lt;br /&gt;
int now = 0;&lt;br /&gt;
&lt;br /&gt;
int random_int = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe2, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe3, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe2, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe3, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
  randomSeed(analogRead(0)); //Initialise le random par la lecture du bruit d'un pin analogique non branché&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  now = millis(); //On récupère le temps dans une variable&lt;br /&gt;
&lt;br /&gt;
  if (now-start &amp;gt; 1000) //Si il s'est écoulé plus de 1s&lt;br /&gt;
  {&lt;br /&gt;
    start = millis(); //On renitialise le temps de départ du timer&lt;br /&gt;
    random_int = random(1, 3); //On créer un nombre random entre 1 et le nombre de taupe (ici 3)&lt;br /&gt;
    if (int_cmd_taupe1 == 1 and random_int == 1) //Si la taupe est rentré est que le random l'indique elle sort&lt;br /&gt;
      int_cmd_taupe1 = 0;&lt;br /&gt;
    else //sinon elle rentre&lt;br /&gt;
      int_cmd_taupe1 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe2 == 1 and random_int == 2)&lt;br /&gt;
      int_cmd_taupe2 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe2 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe3 == 1 and random_int == 3)&lt;br /&gt;
      int_cmd_taupe3 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  //Taupe&lt;br /&gt;
  digitalWrite(cmd_taupe1, int_cmd_taupe1); //On ecrit sur les pin des selenoide les valeurs de commande de ceux ci&lt;br /&gt;
  digitalWrite(cmd_taupe2, int_cmd_taupe2);&lt;br /&gt;
  digitalWrite(cmd_taupe3, int_cmd_taupe3);&lt;br /&gt;
&lt;br /&gt;
  //LCD&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Vous avez :&amp;quot;);&lt;br /&gt;
  display.setCursor(50, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.println(&amp;quot; points&amp;quot;);&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.print(pts);&lt;br /&gt;
  display.display(); //Affiche l'ecran&lt;br /&gt;
  display.clearDisplay(); //Efface l'ecran&lt;br /&gt;
&lt;br /&gt;
  //Capteur&lt;br /&gt;
  if (digitalRead(cpt_taupe1) == 1 &amp;amp;&amp;amp; int_cmd_taupe1 == 0) //Si la taupe est relevé est que le bouton est appuyé on gagne 1 points et la taupe se baisse&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe2) == 1 &amp;amp;&amp;amp; int_cmd_taupe2 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe2 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe3) == 1 &amp;amp;&amp;amp; int_cmd_taupe3 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19195</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19195"/>
				<updated>2022-01-18T17:12:58Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : /* Taupe */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Les boutons poussoir sont montés sur de solénoïdes, ils montent et descendent.&lt;br /&gt;
Quand ils sortent, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x5)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
(Ajouter un gros plan de la rangé avec une légende)&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
Ecran LCD.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&lt;br /&gt;
Tout d'abord il faut tester les composants pour s'assurer qu'ils fonctionnent tous bien&lt;br /&gt;
&lt;br /&gt;
===Boutton===&lt;br /&gt;
&lt;br /&gt;
Ce code permet de verifier le fonctionnement des boutons&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22; //22 represente le pin ou sera branché le bouton&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT); //Cette ligne permet de passer le pin en mode entré&lt;br /&gt;
  Serial.begin(9600); //Initialise le terminal &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1)); //Ecris l'etat du pin du bouton (0 ou 1)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Selenoide===&lt;br /&gt;
&lt;br /&gt;
Ce code permettra d'activer/desactiver le selenoide 1s/1s&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cmd_taupe1 = 53; //53 represente le pin ou sera branché le bouton&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT); //Cette ligne passe le pin en sortie&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  digitalWrite(cmd_taupe1, HIGH); //Active le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
  digitalWrite(cmd_taupe1, LOW); //Desactive le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===LCD===&lt;br /&gt;
&lt;br /&gt;
Cette exemple de code provient du site electronique amateur&amp;lt;ref&amp;gt;https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&amp;lt;/ref&amp;gt; il permet de voir les possibilités offerte par le LCD&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
/*********************************************************************&lt;br /&gt;
  Démonstration d'un écran OLED i2c SH1106 avec un Arduino,&lt;br /&gt;
  en utilisant une bibliothèque d'Adafruit:&lt;br /&gt;
  https://github.com/adafruit/Adafruit-GFX-Library&lt;br /&gt;
  ...et une bibliothèque compatible par Wohho-maker:&lt;br /&gt;
  https://github.com/wonho-maker/Adafruit_SH1106&lt;br /&gt;
  &lt;br /&gt;
  Plus d'infos:&lt;br /&gt;
  https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&lt;br /&gt;
*********************************************************************/&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/* Puisque la bibliothèque est basée sur celle du SSD1306, le constructeur&lt;br /&gt;
prévoit qu'on passe le numéro de la broche RESET en argument. Mais le SH1106&lt;br /&gt;
n'a pas de broche RESET, alors on écrit n'importe quel entier (de préférence,&lt;br /&gt;
le numéro d'une broche de l'Arduino que vous n'utilisez pas). */&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
/* Définition d'une image bitmap: logo du blog Électronique en Amateur&lt;br /&gt;
  Réalisée avec l'outil en ligne  http://javl.github.io/image2cpp/  */&lt;br /&gt;
&lt;br /&gt;
const unsigned char myBitmap [] PROGMEM = {&lt;br /&gt;
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xf0, 0x00, 0x00, 0x03, 0x9f, 0xff, 0xe0, 0x00, 0x07,&lt;br /&gt;
  0x9f, 0xff, 0xfe, 0x00, 0x0f, 0xdf, 0x0f, 0xbe, 0x00, 0x1f, 0xde, 0x06, 0x0e, 0x00, 0x3f, 0xdc,&lt;br /&gt;
  0x04, 0x0e, 0x00, 0x3f, 0xdc, 0x00, 0x06, 0x00, 0x3f, 0xdc, 0x00, 0x06, 0x00, 0x3f, 0xdc, 0x60,&lt;br /&gt;
  0x06, 0x00, 0x3f, 0xdc, 0xf1, 0x8e, 0x00, 0x3f, 0xdc, 0xf3, 0xce, 0x00, 0x3f, 0xde, 0x63, 0xde,&lt;br /&gt;
  0x00, 0x3f, 0xdf, 0x09, 0x9e, 0x00, 0x3f, 0xdf, 0xfc, 0x7e, 0x00, 0x3f, 0xde, 0x7f, 0xfe, 0x00,&lt;br /&gt;
  0x3f, 0xde, 0x7f, 0xf6, 0x00, 0x3f, 0xdf, 0x3f, 0xe6, 0x00, 0x3f, 0xdf, 0x8f, 0x8e, 0x00, 0x3f,&lt;br /&gt;
  0xdf, 0xe0, 0x3e, 0x00, 0x3f, 0x00, 0x3f, 0xfe, 0x00, 0x3e, 0xff, 0xc0, 0x1e, 0x00, 0x3d, 0xff,&lt;br /&gt;
  0xff, 0xc0, 0x00, 0x3b, 0xff, 0xff, 0xfe, 0x00, 0x37, 0xff, 0xff, 0xfe, 0x00, 0x2f, 0xff, 0xff,&lt;br /&gt;
  0xfe, 0x00, 0x0e, 0x1f, 0xff, 0xfe, 0x00, 0x1f, 0x9f, 0x9f, 0xfe, 0x00, 0x3f, 0x9f, 0x9f, 0x9e,&lt;br /&gt;
  0x00, 0x3f, 0x9f, 0x9f, 0x9e, 0x00, 0x3f, 0x9f, 0x9f, 0x9e, 0x00, 0x3f, 0x9f, 0x9f, 0x9c, 0x00,&lt;br /&gt;
  0x1f, 0x9f, 0x9f, 0x98, 0x00, 0x0f, 0x9f, 0x9f, 0x90, 0x00, 0x07, 0x9f, 0x9f, 0x90, 0x00, 0x00,&lt;br /&gt;
  0x9f, 0x9f, 0x90, 0x00, 0x00, 0x9f, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91,&lt;br /&gt;
  0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91,&lt;br /&gt;
  0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90,&lt;br /&gt;
  0x00, 0x00, 0xf1, 0xd1, 0x90, 0x00, 0x00, 0x01, 0xc1, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup()   {&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  /**************** Éxcriture de texte  ***************/&lt;br /&gt;
  // taille par défaut&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Petit...&amp;quot;);&lt;br /&gt;
  display.display();  // affichage à l'écran&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  // deux fois plus gros&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextSize(2);  // taille double&lt;br /&gt;
  display.println(&amp;quot;GROS!&amp;quot;);&lt;br /&gt;
  display.display();  // affichage à l'écran&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();  // on efface tout&lt;br /&gt;
&lt;br /&gt;
  /******************** Dessiner une ligne ******************************************/&lt;br /&gt;
  // ligne horizontale au centre de l'écran&lt;br /&gt;
  display.drawLine(0, display.height() / 2, display.width() , display.height() / 2,  WHITE);&lt;br /&gt;
  // ligne verticale au centre de l'écran&lt;br /&gt;
  display.drawLine(display.width() / 2, 0, display.width() / 2, display.height(), WHITE);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /********************* Dessiner des contours de formes géométriques ******************/&lt;br /&gt;
  display.drawRect( 15, 5, 30, 15, WHITE); // contour d'un rectangle&lt;br /&gt;
  display.drawCircle(95, 15, 8, WHITE);  // contour d'un cercle&lt;br /&gt;
  display.drawRoundRect(15, 40, 30, 16, 5, WHITE);  // contour d'un rectangle à coins arrondis&lt;br /&gt;
  display.drawTriangle(95, 40, 80, 55, 110, 55, WHITE);  // contour d'un triangle&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(1000);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /******************* Dessiner des formes géométriqeus pleines *************************/&lt;br /&gt;
  display.fillRect( 15, 5, 30, 15, WHITE); // contour d'un rectangle&lt;br /&gt;
  display.fillCircle(95, 15, 8, WHITE);  // contour d'un cercle&lt;br /&gt;
  display.fillRoundRect(15, 40, 30, 16, 5, WHITE);  // contour d'un rectangle à coins arrondis&lt;br /&gt;
  display.fillTriangle(95, 40, 80, 55, 110, 55, WHITE);  // contour d'un triangle&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
  &lt;br /&gt;
  /********************** Dessiner un pixel à la fois ***********************************************/&lt;br /&gt;
  // on trace une fonction sinusoidale, point par point&lt;br /&gt;
  for (int x = 1; x &amp;lt; 128; x++) {&lt;br /&gt;
    int y = 32 + round(16.0 * sin(x / 5.0));&lt;br /&gt;
    display.drawPixel(x, y, WHITE);&lt;br /&gt;
  }&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /**************************** Dessiner une image  bitmap **********************************/&lt;br /&gt;
  // on affiche l'image stockée dans la constante myBitmap définie au début de ce fichier.&lt;br /&gt;
  display.fillRect(5,5,44,58,WHITE);  // fond blanc derrière l'image bitmap&lt;br /&gt;
  display.drawBitmap(10, 10, myBitmap, 34, 48, BLACK);&lt;br /&gt;
  display.setCursor(60, 30);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Au revoir!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Taupe===&lt;br /&gt;
&lt;br /&gt;
Aprés avoir vérifié et cablé il ne reste plus qu'a mettre le code final&lt;br /&gt;
&lt;br /&gt;
Ici il n'y a que 3 taupes mais ils suffit de copier coller quelque lignes pour en ajouter d'autres&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
int cmd_taupe1 = 53;&lt;br /&gt;
int cmd_taupe2 = 51;&lt;br /&gt;
int cmd_taupe3 = 49;&lt;br /&gt;
&lt;br /&gt;
int int_cmd_taupe1 = 1;&lt;br /&gt;
int int_cmd_taupe2 = 1;&lt;br /&gt;
int int_cmd_taupe3 = 1;&lt;br /&gt;
&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
int cpt_taupe2 = 24;&lt;br /&gt;
int cpt_taupe3 = 26;&lt;br /&gt;
&lt;br /&gt;
int pts = 0;&lt;br /&gt;
&lt;br /&gt;
int start = 0;&lt;br /&gt;
int now = 0;&lt;br /&gt;
&lt;br /&gt;
int random_int = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe2, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe3, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe2, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe3, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
  randomSeed(analogRead(0)); //Initialise le random par la lecture du bruit d'un pin analogique non branché&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  now = millis(); //On récupère le temps dans une variable&lt;br /&gt;
&lt;br /&gt;
  if (now-start &amp;gt; 1000) //Si il s'est écoulé plus de 1s&lt;br /&gt;
  {&lt;br /&gt;
    start = millis(); //On renitialise le temps de départ du timer&lt;br /&gt;
    random_int = random(1, 3); //On créer un nombre random entre 1 et le nombre de taupe (ici 3)&lt;br /&gt;
    if (int_cmd_taupe1 == 1 and random_int == 1) //Si la taupe est rentré est que le random l'indique elle sort&lt;br /&gt;
      int_cmd_taupe1 = 0;&lt;br /&gt;
    else //sinon elle rentre&lt;br /&gt;
      int_cmd_taupe1 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe2 == 1 and random_int == 2)&lt;br /&gt;
      int_cmd_taupe2 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe2 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe3 == 1 and random_int == 3)&lt;br /&gt;
      int_cmd_taupe3 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  //Taupe&lt;br /&gt;
  digitalWrite(cmd_taupe1, int_cmd_taupe1); //On ecrit sur les pin des selenoide les valeurs de commande de ceux ci&lt;br /&gt;
  digitalWrite(cmd_taupe2, int_cmd_taupe2);&lt;br /&gt;
  digitalWrite(cmd_taupe3, int_cmd_taupe3);&lt;br /&gt;
&lt;br /&gt;
  //LCD&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Vous avez :&amp;quot;);&lt;br /&gt;
  display.setCursor(50, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.println(&amp;quot; points&amp;quot;);&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.print(pts);&lt;br /&gt;
  display.display(); //Affiche l'ecran&lt;br /&gt;
  display.clearDisplay(); //Efface l'ecran&lt;br /&gt;
&lt;br /&gt;
  //Capteur&lt;br /&gt;
  if (digitalRead(cpt_taupe1) == 1 &amp;amp;&amp;amp; int_cmd_taupe1 == 0) //Si la taupe est relevé est que le bouton est appuyé on gagne 1 points et la taupe se baisse&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe2) == 1 &amp;amp;&amp;amp; int_cmd_taupe2 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe2 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe3) == 1 &amp;amp;&amp;amp; int_cmd_taupe3 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19194</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19194"/>
				<updated>2022-01-18T17:12:32Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : /* Code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Les boutons poussoir sont montés sur de solénoïdes, ils montent et descendent.&lt;br /&gt;
Quand ils sortent, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x5)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
(Ajouter un gros plan de la rangé avec une légende)&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
Ecran LCD.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&lt;br /&gt;
Tout d'abord il faut tester les composants pour s'assurer qu'ils fonctionnent tous bien&lt;br /&gt;
&lt;br /&gt;
===Boutton===&lt;br /&gt;
&lt;br /&gt;
Ce code permet de verifier le fonctionnement des boutons&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22; //22 represente le pin ou sera branché le bouton&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT); //Cette ligne permet de passer le pin en mode entré&lt;br /&gt;
  Serial.begin(9600); //Initialise le terminal &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1)); //Ecris l'etat du pin du bouton (0 ou 1)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Selenoide===&lt;br /&gt;
&lt;br /&gt;
Ce code permettra d'activer/desactiver le selenoide 1s/1s&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cmd_taupe1 = 53; //53 represente le pin ou sera branché le bouton&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT); //Cette ligne passe le pin en sortie&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  digitalWrite(cmd_taupe1, HIGH); //Active le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
  digitalWrite(cmd_taupe1, LOW); //Desactive le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===LCD===&lt;br /&gt;
&lt;br /&gt;
Cette exemple de code provient du site electronique amateur&amp;lt;ref&amp;gt;https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&amp;lt;/ref&amp;gt; il permet de voir les possibilités offerte par le LCD&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
/*********************************************************************&lt;br /&gt;
  Démonstration d'un écran OLED i2c SH1106 avec un Arduino,&lt;br /&gt;
  en utilisant une bibliothèque d'Adafruit:&lt;br /&gt;
  https://github.com/adafruit/Adafruit-GFX-Library&lt;br /&gt;
  ...et une bibliothèque compatible par Wohho-maker:&lt;br /&gt;
  https://github.com/wonho-maker/Adafruit_SH1106&lt;br /&gt;
  &lt;br /&gt;
  Plus d'infos:&lt;br /&gt;
  https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&lt;br /&gt;
*********************************************************************/&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/* Puisque la bibliothèque est basée sur celle du SSD1306, le constructeur&lt;br /&gt;
prévoit qu'on passe le numéro de la broche RESET en argument. Mais le SH1106&lt;br /&gt;
n'a pas de broche RESET, alors on écrit n'importe quel entier (de préférence,&lt;br /&gt;
le numéro d'une broche de l'Arduino que vous n'utilisez pas). */&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
/* Définition d'une image bitmap: logo du blog Électronique en Amateur&lt;br /&gt;
  Réalisée avec l'outil en ligne  http://javl.github.io/image2cpp/  */&lt;br /&gt;
&lt;br /&gt;
const unsigned char myBitmap [] PROGMEM = {&lt;br /&gt;
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xf0, 0x00, 0x00, 0x03, 0x9f, 0xff, 0xe0, 0x00, 0x07,&lt;br /&gt;
  0x9f, 0xff, 0xfe, 0x00, 0x0f, 0xdf, 0x0f, 0xbe, 0x00, 0x1f, 0xde, 0x06, 0x0e, 0x00, 0x3f, 0xdc,&lt;br /&gt;
  0x04, 0x0e, 0x00, 0x3f, 0xdc, 0x00, 0x06, 0x00, 0x3f, 0xdc, 0x00, 0x06, 0x00, 0x3f, 0xdc, 0x60,&lt;br /&gt;
  0x06, 0x00, 0x3f, 0xdc, 0xf1, 0x8e, 0x00, 0x3f, 0xdc, 0xf3, 0xce, 0x00, 0x3f, 0xde, 0x63, 0xde,&lt;br /&gt;
  0x00, 0x3f, 0xdf, 0x09, 0x9e, 0x00, 0x3f, 0xdf, 0xfc, 0x7e, 0x00, 0x3f, 0xde, 0x7f, 0xfe, 0x00,&lt;br /&gt;
  0x3f, 0xde, 0x7f, 0xf6, 0x00, 0x3f, 0xdf, 0x3f, 0xe6, 0x00, 0x3f, 0xdf, 0x8f, 0x8e, 0x00, 0x3f,&lt;br /&gt;
  0xdf, 0xe0, 0x3e, 0x00, 0x3f, 0x00, 0x3f, 0xfe, 0x00, 0x3e, 0xff, 0xc0, 0x1e, 0x00, 0x3d, 0xff,&lt;br /&gt;
  0xff, 0xc0, 0x00, 0x3b, 0xff, 0xff, 0xfe, 0x00, 0x37, 0xff, 0xff, 0xfe, 0x00, 0x2f, 0xff, 0xff,&lt;br /&gt;
  0xfe, 0x00, 0x0e, 0x1f, 0xff, 0xfe, 0x00, 0x1f, 0x9f, 0x9f, 0xfe, 0x00, 0x3f, 0x9f, 0x9f, 0x9e,&lt;br /&gt;
  0x00, 0x3f, 0x9f, 0x9f, 0x9e, 0x00, 0x3f, 0x9f, 0x9f, 0x9e, 0x00, 0x3f, 0x9f, 0x9f, 0x9c, 0x00,&lt;br /&gt;
  0x1f, 0x9f, 0x9f, 0x98, 0x00, 0x0f, 0x9f, 0x9f, 0x90, 0x00, 0x07, 0x9f, 0x9f, 0x90, 0x00, 0x00,&lt;br /&gt;
  0x9f, 0x9f, 0x90, 0x00, 0x00, 0x9f, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91,&lt;br /&gt;
  0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91,&lt;br /&gt;
  0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90,&lt;br /&gt;
  0x00, 0x00, 0xf1, 0xd1, 0x90, 0x00, 0x00, 0x01, 0xc1, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup()   {&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  /**************** Éxcriture de texte  ***************/&lt;br /&gt;
  // taille par défaut&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Petit...&amp;quot;);&lt;br /&gt;
  display.display();  // affichage à l'écran&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  // deux fois plus gros&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextSize(2);  // taille double&lt;br /&gt;
  display.println(&amp;quot;GROS!&amp;quot;);&lt;br /&gt;
  display.display();  // affichage à l'écran&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();  // on efface tout&lt;br /&gt;
&lt;br /&gt;
  /******************** Dessiner une ligne ******************************************/&lt;br /&gt;
  // ligne horizontale au centre de l'écran&lt;br /&gt;
  display.drawLine(0, display.height() / 2, display.width() , display.height() / 2,  WHITE);&lt;br /&gt;
  // ligne verticale au centre de l'écran&lt;br /&gt;
  display.drawLine(display.width() / 2, 0, display.width() / 2, display.height(), WHITE);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /********************* Dessiner des contours de formes géométriques ******************/&lt;br /&gt;
  display.drawRect( 15, 5, 30, 15, WHITE); // contour d'un rectangle&lt;br /&gt;
  display.drawCircle(95, 15, 8, WHITE);  // contour d'un cercle&lt;br /&gt;
  display.drawRoundRect(15, 40, 30, 16, 5, WHITE);  // contour d'un rectangle à coins arrondis&lt;br /&gt;
  display.drawTriangle(95, 40, 80, 55, 110, 55, WHITE);  // contour d'un triangle&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(1000);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /******************* Dessiner des formes géométriqeus pleines *************************/&lt;br /&gt;
  display.fillRect( 15, 5, 30, 15, WHITE); // contour d'un rectangle&lt;br /&gt;
  display.fillCircle(95, 15, 8, WHITE);  // contour d'un cercle&lt;br /&gt;
  display.fillRoundRect(15, 40, 30, 16, 5, WHITE);  // contour d'un rectangle à coins arrondis&lt;br /&gt;
  display.fillTriangle(95, 40, 80, 55, 110, 55, WHITE);  // contour d'un triangle&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
  &lt;br /&gt;
  /********************** Dessiner un pixel à la fois ***********************************************/&lt;br /&gt;
  // on trace une fonction sinusoidale, point par point&lt;br /&gt;
  for (int x = 1; x &amp;lt; 128; x++) {&lt;br /&gt;
    int y = 32 + round(16.0 * sin(x / 5.0));&lt;br /&gt;
    display.drawPixel(x, y, WHITE);&lt;br /&gt;
  }&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /**************************** Dessiner une image  bitmap **********************************/&lt;br /&gt;
  // on affiche l'image stockée dans la constante myBitmap définie au début de ce fichier.&lt;br /&gt;
  display.fillRect(5,5,44,58,WHITE);  // fond blanc derrière l'image bitmap&lt;br /&gt;
  display.drawBitmap(10, 10, myBitmap, 34, 48, BLACK);&lt;br /&gt;
  display.setCursor(60, 30);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Au revoir!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Taupe===&lt;br /&gt;
&lt;br /&gt;
Aprés avoir vérifié et cablé il ne reste plus qu'a mettre le code final&lt;br /&gt;
&lt;br /&gt;
Ici il n'y a que 3 taupes mais ils suffit de copier coller quelque lignes pour en ajouter d'autres&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
int cmd_taupe1 = 53;&lt;br /&gt;
int cmd_taupe2 = 51;&lt;br /&gt;
int cmd_taupe3 = 49;&lt;br /&gt;
&lt;br /&gt;
int int_cmd_taupe1 = 1;&lt;br /&gt;
int int_cmd_taupe2 = 1;&lt;br /&gt;
int int_cmd_taupe3 = 1;&lt;br /&gt;
&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
int cpt_taupe2 = 24;&lt;br /&gt;
int cpt_taupe3 = 26;&lt;br /&gt;
&lt;br /&gt;
int pts = 0;&lt;br /&gt;
&lt;br /&gt;
int start = 0;&lt;br /&gt;
int now = 0;&lt;br /&gt;
&lt;br /&gt;
int random_int = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe2, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe3, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe2, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe3, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
  randomSeed(analogRead(0)); //Initialise le random par la lecture du bruit d'un pin analogique non branché&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  now = millis(); //On récupère le temps dans une variable&lt;br /&gt;
&lt;br /&gt;
  if (now-start &amp;gt; 1000) //Si il s'est écoulé plus de 1s&lt;br /&gt;
  {&lt;br /&gt;
    start = millis(); //On renitialise le temps de départ du timer&lt;br /&gt;
    random_int = random(1, 3); //On créer un nombre random entre 1 et le nombre de taupe (ici 3)&lt;br /&gt;
    if (int_cmd_taupe1 == 1 and random_int == 1) //Si la taupe est rentré est que le random l'indique elle sort&lt;br /&gt;
      int_cmd_taupe1 = 0;&lt;br /&gt;
    else //sinon elle rentre&lt;br /&gt;
      int_cmd_taupe1 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe2 == 1 and random_int == 2)&lt;br /&gt;
      int_cmd_taupe2 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe2 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe3 == 1 and random_int == 3)&lt;br /&gt;
      int_cmd_taupe3 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  //Taupe&lt;br /&gt;
  digitalWrite(cmd_taupe1, int_cmd_taupe1); //On ecrit sur les pin des selenoide les valeurs de commande de ceux ci&lt;br /&gt;
  digitalWrite(cmd_taupe2, int_cmd_taupe2);&lt;br /&gt;
  digitalWrite(cmd_taupe3, int_cmd_taupe3);&lt;br /&gt;
&lt;br /&gt;
  //LCD&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Vous avez :&amp;quot;);&lt;br /&gt;
  display.setCursor(50, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.println(&amp;quot; points&amp;quot;);&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.print(pts);&lt;br /&gt;
  display.display(); //Affiche l'ecran&lt;br /&gt;
  display.clearDisplay(); //Efface l'ecran&lt;br /&gt;
&lt;br /&gt;
  //Capteur&lt;br /&gt;
  if (digitalRead(cpt_taupe1) == 1 &amp;amp;&amp;amp; int_cmd_taupe1 == 0) //Si la taupe est relevé est que le bouton est appuyé on gagne 1 points et la taupe se baisse&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe2) == 1 &amp;amp;&amp;amp; int_cmd_taupe2 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe2 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe3) == 1 &amp;amp;&amp;amp; int_cmd_taupe3 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighligh&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19193</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19193"/>
				<updated>2022-01-18T17:11:55Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : /* Taupe */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Les boutons poussoir sont montés sur de solénoïdes, ils montent et descendent.&lt;br /&gt;
Quand ils sortent, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x5)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
(Ajouter un gros plan de la rangé avec une légende)&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
Ecran LCD.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&lt;br /&gt;
Tout d'abord il faut tester les composants pour s'assurer qu'ils fonctionnent tous bien&lt;br /&gt;
&lt;br /&gt;
===Boutton===&lt;br /&gt;
&lt;br /&gt;
Ce code permet de verifier le fonctionnement des boutons&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22; //22 represente le pin ou sera branché le bouton&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT); //Cette ligne permet de passer le pin en mode entré&lt;br /&gt;
  Serial.begin(9600); //Initialise le terminal &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1)); //Ecris l'etat du pin du bouton (0 ou 1)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Selenoide===&lt;br /&gt;
&lt;br /&gt;
Ce code permettra d'activer/desactiver le selenoide 1s/1s&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cmd_taupe1 = 53; //53 represente le pin ou sera branché le bouton&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT); //Cette ligne passe le pin en sortie&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  digitalWrite(cmd_taupe1, HIGH); //Active le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
  digitalWrite(cmd_taupe1, LOW); //Desactive le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===LCD===&lt;br /&gt;
&lt;br /&gt;
Cette exemple de code provient du site electronique amateur&amp;lt;ref&amp;gt;https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&amp;lt;/ref&amp;gt; il permet de voir les possibilités offerte par le LCD&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
/*********************************************************************&lt;br /&gt;
  Démonstration d'un écran OLED i2c SH1106 avec un Arduino,&lt;br /&gt;
  en utilisant une bibliothèque d'Adafruit:&lt;br /&gt;
  https://github.com/adafruit/Adafruit-GFX-Library&lt;br /&gt;
  ...et une bibliothèque compatible par Wohho-maker:&lt;br /&gt;
  https://github.com/wonho-maker/Adafruit_SH1106&lt;br /&gt;
  &lt;br /&gt;
  Plus d'infos:&lt;br /&gt;
  https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&lt;br /&gt;
*********************************************************************/&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/* Puisque la bibliothèque est basée sur celle du SSD1306, le constructeur&lt;br /&gt;
prévoit qu'on passe le numéro de la broche RESET en argument. Mais le SH1106&lt;br /&gt;
n'a pas de broche RESET, alors on écrit n'importe quel entier (de préférence,&lt;br /&gt;
le numéro d'une broche de l'Arduino que vous n'utilisez pas). */&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
/* Définition d'une image bitmap: logo du blog Électronique en Amateur&lt;br /&gt;
  Réalisée avec l'outil en ligne  http://javl.github.io/image2cpp/  */&lt;br /&gt;
&lt;br /&gt;
const unsigned char myBitmap [] PROGMEM = {&lt;br /&gt;
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xf0, 0x00, 0x00, 0x03, 0x9f, 0xff, 0xe0, 0x00, 0x07,&lt;br /&gt;
  0x9f, 0xff, 0xfe, 0x00, 0x0f, 0xdf, 0x0f, 0xbe, 0x00, 0x1f, 0xde, 0x06, 0x0e, 0x00, 0x3f, 0xdc,&lt;br /&gt;
  0x04, 0x0e, 0x00, 0x3f, 0xdc, 0x00, 0x06, 0x00, 0x3f, 0xdc, 0x00, 0x06, 0x00, 0x3f, 0xdc, 0x60,&lt;br /&gt;
  0x06, 0x00, 0x3f, 0xdc, 0xf1, 0x8e, 0x00, 0x3f, 0xdc, 0xf3, 0xce, 0x00, 0x3f, 0xde, 0x63, 0xde,&lt;br /&gt;
  0x00, 0x3f, 0xdf, 0x09, 0x9e, 0x00, 0x3f, 0xdf, 0xfc, 0x7e, 0x00, 0x3f, 0xde, 0x7f, 0xfe, 0x00,&lt;br /&gt;
  0x3f, 0xde, 0x7f, 0xf6, 0x00, 0x3f, 0xdf, 0x3f, 0xe6, 0x00, 0x3f, 0xdf, 0x8f, 0x8e, 0x00, 0x3f,&lt;br /&gt;
  0xdf, 0xe0, 0x3e, 0x00, 0x3f, 0x00, 0x3f, 0xfe, 0x00, 0x3e, 0xff, 0xc0, 0x1e, 0x00, 0x3d, 0xff,&lt;br /&gt;
  0xff, 0xc0, 0x00, 0x3b, 0xff, 0xff, 0xfe, 0x00, 0x37, 0xff, 0xff, 0xfe, 0x00, 0x2f, 0xff, 0xff,&lt;br /&gt;
  0xfe, 0x00, 0x0e, 0x1f, 0xff, 0xfe, 0x00, 0x1f, 0x9f, 0x9f, 0xfe, 0x00, 0x3f, 0x9f, 0x9f, 0x9e,&lt;br /&gt;
  0x00, 0x3f, 0x9f, 0x9f, 0x9e, 0x00, 0x3f, 0x9f, 0x9f, 0x9e, 0x00, 0x3f, 0x9f, 0x9f, 0x9c, 0x00,&lt;br /&gt;
  0x1f, 0x9f, 0x9f, 0x98, 0x00, 0x0f, 0x9f, 0x9f, 0x90, 0x00, 0x07, 0x9f, 0x9f, 0x90, 0x00, 0x00,&lt;br /&gt;
  0x9f, 0x9f, 0x90, 0x00, 0x00, 0x9f, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91,&lt;br /&gt;
  0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91,&lt;br /&gt;
  0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90,&lt;br /&gt;
  0x00, 0x00, 0xf1, 0xd1, 0x90, 0x00, 0x00, 0x01, 0xc1, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup()   {&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  /**************** Éxcriture de texte  ***************/&lt;br /&gt;
  // taille par défaut&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Petit...&amp;quot;);&lt;br /&gt;
  display.display();  // affichage à l'écran&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  // deux fois plus gros&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextSize(2);  // taille double&lt;br /&gt;
  display.println(&amp;quot;GROS!&amp;quot;);&lt;br /&gt;
  display.display();  // affichage à l'écran&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();  // on efface tout&lt;br /&gt;
&lt;br /&gt;
  /******************** Dessiner une ligne ******************************************/&lt;br /&gt;
  // ligne horizontale au centre de l'écran&lt;br /&gt;
  display.drawLine(0, display.height() / 2, display.width() , display.height() / 2,  WHITE);&lt;br /&gt;
  // ligne verticale au centre de l'écran&lt;br /&gt;
  display.drawLine(display.width() / 2, 0, display.width() / 2, display.height(), WHITE);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /********************* Dessiner des contours de formes géométriques ******************/&lt;br /&gt;
  display.drawRect( 15, 5, 30, 15, WHITE); // contour d'un rectangle&lt;br /&gt;
  display.drawCircle(95, 15, 8, WHITE);  // contour d'un cercle&lt;br /&gt;
  display.drawRoundRect(15, 40, 30, 16, 5, WHITE);  // contour d'un rectangle à coins arrondis&lt;br /&gt;
  display.drawTriangle(95, 40, 80, 55, 110, 55, WHITE);  // contour d'un triangle&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(1000);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /******************* Dessiner des formes géométriqeus pleines *************************/&lt;br /&gt;
  display.fillRect( 15, 5, 30, 15, WHITE); // contour d'un rectangle&lt;br /&gt;
  display.fillCircle(95, 15, 8, WHITE);  // contour d'un cercle&lt;br /&gt;
  display.fillRoundRect(15, 40, 30, 16, 5, WHITE);  // contour d'un rectangle à coins arrondis&lt;br /&gt;
  display.fillTriangle(95, 40, 80, 55, 110, 55, WHITE);  // contour d'un triangle&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
  &lt;br /&gt;
  /********************** Dessiner un pixel à la fois ***********************************************/&lt;br /&gt;
  // on trace une fonction sinusoidale, point par point&lt;br /&gt;
  for (int x = 1; x &amp;lt; 128; x++) {&lt;br /&gt;
    int y = 32 + round(16.0 * sin(x / 5.0));&lt;br /&gt;
    display.drawPixel(x, y, WHITE);&lt;br /&gt;
  }&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /**************************** Dessiner une image  bitmap **********************************/&lt;br /&gt;
  // on affiche l'image stockée dans la constante myBitmap définie au début de ce fichier.&lt;br /&gt;
  display.fillRect(5,5,44,58,WHITE);  // fond blanc derrière l'image bitmap&lt;br /&gt;
  display.drawBitmap(10, 10, myBitmap, 34, 48, BLACK);&lt;br /&gt;
  display.setCursor(60, 30);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Au revoir!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Taupe===&lt;br /&gt;
&lt;br /&gt;
Aprés avoir vérifié et cablé il ne reste plus qu'a mettre le code final&lt;br /&gt;
&lt;br /&gt;
Ici il n'y a que 3 taupes mais ils suffit de copier coller quelque lignes pour en ajouter d'autres&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
int cmd_taupe1 = 53;&lt;br /&gt;
int cmd_taupe2 = 51;&lt;br /&gt;
int cmd_taupe3 = 49;&lt;br /&gt;
&lt;br /&gt;
int int_cmd_taupe1 = 1;&lt;br /&gt;
int int_cmd_taupe2 = 1;&lt;br /&gt;
int int_cmd_taupe3 = 1;&lt;br /&gt;
&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
int cpt_taupe2 = 24;&lt;br /&gt;
int cpt_taupe3 = 26;&lt;br /&gt;
&lt;br /&gt;
int pts = 0;&lt;br /&gt;
&lt;br /&gt;
int start = 0;&lt;br /&gt;
int now = 0;&lt;br /&gt;
&lt;br /&gt;
int random_int = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe2, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe3, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe2, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe3, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
  randomSeed(analogRead(0)); //Initialise le random par la lecture du bruit d'un pin analogique non branché&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  now = millis(); //On récupère le temps dans une variable&lt;br /&gt;
&lt;br /&gt;
  if (now-start &amp;gt; 1000) //Si il s'est écoulé plus de 1s&lt;br /&gt;
  {&lt;br /&gt;
    start = millis(); //On renitialise le temps de départ du timer&lt;br /&gt;
    random_int = random(1, 3); //On créer un nombre random entre 1 et le nombre de taupe (ici 3)&lt;br /&gt;
    if (int_cmd_taupe1 == 1 and random_int == 1) //Si la taupe est rentré est que le random l'indique elle sort&lt;br /&gt;
      int_cmd_taupe1 = 0;&lt;br /&gt;
    else //sinon elle rentre&lt;br /&gt;
      int_cmd_taupe1 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe2 == 1 and random_int == 2)&lt;br /&gt;
      int_cmd_taupe2 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe2 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe3 == 1 and random_int == 3)&lt;br /&gt;
      int_cmd_taupe3 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  //Taupe&lt;br /&gt;
  digitalWrite(cmd_taupe1, int_cmd_taupe1); //On ecrit sur les pin des selenoide les valeurs de commande de ceux ci&lt;br /&gt;
  digitalWrite(cmd_taupe2, int_cmd_taupe2);&lt;br /&gt;
  digitalWrite(cmd_taupe3, int_cmd_taupe3);&lt;br /&gt;
&lt;br /&gt;
  //LCD&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Vous avez :&amp;quot;);&lt;br /&gt;
  display.setCursor(50, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.println(&amp;quot; points&amp;quot;);&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.print(pts);&lt;br /&gt;
  display.display(); //Affiche l'ecran&lt;br /&gt;
  display.clearDisplay(); //Efface l'ecran&lt;br /&gt;
&lt;br /&gt;
  //Capteur&lt;br /&gt;
  if (digitalRead(cpt_taupe1) == 1 &amp;amp;&amp;amp; int_cmd_taupe1 == 0) //Si la taupe est relevé est que le bouton est appuyé on gagne 1 points et la taupe se baisse&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe2) == 1 &amp;amp;&amp;amp; int_cmd_taupe2 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe2 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe3) == 1 &amp;amp;&amp;amp; int_cmd_taupe3 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighligh&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19192</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19192"/>
				<updated>2022-01-18T17:11:34Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : /* Taupe */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Les boutons poussoir sont montés sur de solénoïdes, ils montent et descendent.&lt;br /&gt;
Quand ils sortent, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x5)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
(Ajouter un gros plan de la rangé avec une légende)&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
Ecran LCD.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&lt;br /&gt;
Tout d'abord il faut tester les composants pour s'assurer qu'ils fonctionnent tous bien&lt;br /&gt;
&lt;br /&gt;
===Boutton===&lt;br /&gt;
&lt;br /&gt;
Ce code permet de verifier le fonctionnement des boutons&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22; //22 represente le pin ou sera branché le bouton&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT); //Cette ligne permet de passer le pin en mode entré&lt;br /&gt;
  Serial.begin(9600); //Initialise le terminal &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1)); //Ecris l'etat du pin du bouton (0 ou 1)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Selenoide===&lt;br /&gt;
&lt;br /&gt;
Ce code permettra d'activer/desactiver le selenoide 1s/1s&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cmd_taupe1 = 53; //53 represente le pin ou sera branché le bouton&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT); //Cette ligne passe le pin en sortie&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  digitalWrite(cmd_taupe1, HIGH); //Active le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
  digitalWrite(cmd_taupe1, LOW); //Desactive le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===LCD===&lt;br /&gt;
&lt;br /&gt;
Cette exemple de code provient du site electronique amateur&amp;lt;ref&amp;gt;https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&amp;lt;/ref&amp;gt; il permet de voir les possibilités offerte par le LCD&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
/*********************************************************************&lt;br /&gt;
  Démonstration d'un écran OLED i2c SH1106 avec un Arduino,&lt;br /&gt;
  en utilisant une bibliothèque d'Adafruit:&lt;br /&gt;
  https://github.com/adafruit/Adafruit-GFX-Library&lt;br /&gt;
  ...et une bibliothèque compatible par Wohho-maker:&lt;br /&gt;
  https://github.com/wonho-maker/Adafruit_SH1106&lt;br /&gt;
  &lt;br /&gt;
  Plus d'infos:&lt;br /&gt;
  https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&lt;br /&gt;
*********************************************************************/&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/* Puisque la bibliothèque est basée sur celle du SSD1306, le constructeur&lt;br /&gt;
prévoit qu'on passe le numéro de la broche RESET en argument. Mais le SH1106&lt;br /&gt;
n'a pas de broche RESET, alors on écrit n'importe quel entier (de préférence,&lt;br /&gt;
le numéro d'une broche de l'Arduino que vous n'utilisez pas). */&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
/* Définition d'une image bitmap: logo du blog Électronique en Amateur&lt;br /&gt;
  Réalisée avec l'outil en ligne  http://javl.github.io/image2cpp/  */&lt;br /&gt;
&lt;br /&gt;
const unsigned char myBitmap [] PROGMEM = {&lt;br /&gt;
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xf0, 0x00, 0x00, 0x03, 0x9f, 0xff, 0xe0, 0x00, 0x07,&lt;br /&gt;
  0x9f, 0xff, 0xfe, 0x00, 0x0f, 0xdf, 0x0f, 0xbe, 0x00, 0x1f, 0xde, 0x06, 0x0e, 0x00, 0x3f, 0xdc,&lt;br /&gt;
  0x04, 0x0e, 0x00, 0x3f, 0xdc, 0x00, 0x06, 0x00, 0x3f, 0xdc, 0x00, 0x06, 0x00, 0x3f, 0xdc, 0x60,&lt;br /&gt;
  0x06, 0x00, 0x3f, 0xdc, 0xf1, 0x8e, 0x00, 0x3f, 0xdc, 0xf3, 0xce, 0x00, 0x3f, 0xde, 0x63, 0xde,&lt;br /&gt;
  0x00, 0x3f, 0xdf, 0x09, 0x9e, 0x00, 0x3f, 0xdf, 0xfc, 0x7e, 0x00, 0x3f, 0xde, 0x7f, 0xfe, 0x00,&lt;br /&gt;
  0x3f, 0xde, 0x7f, 0xf6, 0x00, 0x3f, 0xdf, 0x3f, 0xe6, 0x00, 0x3f, 0xdf, 0x8f, 0x8e, 0x00, 0x3f,&lt;br /&gt;
  0xdf, 0xe0, 0x3e, 0x00, 0x3f, 0x00, 0x3f, 0xfe, 0x00, 0x3e, 0xff, 0xc0, 0x1e, 0x00, 0x3d, 0xff,&lt;br /&gt;
  0xff, 0xc0, 0x00, 0x3b, 0xff, 0xff, 0xfe, 0x00, 0x37, 0xff, 0xff, 0xfe, 0x00, 0x2f, 0xff, 0xff,&lt;br /&gt;
  0xfe, 0x00, 0x0e, 0x1f, 0xff, 0xfe, 0x00, 0x1f, 0x9f, 0x9f, 0xfe, 0x00, 0x3f, 0x9f, 0x9f, 0x9e,&lt;br /&gt;
  0x00, 0x3f, 0x9f, 0x9f, 0x9e, 0x00, 0x3f, 0x9f, 0x9f, 0x9e, 0x00, 0x3f, 0x9f, 0x9f, 0x9c, 0x00,&lt;br /&gt;
  0x1f, 0x9f, 0x9f, 0x98, 0x00, 0x0f, 0x9f, 0x9f, 0x90, 0x00, 0x07, 0x9f, 0x9f, 0x90, 0x00, 0x00,&lt;br /&gt;
  0x9f, 0x9f, 0x90, 0x00, 0x00, 0x9f, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91,&lt;br /&gt;
  0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91,&lt;br /&gt;
  0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90,&lt;br /&gt;
  0x00, 0x00, 0xf1, 0xd1, 0x90, 0x00, 0x00, 0x01, 0xc1, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup()   {&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  /**************** Éxcriture de texte  ***************/&lt;br /&gt;
  // taille par défaut&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Petit...&amp;quot;);&lt;br /&gt;
  display.display();  // affichage à l'écran&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  // deux fois plus gros&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextSize(2);  // taille double&lt;br /&gt;
  display.println(&amp;quot;GROS!&amp;quot;);&lt;br /&gt;
  display.display();  // affichage à l'écran&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();  // on efface tout&lt;br /&gt;
&lt;br /&gt;
  /******************** Dessiner une ligne ******************************************/&lt;br /&gt;
  // ligne horizontale au centre de l'écran&lt;br /&gt;
  display.drawLine(0, display.height() / 2, display.width() , display.height() / 2,  WHITE);&lt;br /&gt;
  // ligne verticale au centre de l'écran&lt;br /&gt;
  display.drawLine(display.width() / 2, 0, display.width() / 2, display.height(), WHITE);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /********************* Dessiner des contours de formes géométriques ******************/&lt;br /&gt;
  display.drawRect( 15, 5, 30, 15, WHITE); // contour d'un rectangle&lt;br /&gt;
  display.drawCircle(95, 15, 8, WHITE);  // contour d'un cercle&lt;br /&gt;
  display.drawRoundRect(15, 40, 30, 16, 5, WHITE);  // contour d'un rectangle à coins arrondis&lt;br /&gt;
  display.drawTriangle(95, 40, 80, 55, 110, 55, WHITE);  // contour d'un triangle&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(1000);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /******************* Dessiner des formes géométriqeus pleines *************************/&lt;br /&gt;
  display.fillRect( 15, 5, 30, 15, WHITE); // contour d'un rectangle&lt;br /&gt;
  display.fillCircle(95, 15, 8, WHITE);  // contour d'un cercle&lt;br /&gt;
  display.fillRoundRect(15, 40, 30, 16, 5, WHITE);  // contour d'un rectangle à coins arrondis&lt;br /&gt;
  display.fillTriangle(95, 40, 80, 55, 110, 55, WHITE);  // contour d'un triangle&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
  &lt;br /&gt;
  /********************** Dessiner un pixel à la fois ***********************************************/&lt;br /&gt;
  // on trace une fonction sinusoidale, point par point&lt;br /&gt;
  for (int x = 1; x &amp;lt; 128; x++) {&lt;br /&gt;
    int y = 32 + round(16.0 * sin(x / 5.0));&lt;br /&gt;
    display.drawPixel(x, y, WHITE);&lt;br /&gt;
  }&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /**************************** Dessiner une image  bitmap **********************************/&lt;br /&gt;
  // on affiche l'image stockée dans la constante myBitmap définie au début de ce fichier.&lt;br /&gt;
  display.fillRect(5,5,44,58,WHITE);  // fond blanc derrière l'image bitmap&lt;br /&gt;
  display.drawBitmap(10, 10, myBitmap, 34, 48, BLACK);&lt;br /&gt;
  display.setCursor(60, 30);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Au revoir!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Taupe===&lt;br /&gt;
&lt;br /&gt;
Aprés avoir vérifié et cablé il ne reste plus qu'a mettre le code final&lt;br /&gt;
&lt;br /&gt;
Ici il n'y a que 3 taupes mais ils suffit de copier coller quelque lignes pour en ajouter d'autres&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
int cmd_taupe1 = 53;&lt;br /&gt;
int cmd_taupe2 = 51;&lt;br /&gt;
int cmd_taupe3 = 49;&lt;br /&gt;
&lt;br /&gt;
int int_cmd_taupe1 = 1;&lt;br /&gt;
int int_cmd_taupe2 = 1;&lt;br /&gt;
int int_cmd_taupe3 = 1;&lt;br /&gt;
&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
int cpt_taupe2 = 24;&lt;br /&gt;
int cpt_taupe3 = 26;&lt;br /&gt;
&lt;br /&gt;
int pts = 0;&lt;br /&gt;
&lt;br /&gt;
int start = 0;&lt;br /&gt;
int now = 0;&lt;br /&gt;
&lt;br /&gt;
int random_int = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe2, OUTPUT);&lt;br /&gt;
  pinMode(cmd_taupe3, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe2, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe3, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
  randomSeed(analogRead(0)); //Initialise le random par la lecture du bruit d'un pin analogique non branché&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  now = millis(); //On récupère le temps dans une variable&lt;br /&gt;
&lt;br /&gt;
  if (now-start &amp;gt; 1000) //Si il s'est écoulé plus de 1s&lt;br /&gt;
  {&lt;br /&gt;
    start = millis(); //On renitialise le temps de départ du timer&lt;br /&gt;
    random_int = random(1, 3); //On créer un nombre random entre 1 et le nombre de taupe (ici 3)&lt;br /&gt;
    if (int_cmd_taupe1 == 1 and random_int == 1) //Si la taupe est rentré est que le random l'indique elle sort&lt;br /&gt;
      int_cmd_taupe1 = 0;&lt;br /&gt;
    else //sinon elle rentre&lt;br /&gt;
      int_cmd_taupe1 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe2 == 1 and random_int == 2)&lt;br /&gt;
      int_cmd_taupe2 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe2 = 1;&lt;br /&gt;
&lt;br /&gt;
    if (int_cmd_taupe3 == 1 and random_int == 3)&lt;br /&gt;
      int_cmd_taupe3 = 0;&lt;br /&gt;
    else&lt;br /&gt;
      int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  //Taupe&lt;br /&gt;
  digitalWrite(cmd_taupe1, int_cmd_taupe1); //On ecrit sur les pin des selenoide les valeurs de commande de ceux ci&lt;br /&gt;
  digitalWrite(cmd_taupe2, int_cmd_taupe2);&lt;br /&gt;
  digitalWrite(cmd_taupe3, int_cmd_taupe3);&lt;br /&gt;
&lt;br /&gt;
  //LCD&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Vous avez :&amp;quot;);&lt;br /&gt;
  display.setCursor(50, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.println(&amp;quot; points&amp;quot;);&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.print(pts);&lt;br /&gt;
  display.display(); //Affiche l'ecran&lt;br /&gt;
  display.clearDisplay(); //Efface l'ecran&lt;br /&gt;
&lt;br /&gt;
  //Capteur&lt;br /&gt;
  if (digitalRead(cpt_taupe1) == 1 &amp;amp;&amp;amp; int_cmd_taupe1 == 0) //Si la taupe est relevé est que le bouton est appuyé on gagne 1 points et la taupe se baisse&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe1 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe2) == 1 &amp;amp;&amp;amp; int_cmd_taupe2 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe2 = 1;&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(cpt_taupe3) == 1 &amp;amp;&amp;amp; int_cmd_taupe3 == 0)&lt;br /&gt;
  {&lt;br /&gt;
    pts++;&lt;br /&gt;
    int_cmd_taupe3 = 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighligh&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19171</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19171"/>
				<updated>2022-01-18T16:46:48Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : /* Code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Les boutons poussoir sont montés sur de solénoïdes, ils montent et descendent.&lt;br /&gt;
Quand ils sortent, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x5)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
(Ajouter un gros plan de la rangé avec une légende)&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
Ecran LCD.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&lt;br /&gt;
Tout d'abord il faut tester les composants pour s'assurer qu'ils fonctionnent tous bien&lt;br /&gt;
&lt;br /&gt;
===Boutton===&lt;br /&gt;
&lt;br /&gt;
Ce code permet de verifier le fonctionnement des boutons&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22; //22 represente le pin ou sera branché le bouton&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT); //Cette ligne permet de passer le pin en mode entré&lt;br /&gt;
  Serial.begin(9600); //Initialise le terminal &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1)); //Ecris l'etat du pin du bouton (0 ou 1)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Selenoide===&lt;br /&gt;
&lt;br /&gt;
Ce code permettra d'activer/desactiver le selenoide 1s/1s&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cmd_taupe1 = 53; //53 represente le pin ou sera branché le bouton&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT); //Cette ligne passe le pin en sortie&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  digitalWrite(cmd_taupe1, HIGH); //Active le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
  digitalWrite(cmd_taupe1, LOW); //Desactive le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===LCD===&lt;br /&gt;
&lt;br /&gt;
Cette exemple de code provient du site electronique amateur&amp;lt;ref&amp;gt;https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&amp;lt;/ref&amp;gt; il permet de voir les possibilités offerte par le LCD&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
/*********************************************************************&lt;br /&gt;
  Démonstration d'un écran OLED i2c SH1106 avec un Arduino,&lt;br /&gt;
  en utilisant une bibliothèque d'Adafruit:&lt;br /&gt;
  https://github.com/adafruit/Adafruit-GFX-Library&lt;br /&gt;
  ...et une bibliothèque compatible par Wohho-maker:&lt;br /&gt;
  https://github.com/wonho-maker/Adafruit_SH1106&lt;br /&gt;
  &lt;br /&gt;
  Plus d'infos:&lt;br /&gt;
  https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&lt;br /&gt;
*********************************************************************/&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/* Puisque la bibliothèque est basée sur celle du SSD1306, le constructeur&lt;br /&gt;
prévoit qu'on passe le numéro de la broche RESET en argument. Mais le SH1106&lt;br /&gt;
n'a pas de broche RESET, alors on écrit n'importe quel entier (de préférence,&lt;br /&gt;
le numéro d'une broche de l'Arduino que vous n'utilisez pas). */&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
/* Définition d'une image bitmap: logo du blog Électronique en Amateur&lt;br /&gt;
  Réalisée avec l'outil en ligne  http://javl.github.io/image2cpp/  */&lt;br /&gt;
&lt;br /&gt;
const unsigned char myBitmap [] PROGMEM = {&lt;br /&gt;
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xf0, 0x00, 0x00, 0x03, 0x9f, 0xff, 0xe0, 0x00, 0x07,&lt;br /&gt;
  0x9f, 0xff, 0xfe, 0x00, 0x0f, 0xdf, 0x0f, 0xbe, 0x00, 0x1f, 0xde, 0x06, 0x0e, 0x00, 0x3f, 0xdc,&lt;br /&gt;
  0x04, 0x0e, 0x00, 0x3f, 0xdc, 0x00, 0x06, 0x00, 0x3f, 0xdc, 0x00, 0x06, 0x00, 0x3f, 0xdc, 0x60,&lt;br /&gt;
  0x06, 0x00, 0x3f, 0xdc, 0xf1, 0x8e, 0x00, 0x3f, 0xdc, 0xf3, 0xce, 0x00, 0x3f, 0xde, 0x63, 0xde,&lt;br /&gt;
  0x00, 0x3f, 0xdf, 0x09, 0x9e, 0x00, 0x3f, 0xdf, 0xfc, 0x7e, 0x00, 0x3f, 0xde, 0x7f, 0xfe, 0x00,&lt;br /&gt;
  0x3f, 0xde, 0x7f, 0xf6, 0x00, 0x3f, 0xdf, 0x3f, 0xe6, 0x00, 0x3f, 0xdf, 0x8f, 0x8e, 0x00, 0x3f,&lt;br /&gt;
  0xdf, 0xe0, 0x3e, 0x00, 0x3f, 0x00, 0x3f, 0xfe, 0x00, 0x3e, 0xff, 0xc0, 0x1e, 0x00, 0x3d, 0xff,&lt;br /&gt;
  0xff, 0xc0, 0x00, 0x3b, 0xff, 0xff, 0xfe, 0x00, 0x37, 0xff, 0xff, 0xfe, 0x00, 0x2f, 0xff, 0xff,&lt;br /&gt;
  0xfe, 0x00, 0x0e, 0x1f, 0xff, 0xfe, 0x00, 0x1f, 0x9f, 0x9f, 0xfe, 0x00, 0x3f, 0x9f, 0x9f, 0x9e,&lt;br /&gt;
  0x00, 0x3f, 0x9f, 0x9f, 0x9e, 0x00, 0x3f, 0x9f, 0x9f, 0x9e, 0x00, 0x3f, 0x9f, 0x9f, 0x9c, 0x00,&lt;br /&gt;
  0x1f, 0x9f, 0x9f, 0x98, 0x00, 0x0f, 0x9f, 0x9f, 0x90, 0x00, 0x07, 0x9f, 0x9f, 0x90, 0x00, 0x00,&lt;br /&gt;
  0x9f, 0x9f, 0x90, 0x00, 0x00, 0x9f, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91,&lt;br /&gt;
  0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91,&lt;br /&gt;
  0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90,&lt;br /&gt;
  0x00, 0x00, 0xf1, 0xd1, 0x90, 0x00, 0x00, 0x01, 0xc1, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup()   {&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  /**************** Éxcriture de texte  ***************/&lt;br /&gt;
  // taille par défaut&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Petit...&amp;quot;);&lt;br /&gt;
  display.display();  // affichage à l'écran&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  // deux fois plus gros&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextSize(2);  // taille double&lt;br /&gt;
  display.println(&amp;quot;GROS!&amp;quot;);&lt;br /&gt;
  display.display();  // affichage à l'écran&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();  // on efface tout&lt;br /&gt;
&lt;br /&gt;
  /******************** Dessiner une ligne ******************************************/&lt;br /&gt;
  // ligne horizontale au centre de l'écran&lt;br /&gt;
  display.drawLine(0, display.height() / 2, display.width() , display.height() / 2,  WHITE);&lt;br /&gt;
  // ligne verticale au centre de l'écran&lt;br /&gt;
  display.drawLine(display.width() / 2, 0, display.width() / 2, display.height(), WHITE);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /********************* Dessiner des contours de formes géométriques ******************/&lt;br /&gt;
  display.drawRect( 15, 5, 30, 15, WHITE); // contour d'un rectangle&lt;br /&gt;
  display.drawCircle(95, 15, 8, WHITE);  // contour d'un cercle&lt;br /&gt;
  display.drawRoundRect(15, 40, 30, 16, 5, WHITE);  // contour d'un rectangle à coins arrondis&lt;br /&gt;
  display.drawTriangle(95, 40, 80, 55, 110, 55, WHITE);  // contour d'un triangle&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(1000);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /******************* Dessiner des formes géométriqeus pleines *************************/&lt;br /&gt;
  display.fillRect( 15, 5, 30, 15, WHITE); // contour d'un rectangle&lt;br /&gt;
  display.fillCircle(95, 15, 8, WHITE);  // contour d'un cercle&lt;br /&gt;
  display.fillRoundRect(15, 40, 30, 16, 5, WHITE);  // contour d'un rectangle à coins arrondis&lt;br /&gt;
  display.fillTriangle(95, 40, 80, 55, 110, 55, WHITE);  // contour d'un triangle&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
  &lt;br /&gt;
  /********************** Dessiner un pixel à la fois ***********************************************/&lt;br /&gt;
  // on trace une fonction sinusoidale, point par point&lt;br /&gt;
  for (int x = 1; x &amp;lt; 128; x++) {&lt;br /&gt;
    int y = 32 + round(16.0 * sin(x / 5.0));&lt;br /&gt;
    display.drawPixel(x, y, WHITE);&lt;br /&gt;
  }&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /**************************** Dessiner une image  bitmap **********************************/&lt;br /&gt;
  // on affiche l'image stockée dans la constante myBitmap définie au début de ce fichier.&lt;br /&gt;
  display.fillRect(5,5,44,58,WHITE);  // fond blanc derrière l'image bitmap&lt;br /&gt;
  display.drawBitmap(10, 10, myBitmap, 34, 48, BLACK);&lt;br /&gt;
  display.setCursor(60, 30);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Au revoir!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Taupe===&lt;br /&gt;
&lt;br /&gt;
Aprés avoir vérifié et cablé il ne reste plus qu'a mettre le code final&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighligh&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19170</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19170"/>
				<updated>2022-01-18T16:46:10Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : /* Taupe */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Les boutons poussoir sont montés sur de solénoïdes, ils montent et descendent.&lt;br /&gt;
Quand ils sortent, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x5)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
(Ajouter un gros plan de la rangé avec une légende)&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
Ecran LCD.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&lt;br /&gt;
Tout d'abord il faut tester les composants pour s'assurer qu'ils fonctionnent tous bien&lt;br /&gt;
&lt;br /&gt;
===Boutton===&lt;br /&gt;
&lt;br /&gt;
Ce code permet de verifier le fonctionnement des boutons&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22; //22 represente le pin ou sera branché le bouton&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT); //Cette ligne permet de passer le pin en mode entré&lt;br /&gt;
  Serial.begin(9600); //Initialise le terminal &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1)); //Ecris l'etat du pin du bouton (0 ou 1)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Selenoide===&lt;br /&gt;
&lt;br /&gt;
Ce code permettra d'activer/desactiver le selenoide 1s/1s&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cmd_taupe1 = 53; //53 represente le pin ou sera branché le bouton&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT); //Cette ligne passe le pin en sortie&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  digitalWrite(cmd_taupe1, HIGH); //Active le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
  digitalWrite(cmd_taupe1, LOW); //Desactive le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===LCD===&lt;br /&gt;
&lt;br /&gt;
Cette exemple de code provient du site electronique amateur&amp;lt;ref&amp;gt;https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&amp;lt;/ref&amp;gt; il permet de voir les possibilités offerte par le LCD&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
/*********************************************************************&lt;br /&gt;
  Démonstration d'un écran OLED i2c SH1106 avec un Arduino,&lt;br /&gt;
  en utilisant une bibliothèque d'Adafruit:&lt;br /&gt;
  https://github.com/adafruit/Adafruit-GFX-Library&lt;br /&gt;
  ...et une bibliothèque compatible par Wohho-maker:&lt;br /&gt;
  https://github.com/wonho-maker/Adafruit_SH1106&lt;br /&gt;
  &lt;br /&gt;
  Plus d'infos:&lt;br /&gt;
  https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&lt;br /&gt;
*********************************************************************/&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/* Puisque la bibliothèque est basée sur celle du SSD1306, le constructeur&lt;br /&gt;
prévoit qu'on passe le numéro de la broche RESET en argument. Mais le SH1106&lt;br /&gt;
n'a pas de broche RESET, alors on écrit n'importe quel entier (de préférence,&lt;br /&gt;
le numéro d'une broche de l'Arduino que vous n'utilisez pas). */&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
/* Définition d'une image bitmap: logo du blog Électronique en Amateur&lt;br /&gt;
  Réalisée avec l'outil en ligne  http://javl.github.io/image2cpp/  */&lt;br /&gt;
&lt;br /&gt;
const unsigned char myBitmap [] PROGMEM = {&lt;br /&gt;
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xf0, 0x00, 0x00, 0x03, 0x9f, 0xff, 0xe0, 0x00, 0x07,&lt;br /&gt;
  0x9f, 0xff, 0xfe, 0x00, 0x0f, 0xdf, 0x0f, 0xbe, 0x00, 0x1f, 0xde, 0x06, 0x0e, 0x00, 0x3f, 0xdc,&lt;br /&gt;
  0x04, 0x0e, 0x00, 0x3f, 0xdc, 0x00, 0x06, 0x00, 0x3f, 0xdc, 0x00, 0x06, 0x00, 0x3f, 0xdc, 0x60,&lt;br /&gt;
  0x06, 0x00, 0x3f, 0xdc, 0xf1, 0x8e, 0x00, 0x3f, 0xdc, 0xf3, 0xce, 0x00, 0x3f, 0xde, 0x63, 0xde,&lt;br /&gt;
  0x00, 0x3f, 0xdf, 0x09, 0x9e, 0x00, 0x3f, 0xdf, 0xfc, 0x7e, 0x00, 0x3f, 0xde, 0x7f, 0xfe, 0x00,&lt;br /&gt;
  0x3f, 0xde, 0x7f, 0xf6, 0x00, 0x3f, 0xdf, 0x3f, 0xe6, 0x00, 0x3f, 0xdf, 0x8f, 0x8e, 0x00, 0x3f,&lt;br /&gt;
  0xdf, 0xe0, 0x3e, 0x00, 0x3f, 0x00, 0x3f, 0xfe, 0x00, 0x3e, 0xff, 0xc0, 0x1e, 0x00, 0x3d, 0xff,&lt;br /&gt;
  0xff, 0xc0, 0x00, 0x3b, 0xff, 0xff, 0xfe, 0x00, 0x37, 0xff, 0xff, 0xfe, 0x00, 0x2f, 0xff, 0xff,&lt;br /&gt;
  0xfe, 0x00, 0x0e, 0x1f, 0xff, 0xfe, 0x00, 0x1f, 0x9f, 0x9f, 0xfe, 0x00, 0x3f, 0x9f, 0x9f, 0x9e,&lt;br /&gt;
  0x00, 0x3f, 0x9f, 0x9f, 0x9e, 0x00, 0x3f, 0x9f, 0x9f, 0x9e, 0x00, 0x3f, 0x9f, 0x9f, 0x9c, 0x00,&lt;br /&gt;
  0x1f, 0x9f, 0x9f, 0x98, 0x00, 0x0f, 0x9f, 0x9f, 0x90, 0x00, 0x07, 0x9f, 0x9f, 0x90, 0x00, 0x00,&lt;br /&gt;
  0x9f, 0x9f, 0x90, 0x00, 0x00, 0x9f, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91,&lt;br /&gt;
  0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91,&lt;br /&gt;
  0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90,&lt;br /&gt;
  0x00, 0x00, 0xf1, 0xd1, 0x90, 0x00, 0x00, 0x01, 0xc1, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup()   {&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  /**************** Éxcriture de texte  ***************/&lt;br /&gt;
  // taille par défaut&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Petit...&amp;quot;);&lt;br /&gt;
  display.display();  // affichage à l'écran&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  // deux fois plus gros&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextSize(2);  // taille double&lt;br /&gt;
  display.println(&amp;quot;GROS!&amp;quot;);&lt;br /&gt;
  display.display();  // affichage à l'écran&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();  // on efface tout&lt;br /&gt;
&lt;br /&gt;
  /******************** Dessiner une ligne ******************************************/&lt;br /&gt;
  // ligne horizontale au centre de l'écran&lt;br /&gt;
  display.drawLine(0, display.height() / 2, display.width() , display.height() / 2,  WHITE);&lt;br /&gt;
  // ligne verticale au centre de l'écran&lt;br /&gt;
  display.drawLine(display.width() / 2, 0, display.width() / 2, display.height(), WHITE);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /********************* Dessiner des contours de formes géométriques ******************/&lt;br /&gt;
  display.drawRect( 15, 5, 30, 15, WHITE); // contour d'un rectangle&lt;br /&gt;
  display.drawCircle(95, 15, 8, WHITE);  // contour d'un cercle&lt;br /&gt;
  display.drawRoundRect(15, 40, 30, 16, 5, WHITE);  // contour d'un rectangle à coins arrondis&lt;br /&gt;
  display.drawTriangle(95, 40, 80, 55, 110, 55, WHITE);  // contour d'un triangle&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(1000);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /******************* Dessiner des formes géométriqeus pleines *************************/&lt;br /&gt;
  display.fillRect( 15, 5, 30, 15, WHITE); // contour d'un rectangle&lt;br /&gt;
  display.fillCircle(95, 15, 8, WHITE);  // contour d'un cercle&lt;br /&gt;
  display.fillRoundRect(15, 40, 30, 16, 5, WHITE);  // contour d'un rectangle à coins arrondis&lt;br /&gt;
  display.fillTriangle(95, 40, 80, 55, 110, 55, WHITE);  // contour d'un triangle&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
  &lt;br /&gt;
  /********************** Dessiner un pixel à la fois ***********************************************/&lt;br /&gt;
  // on trace une fonction sinusoidale, point par point&lt;br /&gt;
  for (int x = 1; x &amp;lt; 128; x++) {&lt;br /&gt;
    int y = 32 + round(16.0 * sin(x / 5.0));&lt;br /&gt;
    display.drawPixel(x, y, WHITE);&lt;br /&gt;
  }&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /**************************** Dessiner une image  bitmap **********************************/&lt;br /&gt;
  // on affiche l'image stockée dans la constante myBitmap définie au début de ce fichier.&lt;br /&gt;
  display.fillRect(5,5,44,58,WHITE);  // fond blanc derrière l'image bitmap&lt;br /&gt;
  display.drawBitmap(10, 10, myBitmap, 34, 48, BLACK);&lt;br /&gt;
  display.setCursor(60, 30);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Au revoir!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Taupe===&lt;br /&gt;
&lt;br /&gt;
Aprés avoir vérifié et cablé il ne reste plus qu'a mettre le code final&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19167</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19167"/>
				<updated>2022-01-18T16:40:08Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : /* LCD */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Les boutons poussoir sont montés sur de solénoïdes, ils montent et descendent.&lt;br /&gt;
Quand ils sortent, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x5)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
(Ajouter un gros plan de la rangé avec une légende)&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
Ecran LCD.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&lt;br /&gt;
Tout d'abord il faut tester les composants pour s'assurer qu'ils fonctionnent tous bien&lt;br /&gt;
&lt;br /&gt;
===Boutton===&lt;br /&gt;
&lt;br /&gt;
Ce code permet de verifier le fonctionnement des boutons&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22; //22 represente le pin ou sera branché le bouton&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT); //Cette ligne permet de passer le pin en mode entré&lt;br /&gt;
  Serial.begin(9600); //Initialise le terminal &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1)); //Ecris l'etat du pin du bouton (0 ou 1)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Selenoide===&lt;br /&gt;
&lt;br /&gt;
Ce code permettra d'activer/desactiver le selenoide 1s/1s&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cmd_taupe1 = 53; //53 represente le pin ou sera branché le bouton&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT); //Cette ligne passe le pin en sortie&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  digitalWrite(cmd_taupe1, HIGH); //Active le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
  digitalWrite(cmd_taupe1, LOW); //Desactive le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===LCD===&lt;br /&gt;
&lt;br /&gt;
Cette exemple de code provient du site electronique amateur&amp;lt;ref&amp;gt;https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&amp;lt;/ref&amp;gt; il permet de voir les possibilités offerte par le LCD&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
/*********************************************************************&lt;br /&gt;
  Démonstration d'un écran OLED i2c SH1106 avec un Arduino,&lt;br /&gt;
  en utilisant une bibliothèque d'Adafruit:&lt;br /&gt;
  https://github.com/adafruit/Adafruit-GFX-Library&lt;br /&gt;
  ...et une bibliothèque compatible par Wohho-maker:&lt;br /&gt;
  https://github.com/wonho-maker/Adafruit_SH1106&lt;br /&gt;
  &lt;br /&gt;
  Plus d'infos:&lt;br /&gt;
  https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&lt;br /&gt;
*********************************************************************/&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/* Puisque la bibliothèque est basée sur celle du SSD1306, le constructeur&lt;br /&gt;
prévoit qu'on passe le numéro de la broche RESET en argument. Mais le SH1106&lt;br /&gt;
n'a pas de broche RESET, alors on écrit n'importe quel entier (de préférence,&lt;br /&gt;
le numéro d'une broche de l'Arduino que vous n'utilisez pas). */&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
/* Définition d'une image bitmap: logo du blog Électronique en Amateur&lt;br /&gt;
  Réalisée avec l'outil en ligne  http://javl.github.io/image2cpp/  */&lt;br /&gt;
&lt;br /&gt;
const unsigned char myBitmap [] PROGMEM = {&lt;br /&gt;
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xf0, 0x00, 0x00, 0x03, 0x9f, 0xff, 0xe0, 0x00, 0x07,&lt;br /&gt;
  0x9f, 0xff, 0xfe, 0x00, 0x0f, 0xdf, 0x0f, 0xbe, 0x00, 0x1f, 0xde, 0x06, 0x0e, 0x00, 0x3f, 0xdc,&lt;br /&gt;
  0x04, 0x0e, 0x00, 0x3f, 0xdc, 0x00, 0x06, 0x00, 0x3f, 0xdc, 0x00, 0x06, 0x00, 0x3f, 0xdc, 0x60,&lt;br /&gt;
  0x06, 0x00, 0x3f, 0xdc, 0xf1, 0x8e, 0x00, 0x3f, 0xdc, 0xf3, 0xce, 0x00, 0x3f, 0xde, 0x63, 0xde,&lt;br /&gt;
  0x00, 0x3f, 0xdf, 0x09, 0x9e, 0x00, 0x3f, 0xdf, 0xfc, 0x7e, 0x00, 0x3f, 0xde, 0x7f, 0xfe, 0x00,&lt;br /&gt;
  0x3f, 0xde, 0x7f, 0xf6, 0x00, 0x3f, 0xdf, 0x3f, 0xe6, 0x00, 0x3f, 0xdf, 0x8f, 0x8e, 0x00, 0x3f,&lt;br /&gt;
  0xdf, 0xe0, 0x3e, 0x00, 0x3f, 0x00, 0x3f, 0xfe, 0x00, 0x3e, 0xff, 0xc0, 0x1e, 0x00, 0x3d, 0xff,&lt;br /&gt;
  0xff, 0xc0, 0x00, 0x3b, 0xff, 0xff, 0xfe, 0x00, 0x37, 0xff, 0xff, 0xfe, 0x00, 0x2f, 0xff, 0xff,&lt;br /&gt;
  0xfe, 0x00, 0x0e, 0x1f, 0xff, 0xfe, 0x00, 0x1f, 0x9f, 0x9f, 0xfe, 0x00, 0x3f, 0x9f, 0x9f, 0x9e,&lt;br /&gt;
  0x00, 0x3f, 0x9f, 0x9f, 0x9e, 0x00, 0x3f, 0x9f, 0x9f, 0x9e, 0x00, 0x3f, 0x9f, 0x9f, 0x9c, 0x00,&lt;br /&gt;
  0x1f, 0x9f, 0x9f, 0x98, 0x00, 0x0f, 0x9f, 0x9f, 0x90, 0x00, 0x07, 0x9f, 0x9f, 0x90, 0x00, 0x00,&lt;br /&gt;
  0x9f, 0x9f, 0x90, 0x00, 0x00, 0x9f, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91,&lt;br /&gt;
  0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91,&lt;br /&gt;
  0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90,&lt;br /&gt;
  0x00, 0x00, 0xf1, 0xd1, 0x90, 0x00, 0x00, 0x01, 0xc1, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup()   {&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  /**************** Éxcriture de texte  ***************/&lt;br /&gt;
  // taille par défaut&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Petit...&amp;quot;);&lt;br /&gt;
  display.display();  // affichage à l'écran&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  // deux fois plus gros&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextSize(2);  // taille double&lt;br /&gt;
  display.println(&amp;quot;GROS!&amp;quot;);&lt;br /&gt;
  display.display();  // affichage à l'écran&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();  // on efface tout&lt;br /&gt;
&lt;br /&gt;
  /******************** Dessiner une ligne ******************************************/&lt;br /&gt;
  // ligne horizontale au centre de l'écran&lt;br /&gt;
  display.drawLine(0, display.height() / 2, display.width() , display.height() / 2,  WHITE);&lt;br /&gt;
  // ligne verticale au centre de l'écran&lt;br /&gt;
  display.drawLine(display.width() / 2, 0, display.width() / 2, display.height(), WHITE);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /********************* Dessiner des contours de formes géométriques ******************/&lt;br /&gt;
  display.drawRect( 15, 5, 30, 15, WHITE); // contour d'un rectangle&lt;br /&gt;
  display.drawCircle(95, 15, 8, WHITE);  // contour d'un cercle&lt;br /&gt;
  display.drawRoundRect(15, 40, 30, 16, 5, WHITE);  // contour d'un rectangle à coins arrondis&lt;br /&gt;
  display.drawTriangle(95, 40, 80, 55, 110, 55, WHITE);  // contour d'un triangle&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(1000);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /******************* Dessiner des formes géométriqeus pleines *************************/&lt;br /&gt;
  display.fillRect( 15, 5, 30, 15, WHITE); // contour d'un rectangle&lt;br /&gt;
  display.fillCircle(95, 15, 8, WHITE);  // contour d'un cercle&lt;br /&gt;
  display.fillRoundRect(15, 40, 30, 16, 5, WHITE);  // contour d'un rectangle à coins arrondis&lt;br /&gt;
  display.fillTriangle(95, 40, 80, 55, 110, 55, WHITE);  // contour d'un triangle&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
  &lt;br /&gt;
  /********************** Dessiner un pixel à la fois ***********************************************/&lt;br /&gt;
  // on trace une fonction sinusoidale, point par point&lt;br /&gt;
  for (int x = 1; x &amp;lt; 128; x++) {&lt;br /&gt;
    int y = 32 + round(16.0 * sin(x / 5.0));&lt;br /&gt;
    display.drawPixel(x, y, WHITE);&lt;br /&gt;
  }&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /**************************** Dessiner une image  bitmap **********************************/&lt;br /&gt;
  // on affiche l'image stockée dans la constante myBitmap définie au début de ce fichier.&lt;br /&gt;
  display.fillRect(5,5,44,58,WHITE);  // fond blanc derrière l'image bitmap&lt;br /&gt;
  display.drawBitmap(10, 10, myBitmap, 34, 48, BLACK);&lt;br /&gt;
  display.setCursor(60, 30);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Au revoir!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Taupe===&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19166</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19166"/>
				<updated>2022-01-18T16:38:43Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : /* LCD */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Les boutons poussoir sont montés sur de solénoïdes, ils montent et descendent.&lt;br /&gt;
Quand ils sortent, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x5)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
(Ajouter un gros plan de la rangé avec une légende)&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
Ecran LCD.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&lt;br /&gt;
Tout d'abord il faut tester les composants pour s'assurer qu'ils fonctionnent tous bien&lt;br /&gt;
&lt;br /&gt;
===Boutton===&lt;br /&gt;
&lt;br /&gt;
Ce code permet de verifier le fonctionnement des boutons&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22; //22 represente le pin ou sera branché le bouton&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT); //Cette ligne permet de passer le pin en mode entré&lt;br /&gt;
  Serial.begin(9600); //Initialise le terminal &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1)); //Ecris l'etat du pin du bouton (0 ou 1)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Selenoide===&lt;br /&gt;
&lt;br /&gt;
Ce code permettra d'activer/desactiver le selenoide 1s/1s&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cmd_taupe1 = 53; //53 represente le pin ou sera branché le bouton&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT); //Cette ligne passe le pin en sortie&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  digitalWrite(cmd_taupe1, HIGH); //Active le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
  digitalWrite(cmd_taupe1, LOW); //Desactive le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===LCD===&lt;br /&gt;
&lt;br /&gt;
Cette exemple de code provient du site electronique amateur&amp;lt;ref&amp;gt;https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&amp;lt;/ref&amp;gt; il permet de voir les possibilités offerte par le LCD&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
/*********************************************************************&lt;br /&gt;
  Démonstration d'un écran OLED i2c SH1106 avec un Arduino,&lt;br /&gt;
  en utilisant une bibliothèque d'Adafruit:&lt;br /&gt;
  https://github.com/adafruit/Adafruit-GFX-Library&lt;br /&gt;
  ...et une bibliothèque compatible par Wohho-maker:&lt;br /&gt;
  https://github.com/wonho-maker/Adafruit_SH1106&lt;br /&gt;
  &lt;br /&gt;
  Plus d'infos:&lt;br /&gt;
  https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&lt;br /&gt;
*********************************************************************/&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/* Puisque la bibliothèque est basée sur celle du SSD1306, le constructeur&lt;br /&gt;
prévoit qu'on passe le numéro de la broche RESET en argument. Mais le SH1106&lt;br /&gt;
n'a pas de broche RESET, alors on écrit n'importe quel entier (de préférence,&lt;br /&gt;
le numéro d'une broche de l'Arduino que vous n'utilisez pas). */&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
/* Définition d'une image bitmap: logo du blog Électronique en Amateur&lt;br /&gt;
  Réalisée avec l'outil en ligne  http://javl.github.io/image2cpp/  */&lt;br /&gt;
&lt;br /&gt;
const unsigned char myBitmap [] PROGMEM = {&lt;br /&gt;
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xf0, 0x00, 0x00, 0x03, 0x9f, 0xff, 0xe0, 0x00, 0x07,&lt;br /&gt;
  0x9f, 0xff, 0xfe, 0x00, 0x0f, 0xdf, 0x0f, 0xbe, 0x00, 0x1f, 0xde, 0x06, 0x0e, 0x00, 0x3f, 0xdc,&lt;br /&gt;
  0x04, 0x0e, 0x00, 0x3f, 0xdc, 0x00, 0x06, 0x00, 0x3f, 0xdc, 0x00, 0x06, 0x00, 0x3f, 0xdc, 0x60,&lt;br /&gt;
  0x06, 0x00, 0x3f, 0xdc, 0xf1, 0x8e, 0x00, 0x3f, 0xdc, 0xf3, 0xce, 0x00, 0x3f, 0xde, 0x63, 0xde,&lt;br /&gt;
  0x00, 0x3f, 0xdf, 0x09, 0x9e, 0x00, 0x3f, 0xdf, 0xfc, 0x7e, 0x00, 0x3f, 0xde, 0x7f, 0xfe, 0x00,&lt;br /&gt;
  0x3f, 0xde, 0x7f, 0xf6, 0x00, 0x3f, 0xdf, 0x3f, 0xe6, 0x00, 0x3f, 0xdf, 0x8f, 0x8e, 0x00, 0x3f,&lt;br /&gt;
  0xdf, 0xe0, 0x3e, 0x00, 0x3f, 0x00, 0x3f, 0xfe, 0x00, 0x3e, 0xff, 0xc0, 0x1e, 0x00, 0x3d, 0xff,&lt;br /&gt;
  0xff, 0xc0, 0x00, 0x3b, 0xff, 0xff, 0xfe, 0x00, 0x37, 0xff, 0xff, 0xfe, 0x00, 0x2f, 0xff, 0xff,&lt;br /&gt;
  0xfe, 0x00, 0x0e, 0x1f, 0xff, 0xfe, 0x00, 0x1f, 0x9f, 0x9f, 0xfe, 0x00, 0x3f, 0x9f, 0x9f, 0x9e,&lt;br /&gt;
  0x00, 0x3f, 0x9f, 0x9f, 0x9e, 0x00, 0x3f, 0x9f, 0x9f, 0x9e, 0x00, 0x3f, 0x9f, 0x9f, 0x9c, 0x00,&lt;br /&gt;
  0x1f, 0x9f, 0x9f, 0x98, 0x00, 0x0f, 0x9f, 0x9f, 0x90, 0x00, 0x07, 0x9f, 0x9f, 0x90, 0x00, 0x00,&lt;br /&gt;
  0x9f, 0x9f, 0x90, 0x00, 0x00, 0x9f, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91,&lt;br /&gt;
  0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91,&lt;br /&gt;
  0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90,&lt;br /&gt;
  0x00, 0x00, 0xf1, 0xd1, 0x90, 0x00, 0x00, 0x01, 0xc1, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup()   {&lt;br /&gt;
&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /**************** Éxcriture de texte  ***************/&lt;br /&gt;
&lt;br /&gt;
  // taille par défaut&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Petit...&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  display.display();  // affichage à l'écran&lt;br /&gt;
  delay(1000);&lt;br /&gt;
&lt;br /&gt;
  // deux fois plus gros&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextSize(2);  // taille double&lt;br /&gt;
  display.println(&amp;quot;GROS!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  display.display();  // affichage à l'écran&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();  // on efface tout&lt;br /&gt;
&lt;br /&gt;
  /******************** Dessiner une ligne ******************************************/&lt;br /&gt;
&lt;br /&gt;
  // ligne horizontale au centre de l'écran&lt;br /&gt;
  display.drawLine(0, display.height() / 2, display.width() , display.height() / 2,  WHITE);&lt;br /&gt;
&lt;br /&gt;
  // ligne verticale au centre de l'écran&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(display.width() / 2, 0, display.width() / 2, display.height(), WHITE);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /********************* Dessiner des contours de formes géométriques ******************/&lt;br /&gt;
&lt;br /&gt;
  display.drawRect( 15, 5, 30, 15, WHITE); // contour d'un rectangle&lt;br /&gt;
  display.drawCircle(95, 15, 8, WHITE);  // contour d'un cercle&lt;br /&gt;
  display.drawRoundRect(15, 40, 30, 16, 5, WHITE);  // contour d'un rectangle à coins arrondis&lt;br /&gt;
  display.drawTriangle(95, 40, 80, 55, 110, 55, WHITE);  // contour d'un triangle&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(1000);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /******************* Dessiner des formes géométriqeus pleines *************************/&lt;br /&gt;
&lt;br /&gt;
  display.fillRect( 15, 5, 30, 15, WHITE); // contour d'un rectangle&lt;br /&gt;
  display.fillCircle(95, 15, 8, WHITE);  // contour d'un cercle&lt;br /&gt;
  display.fillRoundRect(15, 40, 30, 16, 5, WHITE);  // contour d'un rectangle à coins arrondis&lt;br /&gt;
  display.fillTriangle(95, 40, 80, 55, 110, 55, WHITE);  // contour d'un triangle&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
  &lt;br /&gt;
  /********************** Dessiner un pixel à la fois ***********************************************/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  // on trace une fonction sinusoidale, point par point&lt;br /&gt;
  for (int x = 1; x &amp;lt; 128; x++) {&lt;br /&gt;
    int y = 32 + round(16.0 * sin(x / 5.0));&lt;br /&gt;
    display.drawPixel(x, y, WHITE);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /**************************** Dessiner une image  bitmap **********************************/&lt;br /&gt;
&lt;br /&gt;
  // on affiche l'image stockée dans la constante myBitmap définie au début de ce fichier.&lt;br /&gt;
&lt;br /&gt;
  display.fillRect(5,5,44,58,WHITE);  // fond blanc derrière l'image bitmap&lt;br /&gt;
  &lt;br /&gt;
  display.drawBitmap(10, 10, myBitmap, 34, 48, BLACK);&lt;br /&gt;
&lt;br /&gt;
  display.setCursor(60, 30);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Au revoir!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Taupe===&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19165</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19165"/>
				<updated>2022-01-18T16:37:49Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : /* LCD */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Les boutons poussoir sont montés sur de solénoïdes, ils montent et descendent.&lt;br /&gt;
Quand ils sortent, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x5)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
(Ajouter un gros plan de la rangé avec une légende)&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
Ecran LCD.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&lt;br /&gt;
Tout d'abord il faut tester les composants pour s'assurer qu'ils fonctionnent tous bien&lt;br /&gt;
&lt;br /&gt;
===Boutton===&lt;br /&gt;
&lt;br /&gt;
Ce code permet de verifier le fonctionnement des boutons&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22; //22 represente le pin ou sera branché le bouton&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT); //Cette ligne permet de passer le pin en mode entré&lt;br /&gt;
  Serial.begin(9600); //Initialise le terminal &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1)); //Ecris l'etat du pin du bouton (0 ou 1)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Selenoide===&lt;br /&gt;
&lt;br /&gt;
Ce code permettra d'activer/desactiver le selenoide 1s/1s&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cmd_taupe1 = 53; //53 represente le pin ou sera branché le bouton&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT); //Cette ligne passe le pin en sortie&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  digitalWrite(cmd_taupe1, HIGH); //Active le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
  digitalWrite(cmd_taupe1, LOW); //Desactive le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===LCD===&lt;br /&gt;
&lt;br /&gt;
Cette exemple de code provient du site electroniqueamateur&amp;lt;ref&amp;gt;https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
/*********************************************************************&lt;br /&gt;
  Démonstration d'un écran OLED i2c SH1106 avec un Arduino,&lt;br /&gt;
  en utilisant une bibliothèque d'Adafruit:&lt;br /&gt;
  https://github.com/adafruit/Adafruit-GFX-Library&lt;br /&gt;
  ...et une bibliothèque compatible par Wohho-maker:&lt;br /&gt;
  https://github.com/wonho-maker/Adafruit_SH1106&lt;br /&gt;
  &lt;br /&gt;
  Plus d'infos:&lt;br /&gt;
  https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&lt;br /&gt;
*********************************************************************/&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/* Puisque la bibliothèque est basée sur celle du SSD1306, le constructeur&lt;br /&gt;
prévoit qu'on passe le numéro de la broche RESET en argument. Mais le SH1106&lt;br /&gt;
n'a pas de broche RESET, alors on écrit n'importe quel entier (de préférence,&lt;br /&gt;
le numéro d'une broche de l'Arduino que vous n'utilisez pas). */&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
/* Définition d'une image bitmap: logo du blog Électronique en Amateur&lt;br /&gt;
  Réalisée avec l'outil en ligne  http://javl.github.io/image2cpp/  */&lt;br /&gt;
&lt;br /&gt;
const unsigned char myBitmap [] PROGMEM = {&lt;br /&gt;
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xf0, 0x00, 0x00, 0x03, 0x9f, 0xff, 0xe0, 0x00, 0x07,&lt;br /&gt;
  0x9f, 0xff, 0xfe, 0x00, 0x0f, 0xdf, 0x0f, 0xbe, 0x00, 0x1f, 0xde, 0x06, 0x0e, 0x00, 0x3f, 0xdc,&lt;br /&gt;
  0x04, 0x0e, 0x00, 0x3f, 0xdc, 0x00, 0x06, 0x00, 0x3f, 0xdc, 0x00, 0x06, 0x00, 0x3f, 0xdc, 0x60,&lt;br /&gt;
  0x06, 0x00, 0x3f, 0xdc, 0xf1, 0x8e, 0x00, 0x3f, 0xdc, 0xf3, 0xce, 0x00, 0x3f, 0xde, 0x63, 0xde,&lt;br /&gt;
  0x00, 0x3f, 0xdf, 0x09, 0x9e, 0x00, 0x3f, 0xdf, 0xfc, 0x7e, 0x00, 0x3f, 0xde, 0x7f, 0xfe, 0x00,&lt;br /&gt;
  0x3f, 0xde, 0x7f, 0xf6, 0x00, 0x3f, 0xdf, 0x3f, 0xe6, 0x00, 0x3f, 0xdf, 0x8f, 0x8e, 0x00, 0x3f,&lt;br /&gt;
  0xdf, 0xe0, 0x3e, 0x00, 0x3f, 0x00, 0x3f, 0xfe, 0x00, 0x3e, 0xff, 0xc0, 0x1e, 0x00, 0x3d, 0xff,&lt;br /&gt;
  0xff, 0xc0, 0x00, 0x3b, 0xff, 0xff, 0xfe, 0x00, 0x37, 0xff, 0xff, 0xfe, 0x00, 0x2f, 0xff, 0xff,&lt;br /&gt;
  0xfe, 0x00, 0x0e, 0x1f, 0xff, 0xfe, 0x00, 0x1f, 0x9f, 0x9f, 0xfe, 0x00, 0x3f, 0x9f, 0x9f, 0x9e,&lt;br /&gt;
  0x00, 0x3f, 0x9f, 0x9f, 0x9e, 0x00, 0x3f, 0x9f, 0x9f, 0x9e, 0x00, 0x3f, 0x9f, 0x9f, 0x9c, 0x00,&lt;br /&gt;
  0x1f, 0x9f, 0x9f, 0x98, 0x00, 0x0f, 0x9f, 0x9f, 0x90, 0x00, 0x07, 0x9f, 0x9f, 0x90, 0x00, 0x00,&lt;br /&gt;
  0x9f, 0x9f, 0x90, 0x00, 0x00, 0x9f, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91,&lt;br /&gt;
  0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91,&lt;br /&gt;
  0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90,&lt;br /&gt;
  0x00, 0x00, 0xf1, 0xd1, 0x90, 0x00, 0x00, 0x01, 0xc1, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup()   {&lt;br /&gt;
&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /**************** Éxcriture de texte  ***************/&lt;br /&gt;
&lt;br /&gt;
  // taille par défaut&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Petit...&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  display.display();  // affichage à l'écran&lt;br /&gt;
  delay(1000);&lt;br /&gt;
&lt;br /&gt;
  // deux fois plus gros&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextSize(2);  // taille double&lt;br /&gt;
  display.println(&amp;quot;GROS!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  display.display();  // affichage à l'écran&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();  // on efface tout&lt;br /&gt;
&lt;br /&gt;
  /******************** Dessiner une ligne ******************************************/&lt;br /&gt;
&lt;br /&gt;
  // ligne horizontale au centre de l'écran&lt;br /&gt;
  display.drawLine(0, display.height() / 2, display.width() , display.height() / 2,  WHITE);&lt;br /&gt;
&lt;br /&gt;
  // ligne verticale au centre de l'écran&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(display.width() / 2, 0, display.width() / 2, display.height(), WHITE);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /********************* Dessiner des contours de formes géométriques ******************/&lt;br /&gt;
&lt;br /&gt;
  display.drawRect( 15, 5, 30, 15, WHITE); // contour d'un rectangle&lt;br /&gt;
  display.drawCircle(95, 15, 8, WHITE);  // contour d'un cercle&lt;br /&gt;
  display.drawRoundRect(15, 40, 30, 16, 5, WHITE);  // contour d'un rectangle à coins arrondis&lt;br /&gt;
  display.drawTriangle(95, 40, 80, 55, 110, 55, WHITE);  // contour d'un triangle&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(1000);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /******************* Dessiner des formes géométriqeus pleines *************************/&lt;br /&gt;
&lt;br /&gt;
  display.fillRect( 15, 5, 30, 15, WHITE); // contour d'un rectangle&lt;br /&gt;
  display.fillCircle(95, 15, 8, WHITE);  // contour d'un cercle&lt;br /&gt;
  display.fillRoundRect(15, 40, 30, 16, 5, WHITE);  // contour d'un rectangle à coins arrondis&lt;br /&gt;
  display.fillTriangle(95, 40, 80, 55, 110, 55, WHITE);  // contour d'un triangle&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
  &lt;br /&gt;
  /********************** Dessiner un pixel à la fois ***********************************************/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  // on trace une fonction sinusoidale, point par point&lt;br /&gt;
  for (int x = 1; x &amp;lt; 128; x++) {&lt;br /&gt;
    int y = 32 + round(16.0 * sin(x / 5.0));&lt;br /&gt;
    display.drawPixel(x, y, WHITE);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /**************************** Dessiner une image  bitmap **********************************/&lt;br /&gt;
&lt;br /&gt;
  // on affiche l'image stockée dans la constante myBitmap définie au début de ce fichier.&lt;br /&gt;
&lt;br /&gt;
  display.fillRect(5,5,44,58,WHITE);  // fond blanc derrière l'image bitmap&lt;br /&gt;
  &lt;br /&gt;
  display.drawBitmap(10, 10, myBitmap, 34, 48, BLACK);&lt;br /&gt;
&lt;br /&gt;
  display.setCursor(60, 30);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Au revoir!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Taupe===&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19164</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19164"/>
				<updated>2022-01-18T16:37:03Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : /* LCD */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Les boutons poussoir sont montés sur de solénoïdes, ils montent et descendent.&lt;br /&gt;
Quand ils sortent, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x5)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
(Ajouter un gros plan de la rangé avec une légende)&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
Ecran LCD.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&lt;br /&gt;
Tout d'abord il faut tester les composants pour s'assurer qu'ils fonctionnent tous bien&lt;br /&gt;
&lt;br /&gt;
===Boutton===&lt;br /&gt;
&lt;br /&gt;
Ce code permet de verifier le fonctionnement des boutons&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22; //22 represente le pin ou sera branché le bouton&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT); //Cette ligne permet de passer le pin en mode entré&lt;br /&gt;
  Serial.begin(9600); //Initialise le terminal &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1)); //Ecris l'etat du pin du bouton (0 ou 1)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Selenoide===&lt;br /&gt;
&lt;br /&gt;
Ce code permettra d'activer/desactiver le selenoide 1s/1s&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cmd_taupe1 = 53; //53 represente le pin ou sera branché le bouton&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT); //Cette ligne passe le pin en sortie&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  digitalWrite(cmd_taupe1, HIGH); //Active le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
  digitalWrite(cmd_taupe1, LOW); //Desactive le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===LCD===&lt;br /&gt;
&lt;br /&gt;
Cette exemple de code provient du site &amp;lt;ref&amp;gt;https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
/*********************************************************************&lt;br /&gt;
  Démonstration d'un écran OLED i2c SH1106 avec un Arduino,&lt;br /&gt;
  en utilisant une bibliothèque d'Adafruit:&lt;br /&gt;
  https://github.com/adafruit/Adafruit-GFX-Library&lt;br /&gt;
  ...et une bibliothèque compatible par Wohho-maker:&lt;br /&gt;
  https://github.com/wonho-maker/Adafruit_SH1106&lt;br /&gt;
  &lt;br /&gt;
  Plus d'infos:&lt;br /&gt;
  https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&lt;br /&gt;
*********************************************************************/&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/* Puisque la bibliothèque est basée sur celle du SSD1306, le constructeur&lt;br /&gt;
prévoit qu'on passe le numéro de la broche RESET en argument. Mais le SH1106&lt;br /&gt;
n'a pas de broche RESET, alors on écrit n'importe quel entier (de préférence,&lt;br /&gt;
le numéro d'une broche de l'Arduino que vous n'utilisez pas). */&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
/* Définition d'une image bitmap: logo du blog Électronique en Amateur&lt;br /&gt;
  Réalisée avec l'outil en ligne  http://javl.github.io/image2cpp/  */&lt;br /&gt;
&lt;br /&gt;
const unsigned char myBitmap [] PROGMEM = {&lt;br /&gt;
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xf0, 0x00, 0x00, 0x03, 0x9f, 0xff, 0xe0, 0x00, 0x07,&lt;br /&gt;
  0x9f, 0xff, 0xfe, 0x00, 0x0f, 0xdf, 0x0f, 0xbe, 0x00, 0x1f, 0xde, 0x06, 0x0e, 0x00, 0x3f, 0xdc,&lt;br /&gt;
  0x04, 0x0e, 0x00, 0x3f, 0xdc, 0x00, 0x06, 0x00, 0x3f, 0xdc, 0x00, 0x06, 0x00, 0x3f, 0xdc, 0x60,&lt;br /&gt;
  0x06, 0x00, 0x3f, 0xdc, 0xf1, 0x8e, 0x00, 0x3f, 0xdc, 0xf3, 0xce, 0x00, 0x3f, 0xde, 0x63, 0xde,&lt;br /&gt;
  0x00, 0x3f, 0xdf, 0x09, 0x9e, 0x00, 0x3f, 0xdf, 0xfc, 0x7e, 0x00, 0x3f, 0xde, 0x7f, 0xfe, 0x00,&lt;br /&gt;
  0x3f, 0xde, 0x7f, 0xf6, 0x00, 0x3f, 0xdf, 0x3f, 0xe6, 0x00, 0x3f, 0xdf, 0x8f, 0x8e, 0x00, 0x3f,&lt;br /&gt;
  0xdf, 0xe0, 0x3e, 0x00, 0x3f, 0x00, 0x3f, 0xfe, 0x00, 0x3e, 0xff, 0xc0, 0x1e, 0x00, 0x3d, 0xff,&lt;br /&gt;
  0xff, 0xc0, 0x00, 0x3b, 0xff, 0xff, 0xfe, 0x00, 0x37, 0xff, 0xff, 0xfe, 0x00, 0x2f, 0xff, 0xff,&lt;br /&gt;
  0xfe, 0x00, 0x0e, 0x1f, 0xff, 0xfe, 0x00, 0x1f, 0x9f, 0x9f, 0xfe, 0x00, 0x3f, 0x9f, 0x9f, 0x9e,&lt;br /&gt;
  0x00, 0x3f, 0x9f, 0x9f, 0x9e, 0x00, 0x3f, 0x9f, 0x9f, 0x9e, 0x00, 0x3f, 0x9f, 0x9f, 0x9c, 0x00,&lt;br /&gt;
  0x1f, 0x9f, 0x9f, 0x98, 0x00, 0x0f, 0x9f, 0x9f, 0x90, 0x00, 0x07, 0x9f, 0x9f, 0x90, 0x00, 0x00,&lt;br /&gt;
  0x9f, 0x9f, 0x90, 0x00, 0x00, 0x9f, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91,&lt;br /&gt;
  0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91,&lt;br /&gt;
  0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90,&lt;br /&gt;
  0x00, 0x00, 0xf1, 0xd1, 0x90, 0x00, 0x00, 0x01, 0xc1, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup()   {&lt;br /&gt;
&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /**************** Éxcriture de texte  ***************/&lt;br /&gt;
&lt;br /&gt;
  // taille par défaut&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Petit...&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  display.display();  // affichage à l'écran&lt;br /&gt;
  delay(1000);&lt;br /&gt;
&lt;br /&gt;
  // deux fois plus gros&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextSize(2);  // taille double&lt;br /&gt;
  display.println(&amp;quot;GROS!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  display.display();  // affichage à l'écran&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();  // on efface tout&lt;br /&gt;
&lt;br /&gt;
  /******************** Dessiner une ligne ******************************************/&lt;br /&gt;
&lt;br /&gt;
  // ligne horizontale au centre de l'écran&lt;br /&gt;
  display.drawLine(0, display.height() / 2, display.width() , display.height() / 2,  WHITE);&lt;br /&gt;
&lt;br /&gt;
  // ligne verticale au centre de l'écran&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(display.width() / 2, 0, display.width() / 2, display.height(), WHITE);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /********************* Dessiner des contours de formes géométriques ******************/&lt;br /&gt;
&lt;br /&gt;
  display.drawRect( 15, 5, 30, 15, WHITE); // contour d'un rectangle&lt;br /&gt;
  display.drawCircle(95, 15, 8, WHITE);  // contour d'un cercle&lt;br /&gt;
  display.drawRoundRect(15, 40, 30, 16, 5, WHITE);  // contour d'un rectangle à coins arrondis&lt;br /&gt;
  display.drawTriangle(95, 40, 80, 55, 110, 55, WHITE);  // contour d'un triangle&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(1000);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /******************* Dessiner des formes géométriqeus pleines *************************/&lt;br /&gt;
&lt;br /&gt;
  display.fillRect( 15, 5, 30, 15, WHITE); // contour d'un rectangle&lt;br /&gt;
  display.fillCircle(95, 15, 8, WHITE);  // contour d'un cercle&lt;br /&gt;
  display.fillRoundRect(15, 40, 30, 16, 5, WHITE);  // contour d'un rectangle à coins arrondis&lt;br /&gt;
  display.fillTriangle(95, 40, 80, 55, 110, 55, WHITE);  // contour d'un triangle&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
  &lt;br /&gt;
  /********************** Dessiner un pixel à la fois ***********************************************/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  // on trace une fonction sinusoidale, point par point&lt;br /&gt;
  for (int x = 1; x &amp;lt; 128; x++) {&lt;br /&gt;
    int y = 32 + round(16.0 * sin(x / 5.0));&lt;br /&gt;
    display.drawPixel(x, y, WHITE);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /**************************** Dessiner une image  bitmap **********************************/&lt;br /&gt;
&lt;br /&gt;
  // on affiche l'image stockée dans la constante myBitmap définie au début de ce fichier.&lt;br /&gt;
&lt;br /&gt;
  display.fillRect(5,5,44,58,WHITE);  // fond blanc derrière l'image bitmap&lt;br /&gt;
  &lt;br /&gt;
  display.drawBitmap(10, 10, myBitmap, 34, 48, BLACK);&lt;br /&gt;
&lt;br /&gt;
  display.setCursor(60, 30);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Au revoir!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Taupe===&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19163</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19163"/>
				<updated>2022-01-18T16:36:15Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : /* LCD */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Les boutons poussoir sont montés sur de solénoïdes, ils montent et descendent.&lt;br /&gt;
Quand ils sortent, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x5)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
(Ajouter un gros plan de la rangé avec une légende)&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
Ecran LCD.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&lt;br /&gt;
Tout d'abord il faut tester les composants pour s'assurer qu'ils fonctionnent tous bien&lt;br /&gt;
&lt;br /&gt;
===Boutton===&lt;br /&gt;
&lt;br /&gt;
Ce code permet de verifier le fonctionnement des boutons&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22; //22 represente le pin ou sera branché le bouton&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT); //Cette ligne permet de passer le pin en mode entré&lt;br /&gt;
  Serial.begin(9600); //Initialise le terminal &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1)); //Ecris l'etat du pin du bouton (0 ou 1)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Selenoide===&lt;br /&gt;
&lt;br /&gt;
Ce code permettra d'activer/desactiver le selenoide 1s/1s&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cmd_taupe1 = 53; //53 represente le pin ou sera branché le bouton&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT); //Cette ligne passe le pin en sortie&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  digitalWrite(cmd_taupe1, HIGH); //Active le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
  digitalWrite(cmd_taupe1, LOW); //Desactive le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===LCD===&lt;br /&gt;
&lt;br /&gt;
Cette exemple de code provient du site &amp;lt;html&amp;gt;https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
/*********************************************************************&lt;br /&gt;
  Démonstration d'un écran OLED i2c SH1106 avec un Arduino,&lt;br /&gt;
  en utilisant une bibliothèque d'Adafruit:&lt;br /&gt;
  https://github.com/adafruit/Adafruit-GFX-Library&lt;br /&gt;
  ...et une bibliothèque compatible par Wohho-maker:&lt;br /&gt;
  https://github.com/wonho-maker/Adafruit_SH1106&lt;br /&gt;
  &lt;br /&gt;
  Plus d'infos:&lt;br /&gt;
  https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&lt;br /&gt;
*********************************************************************/&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/* Puisque la bibliothèque est basée sur celle du SSD1306, le constructeur&lt;br /&gt;
prévoit qu'on passe le numéro de la broche RESET en argument. Mais le SH1106&lt;br /&gt;
n'a pas de broche RESET, alors on écrit n'importe quel entier (de préférence,&lt;br /&gt;
le numéro d'une broche de l'Arduino que vous n'utilisez pas). */&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
/* Définition d'une image bitmap: logo du blog Électronique en Amateur&lt;br /&gt;
  Réalisée avec l'outil en ligne  http://javl.github.io/image2cpp/  */&lt;br /&gt;
&lt;br /&gt;
const unsigned char myBitmap [] PROGMEM = {&lt;br /&gt;
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xf0, 0x00, 0x00, 0x03, 0x9f, 0xff, 0xe0, 0x00, 0x07,&lt;br /&gt;
  0x9f, 0xff, 0xfe, 0x00, 0x0f, 0xdf, 0x0f, 0xbe, 0x00, 0x1f, 0xde, 0x06, 0x0e, 0x00, 0x3f, 0xdc,&lt;br /&gt;
  0x04, 0x0e, 0x00, 0x3f, 0xdc, 0x00, 0x06, 0x00, 0x3f, 0xdc, 0x00, 0x06, 0x00, 0x3f, 0xdc, 0x60,&lt;br /&gt;
  0x06, 0x00, 0x3f, 0xdc, 0xf1, 0x8e, 0x00, 0x3f, 0xdc, 0xf3, 0xce, 0x00, 0x3f, 0xde, 0x63, 0xde,&lt;br /&gt;
  0x00, 0x3f, 0xdf, 0x09, 0x9e, 0x00, 0x3f, 0xdf, 0xfc, 0x7e, 0x00, 0x3f, 0xde, 0x7f, 0xfe, 0x00,&lt;br /&gt;
  0x3f, 0xde, 0x7f, 0xf6, 0x00, 0x3f, 0xdf, 0x3f, 0xe6, 0x00, 0x3f, 0xdf, 0x8f, 0x8e, 0x00, 0x3f,&lt;br /&gt;
  0xdf, 0xe0, 0x3e, 0x00, 0x3f, 0x00, 0x3f, 0xfe, 0x00, 0x3e, 0xff, 0xc0, 0x1e, 0x00, 0x3d, 0xff,&lt;br /&gt;
  0xff, 0xc0, 0x00, 0x3b, 0xff, 0xff, 0xfe, 0x00, 0x37, 0xff, 0xff, 0xfe, 0x00, 0x2f, 0xff, 0xff,&lt;br /&gt;
  0xfe, 0x00, 0x0e, 0x1f, 0xff, 0xfe, 0x00, 0x1f, 0x9f, 0x9f, 0xfe, 0x00, 0x3f, 0x9f, 0x9f, 0x9e,&lt;br /&gt;
  0x00, 0x3f, 0x9f, 0x9f, 0x9e, 0x00, 0x3f, 0x9f, 0x9f, 0x9e, 0x00, 0x3f, 0x9f, 0x9f, 0x9c, 0x00,&lt;br /&gt;
  0x1f, 0x9f, 0x9f, 0x98, 0x00, 0x0f, 0x9f, 0x9f, 0x90, 0x00, 0x07, 0x9f, 0x9f, 0x90, 0x00, 0x00,&lt;br /&gt;
  0x9f, 0x9f, 0x90, 0x00, 0x00, 0x9f, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91,&lt;br /&gt;
  0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91,&lt;br /&gt;
  0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90,&lt;br /&gt;
  0x00, 0x00, 0xf1, 0xd1, 0x90, 0x00, 0x00, 0x01, 0xc1, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup()   {&lt;br /&gt;
&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /**************** Éxcriture de texte  ***************/&lt;br /&gt;
&lt;br /&gt;
  // taille par défaut&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Petit...&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  display.display();  // affichage à l'écran&lt;br /&gt;
  delay(1000);&lt;br /&gt;
&lt;br /&gt;
  // deux fois plus gros&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextSize(2);  // taille double&lt;br /&gt;
  display.println(&amp;quot;GROS!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  display.display();  // affichage à l'écran&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();  // on efface tout&lt;br /&gt;
&lt;br /&gt;
  /******************** Dessiner une ligne ******************************************/&lt;br /&gt;
&lt;br /&gt;
  // ligne horizontale au centre de l'écran&lt;br /&gt;
  display.drawLine(0, display.height() / 2, display.width() , display.height() / 2,  WHITE);&lt;br /&gt;
&lt;br /&gt;
  // ligne verticale au centre de l'écran&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(display.width() / 2, 0, display.width() / 2, display.height(), WHITE);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /********************* Dessiner des contours de formes géométriques ******************/&lt;br /&gt;
&lt;br /&gt;
  display.drawRect( 15, 5, 30, 15, WHITE); // contour d'un rectangle&lt;br /&gt;
  display.drawCircle(95, 15, 8, WHITE);  // contour d'un cercle&lt;br /&gt;
  display.drawRoundRect(15, 40, 30, 16, 5, WHITE);  // contour d'un rectangle à coins arrondis&lt;br /&gt;
  display.drawTriangle(95, 40, 80, 55, 110, 55, WHITE);  // contour d'un triangle&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(1000);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /******************* Dessiner des formes géométriqeus pleines *************************/&lt;br /&gt;
&lt;br /&gt;
  display.fillRect( 15, 5, 30, 15, WHITE); // contour d'un rectangle&lt;br /&gt;
  display.fillCircle(95, 15, 8, WHITE);  // contour d'un cercle&lt;br /&gt;
  display.fillRoundRect(15, 40, 30, 16, 5, WHITE);  // contour d'un rectangle à coins arrondis&lt;br /&gt;
  display.fillTriangle(95, 40, 80, 55, 110, 55, WHITE);  // contour d'un triangle&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
  &lt;br /&gt;
  /********************** Dessiner un pixel à la fois ***********************************************/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  // on trace une fonction sinusoidale, point par point&lt;br /&gt;
  for (int x = 1; x &amp;lt; 128; x++) {&lt;br /&gt;
    int y = 32 + round(16.0 * sin(x / 5.0));&lt;br /&gt;
    display.drawPixel(x, y, WHITE);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /**************************** Dessiner une image  bitmap **********************************/&lt;br /&gt;
&lt;br /&gt;
  // on affiche l'image stockée dans la constante myBitmap définie au début de ce fichier.&lt;br /&gt;
&lt;br /&gt;
  display.fillRect(5,5,44,58,WHITE);  // fond blanc derrière l'image bitmap&lt;br /&gt;
  &lt;br /&gt;
  display.drawBitmap(10, 10, myBitmap, 34, 48, BLACK);&lt;br /&gt;
&lt;br /&gt;
  display.setCursor(60, 30);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Au revoir!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Taupe===&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19162</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19162"/>
				<updated>2022-01-18T16:33:29Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : /* LCD */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Les boutons poussoir sont montés sur de solénoïdes, ils montent et descendent.&lt;br /&gt;
Quand ils sortent, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x5)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
(Ajouter un gros plan de la rangé avec une légende)&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
Ecran LCD.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&lt;br /&gt;
Tout d'abord il faut tester les composants pour s'assurer qu'ils fonctionnent tous bien&lt;br /&gt;
&lt;br /&gt;
===Boutton===&lt;br /&gt;
&lt;br /&gt;
Ce code permet de verifier le fonctionnement des boutons&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22; //22 represente le pin ou sera branché le bouton&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT); //Cette ligne permet de passer le pin en mode entré&lt;br /&gt;
  Serial.begin(9600); //Initialise le terminal &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1)); //Ecris l'etat du pin du bouton (0 ou 1)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Selenoide===&lt;br /&gt;
&lt;br /&gt;
Ce code permettra d'activer/desactiver le selenoide 1s/1s&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cmd_taupe1 = 53; //53 represente le pin ou sera branché le bouton&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT); //Cette ligne passe le pin en sortie&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  digitalWrite(cmd_taupe1, HIGH); //Active le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
  digitalWrite(cmd_taupe1, LOW); //Desactive le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===LCD===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
/*********************************************************************&lt;br /&gt;
  Démonstration d'un écran OLED i2c SH1106 avec un Arduino,&lt;br /&gt;
  en utilisant une bibliothèque d'Adafruit:&lt;br /&gt;
  https://github.com/adafruit/Adafruit-GFX-Library&lt;br /&gt;
  ...et une bibliothèque compatible par Wohho-maker:&lt;br /&gt;
  https://github.com/wonho-maker/Adafruit_SH1106&lt;br /&gt;
  &lt;br /&gt;
  Plus d'infos:&lt;br /&gt;
  https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&lt;br /&gt;
*********************************************************************/&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/* Puisque la bibliothèque est basée sur celle du SSD1306, le constructeur&lt;br /&gt;
prévoit qu'on passe le numéro de la broche RESET en argument. Mais le SH1106&lt;br /&gt;
n'a pas de broche RESET, alors on écrit n'importe quel entier (de préférence,&lt;br /&gt;
le numéro d'une broche de l'Arduino que vous n'utilisez pas). */&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
/* Définition d'une image bitmap: logo du blog Électronique en Amateur&lt;br /&gt;
  Réalisée avec l'outil en ligne  http://javl.github.io/image2cpp/  */&lt;br /&gt;
&lt;br /&gt;
const unsigned char myBitmap [] PROGMEM = {&lt;br /&gt;
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xf0, 0x00, 0x00, 0x03, 0x9f, 0xff, 0xe0, 0x00, 0x07,&lt;br /&gt;
  0x9f, 0xff, 0xfe, 0x00, 0x0f, 0xdf, 0x0f, 0xbe, 0x00, 0x1f, 0xde, 0x06, 0x0e, 0x00, 0x3f, 0xdc,&lt;br /&gt;
  0x04, 0x0e, 0x00, 0x3f, 0xdc, 0x00, 0x06, 0x00, 0x3f, 0xdc, 0x00, 0x06, 0x00, 0x3f, 0xdc, 0x60,&lt;br /&gt;
  0x06, 0x00, 0x3f, 0xdc, 0xf1, 0x8e, 0x00, 0x3f, 0xdc, 0xf3, 0xce, 0x00, 0x3f, 0xde, 0x63, 0xde,&lt;br /&gt;
  0x00, 0x3f, 0xdf, 0x09, 0x9e, 0x00, 0x3f, 0xdf, 0xfc, 0x7e, 0x00, 0x3f, 0xde, 0x7f, 0xfe, 0x00,&lt;br /&gt;
  0x3f, 0xde, 0x7f, 0xf6, 0x00, 0x3f, 0xdf, 0x3f, 0xe6, 0x00, 0x3f, 0xdf, 0x8f, 0x8e, 0x00, 0x3f,&lt;br /&gt;
  0xdf, 0xe0, 0x3e, 0x00, 0x3f, 0x00, 0x3f, 0xfe, 0x00, 0x3e, 0xff, 0xc0, 0x1e, 0x00, 0x3d, 0xff,&lt;br /&gt;
  0xff, 0xc0, 0x00, 0x3b, 0xff, 0xff, 0xfe, 0x00, 0x37, 0xff, 0xff, 0xfe, 0x00, 0x2f, 0xff, 0xff,&lt;br /&gt;
  0xfe, 0x00, 0x0e, 0x1f, 0xff, 0xfe, 0x00, 0x1f, 0x9f, 0x9f, 0xfe, 0x00, 0x3f, 0x9f, 0x9f, 0x9e,&lt;br /&gt;
  0x00, 0x3f, 0x9f, 0x9f, 0x9e, 0x00, 0x3f, 0x9f, 0x9f, 0x9e, 0x00, 0x3f, 0x9f, 0x9f, 0x9c, 0x00,&lt;br /&gt;
  0x1f, 0x9f, 0x9f, 0x98, 0x00, 0x0f, 0x9f, 0x9f, 0x90, 0x00, 0x07, 0x9f, 0x9f, 0x90, 0x00, 0x00,&lt;br /&gt;
  0x9f, 0x9f, 0x90, 0x00, 0x00, 0x9f, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91,&lt;br /&gt;
  0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91,&lt;br /&gt;
  0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90,&lt;br /&gt;
  0x00, 0x00, 0xf1, 0xd1, 0x90, 0x00, 0x00, 0x01, 0xc1, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup()   {&lt;br /&gt;
&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /**************** Éxcriture de texte  ***************/&lt;br /&gt;
&lt;br /&gt;
  // taille par défaut&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Petit...&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  display.display();  // affichage à l'écran&lt;br /&gt;
  delay(1000);&lt;br /&gt;
&lt;br /&gt;
  // deux fois plus gros&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextSize(2);  // taille double&lt;br /&gt;
  display.println(&amp;quot;GROS!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  display.display();  // affichage à l'écran&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();  // on efface tout&lt;br /&gt;
&lt;br /&gt;
  /******************** Dessiner une ligne ******************************************/&lt;br /&gt;
&lt;br /&gt;
  // ligne horizontale au centre de l'écran&lt;br /&gt;
  display.drawLine(0, display.height() / 2, display.width() , display.height() / 2,  WHITE);&lt;br /&gt;
&lt;br /&gt;
  // ligne verticale au centre de l'écran&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(display.width() / 2, 0, display.width() / 2, display.height(), WHITE);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /********************* Dessiner des contours de formes géométriques ******************/&lt;br /&gt;
&lt;br /&gt;
  display.drawRect( 15, 5, 30, 15, WHITE); // contour d'un rectangle&lt;br /&gt;
  display.drawCircle(95, 15, 8, WHITE);  // contour d'un cercle&lt;br /&gt;
  display.drawRoundRect(15, 40, 30, 16, 5, WHITE);  // contour d'un rectangle à coins arrondis&lt;br /&gt;
  display.drawTriangle(95, 40, 80, 55, 110, 55, WHITE);  // contour d'un triangle&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(1000);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /******************* Dessiner des formes géométriqeus pleines *************************/&lt;br /&gt;
&lt;br /&gt;
  display.fillRect( 15, 5, 30, 15, WHITE); // contour d'un rectangle&lt;br /&gt;
  display.fillCircle(95, 15, 8, WHITE);  // contour d'un cercle&lt;br /&gt;
  display.fillRoundRect(15, 40, 30, 16, 5, WHITE);  // contour d'un rectangle à coins arrondis&lt;br /&gt;
  display.fillTriangle(95, 40, 80, 55, 110, 55, WHITE);  // contour d'un triangle&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
  &lt;br /&gt;
  /********************** Dessiner un pixel à la fois ***********************************************/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  // on trace une fonction sinusoidale, point par point&lt;br /&gt;
  for (int x = 1; x &amp;lt; 128; x++) {&lt;br /&gt;
    int y = 32 + round(16.0 * sin(x / 5.0));&lt;br /&gt;
    display.drawPixel(x, y, WHITE);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /**************************** Dessiner une image  bitmap **********************************/&lt;br /&gt;
&lt;br /&gt;
  // on affiche l'image stockée dans la constante myBitmap définie au début de ce fichier.&lt;br /&gt;
&lt;br /&gt;
  display.fillRect(5,5,44,58,WHITE);  // fond blanc derrière l'image bitmap&lt;br /&gt;
  &lt;br /&gt;
  display.drawBitmap(10, 10, myBitmap, 34, 48, BLACK);&lt;br /&gt;
&lt;br /&gt;
  display.setCursor(60, 30);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Au revoir!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Taupe===&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19161</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19161"/>
				<updated>2022-01-18T16:32:49Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : /* LCD */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Les boutons poussoir sont montés sur de solénoïdes, ils montent et descendent.&lt;br /&gt;
Quand ils sortent, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x5)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
(Ajouter un gros plan de la rangé avec une légende)&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
Ecran LCD.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&lt;br /&gt;
Tout d'abord il faut tester les composants pour s'assurer qu'ils fonctionnent tous bien&lt;br /&gt;
&lt;br /&gt;
===Boutton===&lt;br /&gt;
&lt;br /&gt;
Ce code permet de verifier le fonctionnement des boutons&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22; //22 represente le pin ou sera branché le bouton&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT); //Cette ligne permet de passer le pin en mode entré&lt;br /&gt;
  Serial.begin(9600); //Initialise le terminal &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1)); //Ecris l'etat du pin du bouton (0 ou 1)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Selenoide===&lt;br /&gt;
&lt;br /&gt;
Ce code permettra d'activer/desactiver le selenoide 1s/1s&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cmd_taupe1 = 53; //53 represente le pin ou sera branché le bouton&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT); //Cette ligne passe le pin en sortie&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  digitalWrite(cmd_taupe1, HIGH); //Active le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
  digitalWrite(cmd_taupe1, LOW); //Desactive le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===LCD===&lt;br /&gt;
/*********************************************************************&lt;br /&gt;
  Démonstration d'un écran OLED i2c SH1106 avec un Arduino,&lt;br /&gt;
  en utilisant une bibliothèque d'Adafruit:&lt;br /&gt;
  https://github.com/adafruit/Adafruit-GFX-Library&lt;br /&gt;
  ...et une bibliothèque compatible par Wohho-maker:&lt;br /&gt;
  https://github.com/wonho-maker/Adafruit_SH1106&lt;br /&gt;
  &lt;br /&gt;
  Plus d'infos:&lt;br /&gt;
  https://electroniqueamateur.blogspot.com/2019/01/ecran-oled-sh1106-i2c-et-arduino.html&lt;br /&gt;
*********************************************************************/&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_SH1106.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/* Puisque la bibliothèque est basée sur celle du SSD1306, le constructeur&lt;br /&gt;
prévoit qu'on passe le numéro de la broche RESET en argument. Mais le SH1106&lt;br /&gt;
n'a pas de broche RESET, alors on écrit n'importe quel entier (de préférence,&lt;br /&gt;
le numéro d'une broche de l'Arduino que vous n'utilisez pas). */&lt;br /&gt;
Adafruit_SH1106 display(23); &lt;br /&gt;
&lt;br /&gt;
/* Définition d'une image bitmap: logo du blog Électronique en Amateur&lt;br /&gt;
  Réalisée avec l'outil en ligne  http://javl.github.io/image2cpp/  */&lt;br /&gt;
&lt;br /&gt;
const unsigned char myBitmap [] PROGMEM = {&lt;br /&gt;
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xf0, 0x00, 0x00, 0x03, 0x9f, 0xff, 0xe0, 0x00, 0x07,&lt;br /&gt;
  0x9f, 0xff, 0xfe, 0x00, 0x0f, 0xdf, 0x0f, 0xbe, 0x00, 0x1f, 0xde, 0x06, 0x0e, 0x00, 0x3f, 0xdc,&lt;br /&gt;
  0x04, 0x0e, 0x00, 0x3f, 0xdc, 0x00, 0x06, 0x00, 0x3f, 0xdc, 0x00, 0x06, 0x00, 0x3f, 0xdc, 0x60,&lt;br /&gt;
  0x06, 0x00, 0x3f, 0xdc, 0xf1, 0x8e, 0x00, 0x3f, 0xdc, 0xf3, 0xce, 0x00, 0x3f, 0xde, 0x63, 0xde,&lt;br /&gt;
  0x00, 0x3f, 0xdf, 0x09, 0x9e, 0x00, 0x3f, 0xdf, 0xfc, 0x7e, 0x00, 0x3f, 0xde, 0x7f, 0xfe, 0x00,&lt;br /&gt;
  0x3f, 0xde, 0x7f, 0xf6, 0x00, 0x3f, 0xdf, 0x3f, 0xe6, 0x00, 0x3f, 0xdf, 0x8f, 0x8e, 0x00, 0x3f,&lt;br /&gt;
  0xdf, 0xe0, 0x3e, 0x00, 0x3f, 0x00, 0x3f, 0xfe, 0x00, 0x3e, 0xff, 0xc0, 0x1e, 0x00, 0x3d, 0xff,&lt;br /&gt;
  0xff, 0xc0, 0x00, 0x3b, 0xff, 0xff, 0xfe, 0x00, 0x37, 0xff, 0xff, 0xfe, 0x00, 0x2f, 0xff, 0xff,&lt;br /&gt;
  0xfe, 0x00, 0x0e, 0x1f, 0xff, 0xfe, 0x00, 0x1f, 0x9f, 0x9f, 0xfe, 0x00, 0x3f, 0x9f, 0x9f, 0x9e,&lt;br /&gt;
  0x00, 0x3f, 0x9f, 0x9f, 0x9e, 0x00, 0x3f, 0x9f, 0x9f, 0x9e, 0x00, 0x3f, 0x9f, 0x9f, 0x9c, 0x00,&lt;br /&gt;
  0x1f, 0x9f, 0x9f, 0x98, 0x00, 0x0f, 0x9f, 0x9f, 0x90, 0x00, 0x07, 0x9f, 0x9f, 0x90, 0x00, 0x00,&lt;br /&gt;
  0x9f, 0x9f, 0x90, 0x00, 0x00, 0x9f, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91,&lt;br /&gt;
  0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91,&lt;br /&gt;
  0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90, 0x00, 0x00, 0x91, 0x91, 0x90,&lt;br /&gt;
  0x00, 0x00, 0xf1, 0xd1, 0x90, 0x00, 0x00, 0x01, 0xc1, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup()   {&lt;br /&gt;
&lt;br /&gt;
  display.begin();  // initialisation de l'afficheur&lt;br /&gt;
  display.clearDisplay();   // ça efface à la fois le buffer et l'écran&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /**************** Éxcriture de texte  ***************/&lt;br /&gt;
&lt;br /&gt;
  // taille par défaut&lt;br /&gt;
  display.setCursor(30, 15);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Petit...&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  display.display();  // affichage à l'écran&lt;br /&gt;
  delay(1000);&lt;br /&gt;
&lt;br /&gt;
  // deux fois plus gros&lt;br /&gt;
  display.setCursor(30, 35);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextSize(2);  // taille double&lt;br /&gt;
  display.println(&amp;quot;GROS!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  display.display();  // affichage à l'écran&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();  // on efface tout&lt;br /&gt;
&lt;br /&gt;
  /******************** Dessiner une ligne ******************************************/&lt;br /&gt;
&lt;br /&gt;
  // ligne horizontale au centre de l'écran&lt;br /&gt;
  display.drawLine(0, display.height() / 2, display.width() , display.height() / 2,  WHITE);&lt;br /&gt;
&lt;br /&gt;
  // ligne verticale au centre de l'écran&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(display.width() / 2, 0, display.width() / 2, display.height(), WHITE);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /********************* Dessiner des contours de formes géométriques ******************/&lt;br /&gt;
&lt;br /&gt;
  display.drawRect( 15, 5, 30, 15, WHITE); // contour d'un rectangle&lt;br /&gt;
  display.drawCircle(95, 15, 8, WHITE);  // contour d'un cercle&lt;br /&gt;
  display.drawRoundRect(15, 40, 30, 16, 5, WHITE);  // contour d'un rectangle à coins arrondis&lt;br /&gt;
  display.drawTriangle(95, 40, 80, 55, 110, 55, WHITE);  // contour d'un triangle&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(1000);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /******************* Dessiner des formes géométriqeus pleines *************************/&lt;br /&gt;
&lt;br /&gt;
  display.fillRect( 15, 5, 30, 15, WHITE); // contour d'un rectangle&lt;br /&gt;
  display.fillCircle(95, 15, 8, WHITE);  // contour d'un cercle&lt;br /&gt;
  display.fillRoundRect(15, 40, 30, 16, 5, WHITE);  // contour d'un rectangle à coins arrondis&lt;br /&gt;
  display.fillTriangle(95, 40, 80, 55, 110, 55, WHITE);  // contour d'un triangle&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
  &lt;br /&gt;
  /********************** Dessiner un pixel à la fois ***********************************************/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  // on trace une fonction sinusoidale, point par point&lt;br /&gt;
  for (int x = 1; x &amp;lt; 128; x++) {&lt;br /&gt;
    int y = 32 + round(16.0 * sin(x / 5.0));&lt;br /&gt;
    display.drawPixel(x, y, WHITE);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /**************************** Dessiner une image  bitmap **********************************/&lt;br /&gt;
&lt;br /&gt;
  // on affiche l'image stockée dans la constante myBitmap définie au début de ce fichier.&lt;br /&gt;
&lt;br /&gt;
  display.fillRect(5,5,44,58,WHITE);  // fond blanc derrière l'image bitmap&lt;br /&gt;
  &lt;br /&gt;
  display.drawBitmap(10, 10, myBitmap, 34, 48, BLACK);&lt;br /&gt;
&lt;br /&gt;
  display.setCursor(60, 30);  // coordonnées du point de départ du texte&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
  display.setTextSize(1);  // taille par défaut&lt;br /&gt;
  display.println(&amp;quot;Au revoir!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
===Taupe===&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19160</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19160"/>
				<updated>2022-01-18T16:32:02Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : /* Selenoide */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Les boutons poussoir sont montés sur de solénoïdes, ils montent et descendent.&lt;br /&gt;
Quand ils sortent, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x5)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
(Ajouter un gros plan de la rangé avec une légende)&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
Ecran LCD.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&lt;br /&gt;
Tout d'abord il faut tester les composants pour s'assurer qu'ils fonctionnent tous bien&lt;br /&gt;
&lt;br /&gt;
===Boutton===&lt;br /&gt;
&lt;br /&gt;
Ce code permet de verifier le fonctionnement des boutons&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22; //22 represente le pin ou sera branché le bouton&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT); //Cette ligne permet de passer le pin en mode entré&lt;br /&gt;
  Serial.begin(9600); //Initialise le terminal &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1)); //Ecris l'etat du pin du bouton (0 ou 1)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Selenoide===&lt;br /&gt;
&lt;br /&gt;
Ce code permettra d'activer/desactiver le selenoide 1s/1s&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cmd_taupe1 = 53; //53 represente le pin ou sera branché le bouton&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT); //Cette ligne passe le pin en sortie&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  digitalWrite(cmd_taupe1, HIGH); //Active le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
  digitalWrite(cmd_taupe1, LOW); //Desactive le relais&lt;br /&gt;
  delay(1000); //attends 1s&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===LCD===&lt;br /&gt;
&lt;br /&gt;
===Taupe===&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19157</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19157"/>
				<updated>2022-01-18T16:26:42Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : /* Selenoide */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Les boutons poussoir sont montés sur de solénoïdes, ils montent et descendent.&lt;br /&gt;
Quand ils sortent, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x5)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
(Ajouter un gros plan de la rangé avec une légende)&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
Ecran LCD.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&lt;br /&gt;
Tout d'abord il faut tester les composants pour s'assurer qu'ils fonctionnent tous bien&lt;br /&gt;
&lt;br /&gt;
===Boutton===&lt;br /&gt;
&lt;br /&gt;
Ce code permet de verifier le fonctionnement des boutons&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22; //22 represente le pin ou sera branché le bouton&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT); //Cette ligne permet de passer le pin en mode entré&lt;br /&gt;
  Serial.begin(9600); //Initialise le terminal &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1)); //Ecris l'etat du pin du bouton (0 ou 1)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Selenoide===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cmd_taupe1 = 53; //53 re&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cmd_taupe1, OUTPUT);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  digitalWrite(cmd_taupe1, HIGH);&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  digitalWrite(cmd_taupe1, LOW);&lt;br /&gt;
  delay(1000);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===LCD===&lt;br /&gt;
&lt;br /&gt;
===Taupe===&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19156</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19156"/>
				<updated>2022-01-18T16:25:05Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : /* Code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Les boutons poussoir sont montés sur de solénoïdes, ils montent et descendent.&lt;br /&gt;
Quand ils sortent, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x5)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
(Ajouter un gros plan de la rangé avec une légende)&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
Ecran LCD.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&lt;br /&gt;
Tout d'abord il faut tester les composants pour s'assurer qu'ils fonctionnent tous bien&lt;br /&gt;
&lt;br /&gt;
===Boutton===&lt;br /&gt;
&lt;br /&gt;
Ce code permet de verifier le fonctionnement des boutons&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22; //22 represente le pin ou sera branché le bouton&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT); //Cette ligne permet de passer le pin en mode entré&lt;br /&gt;
  Serial.begin(9600); //Initialise le terminal &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1)); //Ecris l'etat du pin du bouton (0 ou 1)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Selenoide===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22; //22 represente le pin ou sera branché le bouton&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT); //Cette ligne permet de passer le pin en mode entré&lt;br /&gt;
  Serial.begin(9600); //Initialise le terminal &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1)); //Ecris l'etat du pin du bouton (0 ou 1)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===LCD===&lt;br /&gt;
&lt;br /&gt;
===Taupe===&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19155</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19155"/>
				<updated>2022-01-18T16:24:36Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : /* Code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Les boutons poussoir sont montés sur de solénoïdes, ils montent et descendent.&lt;br /&gt;
Quand ils sortent, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x5)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
(Ajouter un gros plan de la rangé avec une légende)&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
Ecran LCD.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&lt;br /&gt;
Tout d'abord il faut tester les composants pour s'assurer qu'ils fonctionnent tous bien&lt;br /&gt;
&lt;br /&gt;
===Boutton===&lt;br /&gt;
&lt;br /&gt;
Ce code permet de verifier le fonctionnement des boutons&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22; //22 represente le pin ou sera branché le bouton&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT); //Cette ligne permet de passer le pin en mode entré&lt;br /&gt;
  Serial.begin(9600); //Initialise le terminal &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1)); //Ecris l'etat du pin du bouton (0 ou 1)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Selenoide===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22; //22 represente le pin ou sera branché le bouton&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT); //Cette ligne permet de passer le pin en mode entré&lt;br /&gt;
  Serial.begin(9600); //Initialise le terminal &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1)); //Ecris l'etat du pin du bouton (0 ou 1)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19154</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19154"/>
				<updated>2022-01-18T16:24:01Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : /* Boutton */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Les boutons poussoir sont montés sur de solénoïdes, ils montent et descendent.&lt;br /&gt;
Quand ils sortent, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x5)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
(Ajouter un gros plan de la rangé avec une légende)&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
Ecran LCD.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&lt;br /&gt;
Tout d'abord il faut tester les composants pour s'assurer qu'ils fonctionnent tous bien&lt;br /&gt;
&lt;br /&gt;
===Boutton===&lt;br /&gt;
&lt;br /&gt;
Ce code permet de verifier le fonctionnement des boutons&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22; //22 represente le pin ou sera branché le bouton&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT); //Cette ligne permet de passer le pin en mode entré&lt;br /&gt;
  Serial.begin(9600); //Initialise le terminal &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1)); //Ecris l'etat du pin du bouton (0 ou 1)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19151</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19151"/>
				<updated>2022-01-18T16:12:44Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : /* Code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Les boutons poussoir sont montés sur de solénoïdes, ils montent et descendent.&lt;br /&gt;
Quand ils sortent, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x5)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
(Ajouter un gros plan de la rangé avec une légende)&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
Ecran LCD.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&lt;br /&gt;
Tout d'abord il faut tester les composants pour s'assurer qu'ils fonctionnent tous bien&lt;br /&gt;
&lt;br /&gt;
===Boutton===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22;&lt;br /&gt;
 int cpt_taupe2 = 24;&lt;br /&gt;
 int cpt_taupe3 = 26;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  // put your setup code here, to run once&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe2, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe3, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  // put your main code here, to run repeatedly:&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1));&lt;br /&gt;
  Serial.print(&amp;quot;T2:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe2));&lt;br /&gt;
  Serial.print(&amp;quot;T3:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe3));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19150</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19150"/>
				<updated>2022-01-18T16:07:58Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : /* Code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Les boutons poussoir sont montés sur de solénoïdes, ils montent et descendent.&lt;br /&gt;
Quand ils sortent, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x5)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
(Ajouter un gros plan de la rangé avec une légende)&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
Ecran LCD.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22;&lt;br /&gt;
 int cpt_taupe2 = 24;&lt;br /&gt;
 int cpt_taupe3 = 26;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  // put your setup code here, to run once&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe2, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe3, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  // put your main code here, to run repeatedly:&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1));&lt;br /&gt;
  Serial.print(&amp;quot;T2:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe2));&lt;br /&gt;
  Serial.print(&amp;quot;T3:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe3));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19148</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19148"/>
				<updated>2022-01-18T16:07:47Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : Annulation des modifications 19146 de Titouan Melon (discussion)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Les boutons poussoir sont montés sur de solénoïdes, ils montent et descendent.&lt;br /&gt;
Quand ils sortent, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x5)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
(Ajouter un gros plan de la rangé avec une légende)&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
Ecran LCD.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot; line&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22;&lt;br /&gt;
 int cpt_taupe2 = 24;&lt;br /&gt;
 int cpt_taupe3 = 26;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  // put your setup code here, to run once&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe2, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe3, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  // put your main code here, to run repeatedly:&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1));&lt;br /&gt;
  Serial.print(&amp;quot;T2:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe2));&lt;br /&gt;
  Serial.print(&amp;quot;T3:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe3));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19146</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19146"/>
				<updated>2022-01-18T16:07:15Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : /* Code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Les boutons poussoir sont montés sur de solénoïdes, ils montent et descendent.&lt;br /&gt;
Quand ils sortent, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x5)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
(Ajouter un gros plan de la rangé avec une légende)&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
Ecran LCD.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|Schéma]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot; line&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22;&lt;br /&gt;
 int cpt_taupe2 = 24;&lt;br /&gt;
 int cpt_taupe3 = 26;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  // put your setup code here, to run once&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe2, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe3, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  // put your main code here, to run repeatedly:&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1));&lt;br /&gt;
  Serial.print(&amp;quot;T2:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe2));&lt;br /&gt;
  Serial.print(&amp;quot;T3:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe3));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19145</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19145"/>
				<updated>2022-01-18T16:07:01Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : /* Code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Les boutons poussoir sont montés sur de solénoïdes, ils montent et descendent.&lt;br /&gt;
Quand ils sortent, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x5)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
(Ajouter un gros plan de la rangé avec une légende)&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
Ecran LCD.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot; line&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int cpt_taupe1 = 22;&lt;br /&gt;
 int cpt_taupe2 = 24;&lt;br /&gt;
 int cpt_taupe3 = 26;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  // put your setup code here, to run once&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe2, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe3, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  // put your main code here, to run repeatedly:&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1));&lt;br /&gt;
  Serial.print(&amp;quot;T2:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe2));&lt;br /&gt;
  Serial.print(&amp;quot;T3:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe3));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19144</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19144"/>
				<updated>2022-01-18T16:06:27Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : /* Code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Les boutons poussoir sont montés sur de solénoïdes, ils montent et descendent.&lt;br /&gt;
Quand ils sortent, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x5)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
(Ajouter un gros plan de la rangé avec une légende)&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
Ecran LCD.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot; C++&amp;quot; line&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
int cpt_taupe2 = 24;&lt;br /&gt;
int cpt_taupe3 = 26;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  // put your setup code here, to run once&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe2, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe3, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  // put your main code here, to run repeatedly:&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1));&lt;br /&gt;
  Serial.print(&amp;quot;T2:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe2));&lt;br /&gt;
  Serial.print(&amp;quot;T3:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe3));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19141</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19141"/>
				<updated>2022-01-18T16:05:03Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : /* Code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Les boutons poussoir sont montés sur de solénoïdes, ils montent et descendent.&lt;br /&gt;
Quand ils sortent, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x5)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
(Ajouter un gros plan de la rangé avec une légende)&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
Ecran LCD.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;arduino&amp;quot; line&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
int cpt_taupe2 = 24;&lt;br /&gt;
int cpt_taupe3 = 26;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  // put your setup code here, to run once&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe2, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe3, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  // put your main code here, to run repeatedly:&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1));&lt;br /&gt;
  Serial.print(&amp;quot;T2:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe2));&lt;br /&gt;
  Serial.print(&amp;quot;T3:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe3));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19139</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19139"/>
				<updated>2022-01-18T16:04:27Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : /* Code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Les boutons poussoir sont montés sur de solénoïdes, ils montent et descendent.&lt;br /&gt;
Quand ils sortent, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x5)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
(Ajouter un gros plan de la rangé avec une légende)&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
Ecran LCD.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;arduino&amp;quot; line&amp;gt;&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
int cpt_taupe2 = 24;&lt;br /&gt;
int cpt_taupe3 = 26;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  // put your setup code here, to run once&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe2, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe3, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  // put your main code here, to run repeatedly:&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1));&lt;br /&gt;
  Serial.print(&amp;quot;T2:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe2));&lt;br /&gt;
  Serial.print(&amp;quot;T3:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe3));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19136</id>
		<title>ENIB 2022 - groupe D : Tape-Taupe</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2022_-_groupe_D_:_Tape-Taupe&amp;diff=19136"/>
				<updated>2022-01-18T16:02:56Z</updated>
		
		<summary type="html">&lt;p&gt;Titouan Melon : /* Code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==photo de l'équipe==&lt;br /&gt;
(Ajouter une photo de nous.)&lt;br /&gt;
&lt;br /&gt;
==Que fait ce projet ? ==&lt;br /&gt;
&lt;br /&gt;
Les boutons poussoir sont montés sur de solénoïdes, ils montent et descendent.&lt;br /&gt;
Quand ils sortent, il faut appuyer dessus pour les faire redescendre.&lt;br /&gt;
Quand le joueur arrive à appuyer sur la taupe avant qu'elle redescende, il marque des points qui sont affichés sur l'écran LCD et la taupe reste en bas.&lt;br /&gt;
&lt;br /&gt;
==Liste des composants==&lt;br /&gt;
&lt;br /&gt;
* 1 Arduino Mega&lt;br /&gt;
* Écran LCD (affichage du score)&lt;br /&gt;
* 7 Boutons poussoirs&lt;br /&gt;
* 7 solénoïdes &lt;br /&gt;
* Carte 2 relais (x4)&lt;br /&gt;
* Boitier en bois (découpe laser)&lt;br /&gt;
* Attache (bouton sur le solénoïde) (stylo 3D)&lt;br /&gt;
* Traverses (x3)&lt;br /&gt;
* Circlip (x5)&lt;br /&gt;
* Fils (x beaucoup)&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
Le dessus de la boite est percé, dans chaque trou, il y a une taupe.&lt;br /&gt;
==== Construction de la taupe : ====&lt;br /&gt;
&lt;br /&gt;
(Ajouter un gros plan de la rangé avec une légende)&lt;br /&gt;
&lt;br /&gt;
==== Construction de la boite : ====&lt;br /&gt;
Il y a un trou pour chaque taupes dans le dessus de la boite, chaque rangés de taupes sont attachées sur une traverse.&lt;br /&gt;
Les traverses servent également à rigidifier la boite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Intérieur de la boite 2.jpg|vignette]]&lt;br /&gt;
&lt;br /&gt;
==Schéma électrique==&lt;br /&gt;
Un Arduino mage était nécessaire pour pouvoir gérer toutes les entrés en sorties du projet :&lt;br /&gt;
Pour chaque taupes (9 prévues 7 au final) :&lt;br /&gt;
* Commande du relais (qui commande le solénoïde)&lt;br /&gt;
* Entrée du bouton poussoir&lt;br /&gt;
&lt;br /&gt;
Ecran LCD.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma.jpg|vignette|Schéma]]&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int cpt_taupe1 = 22;&lt;br /&gt;
int cpt_taupe2 = 24;&lt;br /&gt;
int cpt_taupe3 = 26;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  // put your setup code here, to run once&lt;br /&gt;
  pinMode(cpt_taupe1, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe2, INPUT);&lt;br /&gt;
  pinMode(cpt_taupe3, INPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  // put your main code here, to run repeatedly:&lt;br /&gt;
  Serial.print(&amp;quot;T1:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe1));&lt;br /&gt;
  Serial.print(&amp;quot;T2:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe2));&lt;br /&gt;
  Serial.print(&amp;quot;T3:&amp;quot;);&lt;br /&gt;
  Serial.println(digitalRead(cpt_taupe3));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2022]]&lt;/div&gt;</summary>
		<author><name>Titouan Melon</name></author>	</entry>

	</feed>