<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://www.wikidebrouillard.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pierre+Touchard</id>
	<title>Wikidebrouillard - Contributions de l’utilisateur [fr]</title>
	<link rel="self" type="application/atom+xml" href="https://www.wikidebrouillard.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pierre+Touchard"/>
	<link rel="alternate" type="text/html" href="https://www.wikidebrouillard.org/wiki/Sp%C3%A9cial:Contributions/Pierre_Touchard"/>
	<updated>2026-04-20T07:33:55Z</updated>
	<subtitle>Contributions de l’utilisateur</subtitle>
	<generator>MediaWiki 1.31.3</generator>
	<entry>
		<id>https://www.wikidebrouillard.org/w/index.php?title=%C3%89nigme_d%27Escape_Game_-_Carte_magn%C3%A9tique_et_carte_au_tr%C3%A9sor&amp;diff=18167</id>
		<title>Énigme d'Escape Game - Carte magnétique et carte au trésor</title>
		<link rel="alternate" type="text/html" href="https://www.wikidebrouillard.org/w/index.php?title=%C3%89nigme_d%27Escape_Game_-_Carte_magn%C3%A9tique_et_carte_au_tr%C3%A9sor&amp;diff=18167"/>
		<updated>2024-11-09T20:26:19Z</updated>

		<summary type="html">&lt;p&gt;Pierre Touchard : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=_nigme_d_Escape_Game_-_Carte_magn_tique_et_carte_au_tr_sor_WhatsApp_Image_2024-11-06_at_15.44.55.jpeg&lt;br /&gt;
|Licences=Attribution (CC-BY)&lt;br /&gt;
|Description=Vous avez un trésor à faire trouver et pour cela, quoi de mieux qu’une carte au trésor ? Celle-ci sera électronique et ne pourra être lu que par le détenteur du bon badge !&lt;br /&gt;
|Disciplines scientifiques=Arduino, Computing, Electricity&lt;br /&gt;
|Difficulty=Technical&lt;br /&gt;
|Duration=1&lt;br /&gt;
|Duration-type=hour(s)&lt;br /&gt;
|Tags=Arduino, escape game, Electronique&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=Le code a été conçu en utilisant les codes et montages présents sur les sites suivants:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://retroetgeek.com/arduino/arduino-rfid-rc522/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;https://randomnerdtutorials.com/guide-for-oled-display-with-arduino/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|ItemList={{ItemList&lt;br /&gt;
|Item=Arduino Uno&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=RFID-RC522&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=LED&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Ecran OLED 0.96 pouces I2C&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Fil électrique&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Platine de Prototypage&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Logiciel Arduino&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Résistance&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Réaliser&lt;br /&gt;
|Step_Content=Réaliser le montage suivant&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
|Step_Picture_00=_nigme_d_Escape_Game_-_Carte_magn_tique_et_carte_au_tr_sor_SCHEMA_STAGE.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Lancer&lt;br /&gt;
|Step_Content=Lancer le logiciel Arduino&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Copier&lt;br /&gt;
|Step_Content=Copier/code suivant dans le programme permettant d’utiliser Arduino :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Compléter le code: Indiquer la bonne carte/le bon badge&lt;br /&gt;
|Step_Content=Le lecteur de carte/badge RFID reconnaît les cartes et badges magnétiques par un numéro UID, lié à chaque badge et carte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, pour que le code fonctionne, il faut que l'on entre le numéro UID du badge ou de la carte que l'on veut être le bon/la bonne, et qui va faire apparaître le plan pour trouver le trésor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ce code UID va être entré ligne 24, à la ligne:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
String keyOk[]={&amp;quot;&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On indique le numéro UID entre les guillemets et mes accolades.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Comment trouver ce numéro ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour cela, il faut lancer le programme (une fois la carte branchée).&lt;br /&gt;
&lt;br /&gt;
Ensuite, on passe le badge ou la carte sur le lecteur RFID et, dans le logiciel, on va dans la zone &amp;quot;Moniteur série&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si tout se passe bien, il devrai y avoir écris &amp;quot;Scan PICC to see UID, SAK, type, and data blocks...&amp;quot; et en dessous plusieurs ligne, parmi lesquelles se trouve le code UID, qu'il faut recopier.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Compléter le code: Personnaliser son plan&lt;br /&gt;
|Step_Content=Une carte au trésor spécifique est affichée par le code précédent.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il est possible de modifier cette carte en modifiant le code, à partir de la ligne 87).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans cette carte, le rectangle du milieu représente une table et est affiché grâce à la ligne de code:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
display.drawRect(50, 20, 50, 30, WHITE);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La première valeur va être la coordonnée x (horizontale) du coin en haut à gauche du rectangle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La deuxième valeur va être la coordonnée y (verticale) du coin en haut à gauche du rectangle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La troisième valeur va être la largeur du rectangle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La quatrième valeur va être la hauteur du rectangle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;WHITE&amp;quot; donne la couleur du rectangle (Blanc).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Afin de faire les murs de la pièce, mais également les tirets, on trace des lignes avec la commande:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
display.drawLine(0, 0, 127, 20, WHITE);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La première valeur est la coordonnée x du point du début de la ligne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La deuxième valeur est la coordonnée y du point du début de la ligne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La troisième valeur est la coordonnée x du point de fin de la ligne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La quatrième valeur est la coordonnée y du point de fin de la ligne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, les murs sont fais avec des lignes. Le mur dans lequel se trouve une porte est composée avec deux lignes, espacées afin de laisser un espace pour la porte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une pièce sans ouverture affichée sur la carte peut être modélisée sur l'écran avec un rectangle. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Afin d'afficher ces lignes et ces rectangles, la ligne:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
display.display();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
doit être écrite après les lignes définissant les rectangles et lignes.&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Brancher&lt;br /&gt;
|Step_Content=Brancher l’Arduino sur un port USB de l’ordinateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Cliquer&lt;br /&gt;
|Step_Content=Une fois le code copié, vous pouvez cliquer sur &amp;quot;Vérifier&amp;quot; et attendre que le processus soit fini.&lt;br /&gt;
&lt;br /&gt;
Si aucune erreurs n'apparaît (message orange ou rouge) dans la zone &amp;quot;Sortie&amp;quot;, en bas de la page,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
vous pouvez cliquer sur &amp;quot;Téléverser&amp;quot;, ce qui va envoyer le code dans la carte Arduino et le faire fonctionner.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Attention : il faut que le type de carte Arduino soit connue par le logiciel, ainsi que le port sur lequel elle est branchée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour changer le type de carte, dans le logiciel, vous pouvez aller dans l'onglet &amp;quot;Outil&amp;quot; puis &amp;quot;Carte&amp;quot; puis &amp;quot;Arduino AVR Boards&amp;quot; et enfin sélectionner le type de carte voulue (Ici &amp;quot;Arduino Uno&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour changer le port sur lequel est branché la carte, dans le logiciel, vous pouvez aller dans &amp;quot;Outil&amp;quot; puis &amp;quot;Port&amp;quot; puis sélectionner le port sur lequel est branchée la carte.&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Résultat&lt;br /&gt;
|Step_Content=Attendre la fin du transfert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vous pouvez ensuite essayer de passer une carte ou un badge pour voir lequel fonctionne et dans tous les cas observer le résultat.&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Observations=Par défaut, l’écran n’affiche rien et les 2 leds sont éteintes. Si l’on passe un mauvais badge/carte, le message &amp;quot;Mauvaise carte!&amp;quot; s’affiche sur l’écran OLED mais pas la carte. De plus, la led orange s’allume.&lt;br /&gt;
&lt;br /&gt;
Si on passe le bon badge/carte, le message &amp;quot;Bonne carte!&amp;quot; s’affiche ainsi que la carte. De plus, la led verte s’allume. L’affichage de cette carte n’est pas instantané mais suit une suite d’instructions entrecoupées de pauses.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le code UID de la bonne carte/ou du bon badge est inscrit dans le code et peut être modifié.&lt;br /&gt;
|Avertissement=Une erreur de branchement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se tromper dans le codage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
|Explanations=La carte Arduino est une carte électronique programmable. On peut lui donner, via le logiciel Arduino et son câble qui la relie à l'ordinateur, un code informatique, c'est à dire une série d'instructions, qui vont lui permettre de fonctionner et de transmettre des informations aux différents éléments qui lui sont connectés.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ici, on a brancher des led, un capteur RFID, qui permet de lire des badges et des cartes magnétiques et un écran OLED, c'est à dire un petit écran sur lequel on va pouvoir afficher du texte ou différentes figures (rectangles, lignes, etc.). Ce qu'on va afficher sur cet écran est également prévu dans le programme Arduino que l'on va transférer à la carte.&lt;br /&gt;
|Applications=Les lecteurs RFID et cartes et badges magnétiques sont utilisés pour plusieurs usages. On peut citer par exemple certaines portes qui nécessitent un badge pour rentrer (dans des immeubles par exemple).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les leds sont des petits éclairages également présents dans de nombreux objets de la vie de tous les jours (des télécommandes par exemple).&lt;br /&gt;
|Animation=Cette énigme peut être intégrée dans un escape game.&lt;br /&gt;
&lt;br /&gt;
Ici, un plan apparaît lorsqu'on passe la bonne carte, mais un code chiffrée, ou tout autre information affichable sur un écran OLED de cette taille peut être affichée lorsqu'on passe la carte.&lt;br /&gt;
|Notes=Le code a été conçu en utilisant les codes et montages présents sur les sites suivants:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://retroetgeek.com/arduino/arduino-rfid-rc522/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;https://randomnerdtutorials.com/guide-for-oled-display-with-arduino/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Pierre Touchard</name></author>
		
	</entry>
	<entry>
		<id>https://www.wikidebrouillard.org/w/index.php?title=%C3%89nigme_d%27Escape_Game_-_Carte_magn%C3%A9tique_et_carte_au_tr%C3%A9sor&amp;diff=18166</id>
		<title>Énigme d'Escape Game - Carte magnétique et carte au trésor</title>
		<link rel="alternate" type="text/html" href="https://www.wikidebrouillard.org/w/index.php?title=%C3%89nigme_d%27Escape_Game_-_Carte_magn%C3%A9tique_et_carte_au_tr%C3%A9sor&amp;diff=18166"/>
		<updated>2024-11-09T19:24:00Z</updated>

		<summary type="html">&lt;p&gt;Pierre Touchard : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=_nigme_d_Escape_Game_-_Carte_magn_tique_et_carte_au_tr_sor_WhatsApp_Image_2024-11-06_at_15.44.55.jpeg&lt;br /&gt;
|Licences=Attribution (CC-BY)&lt;br /&gt;
|Description=Vous avez un trésor à faire trouver et pour cela, quoi de mieux qu’une carte au trésor ? Celle-ci sera électronique et ne pourra être lu que par le détenteur du bon badge !&lt;br /&gt;
|Disciplines scientifiques=Arduino, Computing, Electricity&lt;br /&gt;
|Difficulty=Technical&lt;br /&gt;
|Duration=1&lt;br /&gt;
|Duration-type=hour(s)&lt;br /&gt;
|Tags=Arduino, escape game, Electronique&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=Le code a été conçu en utilisant les codes et montages présents sur les sites suivants:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://retroetgeek.com/arduino/arduino-rfid-rc522/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;https://randomnerdtutorials.com/guide-for-oled-display-with-arduino/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|ItemList={{ItemList&lt;br /&gt;
|Item=Arduino Uno&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=RFID-RC522&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=LED&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Ecran OLED 0.96 pouces I2C&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Fil électrique&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Platine de Prototypage&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Logiciel Arduino&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Résistance&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Réaliser&lt;br /&gt;
|Step_Content=Réaliser le montage suivant&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
|Step_Picture_00=_nigme_d_Escape_Game_-_Carte_magn_tique_et_carte_au_tr_sor_SCHEMA_STAGE.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Lancer&lt;br /&gt;
|Step_Content=Lancer le logiciel Arduino&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Copier&lt;br /&gt;
|Step_Content=Copier/code suivant dans le programme permettant d’utiliser Arduino :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Inspiré des codes du site &amp;lt;nowiki&amp;gt;https://retroetgeek.com/arduino/arduino-rfid-rc522/&amp;lt;/nowiki&amp;gt; et ceux du site &amp;lt;nowiki&amp;gt;https://randomnerdtutorials.com/guide-for-oled-display-with-arduino/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;quot;SPI.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;quot;MFRC522.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;lt;Adafruit_SSD1306.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;lt;Fonts/FreeSerif9pt7b.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define RST_PIN  9 // RES pin&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define SS_PIN  10 // SDA (SS) pin&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define SCREEN_WIDTH 128 // OLED display width, in pixels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define SCREEN_HEIGHT 64 // OLED display height, in pixels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define ORG 3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define GRN 4&lt;br /&gt;
&lt;br /&gt;
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)&lt;br /&gt;
&lt;br /&gt;
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &amp;amp;Wire, -1);&lt;br /&gt;
&lt;br /&gt;
MFRC522 mfrc522(SS_PIN, RST_PIN);&lt;br /&gt;
&lt;br /&gt;
//keyOk ets l'ensemble des valeurs de la clé UID de la carte que l'on veut définir comme valide&lt;br /&gt;
&lt;br /&gt;
String keyOk[]={&amp;quot;39 11 d1 59&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
  pinMode(GRN, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
   pinMode(ORG, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
   Serial.begin(9600);&lt;br /&gt;
&lt;br /&gt;
   SPI.begin();&lt;br /&gt;
&lt;br /&gt;
   mfrc522.PCD_Init();&lt;br /&gt;
&lt;br /&gt;
   delay(4);&lt;br /&gt;
&lt;br /&gt;
   //mfrc522.PCD_DumpVersionToSerial();&lt;br /&gt;
&lt;br /&gt;
  //Serial.println(F(&amp;quot;Scan PICC to see UID, SAK, type, and data blocks...&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
   if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {&lt;br /&gt;
&lt;br /&gt;
    //Serial.println(&amp;quot;SSD1306 allocation failed&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
    for(;;);&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
&lt;br /&gt;
   // réinitialiser le cycle s'il n'y a pas de carte sur le lecteur&lt;br /&gt;
&lt;br /&gt;
   if ( ! mfrc522.PICC_IsNewCardPresent()) {&lt;br /&gt;
&lt;br /&gt;
      display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
      return;&lt;br /&gt;
&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   if ( ! mfrc522.PICC_ReadCardSerial()) {&lt;br /&gt;
&lt;br /&gt;
      display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
      return;&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   //Ecrire la clé UID sur le moniteur série&lt;br /&gt;
&lt;br /&gt;
   //mfrc522.PICC_DumpToSerial(&amp;amp;(mfrc522.uid));&lt;br /&gt;
&lt;br /&gt;
   // recuperation de l'UID et concaténation de sa valeur en hex dans un string&lt;br /&gt;
&lt;br /&gt;
  String myKey=String(mfrc522.uid.uidByte[0],HEX) + &amp;quot; &amp;quot; + String(mfrc522.uid.uidByte[1],HEX) + &amp;quot; &amp;quot; + String(mfrc522.uid.uidByte[2],HEX) + &amp;quot; &amp;quot; + String(mfrc522.uid.uidByte[3],HEX);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  //Booléen qui définit si la carte est valide (1) ou non (0)&lt;br /&gt;
&lt;br /&gt;
  bool accessOk = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Si chaque valeur de la clé UID de la carte correspond à une clé UID valide, alors accessOk = 1 (On définit que la carte est valide)&lt;br /&gt;
&lt;br /&gt;
for(int y = 0; y &amp;lt; (sizeof(keyOk)/sizeof(String)) ; y++){&lt;br /&gt;
&lt;br /&gt;
  if(keyOk[y] == myKey){&lt;br /&gt;
&lt;br /&gt;
    accessOk = 1;&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Si la carte est valide, alors on affiche le plan et le texte&lt;br /&gt;
&lt;br /&gt;
if(accessOk == 1){&lt;br /&gt;
&lt;br /&gt;
   delay(500);&lt;br /&gt;
&lt;br /&gt;
   digitalWrite(GRN, HIGH);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(ORG, LOW);&lt;br /&gt;
&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
  display.setTextSize(1);&lt;br /&gt;
&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.setCursor(0, 2);&lt;br /&gt;
&lt;br /&gt;
  // Display static text&lt;br /&gt;
&lt;br /&gt;
  //Ecrire &amp;quot;Bonne carte!&amp;quot; aux coordonnées 0,2 de l'écran&lt;br /&gt;
&lt;br /&gt;
  display.println(&amp;quot;Bonne carte!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  //Affiche un rectangle qui représente la table au centre de la pièce&lt;br /&gt;
&lt;br /&gt;
  display.drawRect(50, 20, 50, 30, WHITE);&lt;br /&gt;
&lt;br /&gt;
  //Affiche les lignes aux bords de l'écran qui représentent les murs&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 0, 127, 0, WHITE);&lt;br /&gt;
&lt;br /&gt;
  //Le décalage en X entre les deux prochaines lignes laisse un espace vide qui représente la porte&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 0, 0, 38, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 58, 0, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  //Affiche les lignes aux bords de l'écran qui représentent les murs&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(127, 0, 127, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 63, 127, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  /*Affiche progressivement le trajet à suivre dans la pièce.&lt;br /&gt;
&lt;br /&gt;
  Des tirets représentent le chemin à suivre et une croix représente ce que l'on cherche*/&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 48, 5, 48, WHITE); //Affiche un tiret, c'est à dire une ligne courte&lt;br /&gt;
&lt;br /&gt;
  display.display();// Affiche sur l'écran tous les élements, en ajoutant ceux qu'on a définit depuis le dernier &amp;quot;display.display();&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  delay(500); //Applique un délais de 500 ms avant le prochain affichage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// On recommence ces 3 lignes en changeant les coordonnées pour chaque tiret&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(10, 48, 15, 48, WHITE);//Affiche un nouveau tiret, c'est à dire une ligne courte&lt;br /&gt;
&lt;br /&gt;
  display.display();//Affiche la même chose qu'au dernier &amp;quot;display.display(); avec le nouveau tiret en plus&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(20, 48, 25, 48, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(30, 48, 35, 48, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(40, 48, 40, 53, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(45, 58, 50, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(55, 58, 60, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(65, 58, 70, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(75, 58, 80, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(85, 58, 90, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(95, 58, 100, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
// Ici on affiche 2 tirets qui se croisent afin de faire une croix&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(105, 53, 115, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(115, 53, 105, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Si la carte n'est pas valide, alors on affiche seulement &amp;quot;Mauvaise carte&amp;quot; aux coordonnées 0,2 de l'écran et on n'affiche pas le plan&lt;br /&gt;
&lt;br /&gt;
  else{&lt;br /&gt;
&lt;br /&gt;
    digitalWrite(GRN, LOW);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(ORG, HIGH);&lt;br /&gt;
&lt;br /&gt;
   display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
  display.setTextSize(1);&lt;br /&gt;
&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.setCursor(0, 2);&lt;br /&gt;
&lt;br /&gt;
  // Display static text&lt;br /&gt;
&lt;br /&gt;
  display.println(&amp;quot;Mauvaise carte!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Brancher&lt;br /&gt;
|Step_Content=Brancher l’Arduino sur un port USB de l’ordinateur.&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Cliquer&lt;br /&gt;
|Step_Content=Cliquer sur l’image représentant une sorte de v, puis sur l’image représentant une flèche (le programme sera mis dans l’Arduino.&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Résultat&lt;br /&gt;
|Step_Content=Attendre la fin du transfert.&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Observations=Par défaut, l’écran n’affiche rien et les 2 leds sont éteintes. Si l’on passe un mauvais badge/carte, le message &amp;quot;Mauvaise carte!&amp;quot; s’affiche sur l’écran OLED mais pas la carte. De plus, la led orange s’allume.&lt;br /&gt;
&lt;br /&gt;
Si on passe le bon badge/carte, le message &amp;quot;Bonne carte!&amp;quot; s’affiche ainsi que la carte. De plus, la led verte s’allume. L’affichage de cette carte n’est pas instantané mais suit une suite d’instructions entrecoupées de pauses.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le code UID de la bonne carte/ou du bon badge est inscrit dans le code et peut être modifié.&lt;br /&gt;
|Avertissement=Une erreur de branchement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Certains composants électroniques Arduino nécessitent d’être soudés à des fils afin de fonctionner.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se tromper dans les codages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
|Applications=Les lecteurs RFID et cartes et badges magnétiques sont utilisés pour plusieurs usages. On peut citer par exemple certaines portes qui nécessitent un badge pour rentrer (dans des immeubles par exemple).&lt;br /&gt;
|Notes=Le code a été conçu en utilisant les codes et montages présents sur les sites suivants:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://retroetgeek.com/arduino/arduino-rfid-rc522/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;https://randomnerdtutorials.com/guide-for-oled-display-with-arduino/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Pierre Touchard</name></author>
		
	</entry>
	<entry>
		<id>https://www.wikidebrouillard.org/w/index.php?title=%C3%89nigme_d%27Escape_Game_-_Carte_magn%C3%A9tique_et_carte_au_tr%C3%A9sor&amp;diff=18165</id>
		<title>Énigme d'Escape Game - Carte magnétique et carte au trésor</title>
		<link rel="alternate" type="text/html" href="https://www.wikidebrouillard.org/w/index.php?title=%C3%89nigme_d%27Escape_Game_-_Carte_magn%C3%A9tique_et_carte_au_tr%C3%A9sor&amp;diff=18165"/>
		<updated>2024-11-06T17:12:12Z</updated>

		<summary type="html">&lt;p&gt;Pierre Touchard : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=_nigme_d_Escape_Game_-_Carte_magn_tique_et_carte_au_tr_sor_WhatsApp_Image_2024-11-06_at_15.44.55.jpeg&lt;br /&gt;
|Licences=Attribution (CC-BY)&lt;br /&gt;
|Description=Vous avez un trésor à faire trouver et pour cela, quoi de mieux qu’une carte au trésor ? Celle-ci sera électronique et ne pourra être lu que par le détenteur du bon badge !&lt;br /&gt;
|Disciplines scientifiques=Arduino, Computing, Electricity&lt;br /&gt;
|Difficulty=Technical&lt;br /&gt;
|Duration=1&lt;br /&gt;
|Duration-type=hour(s)&lt;br /&gt;
|Tags=Arduino, escape game, Electronique&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=Le code a été conçu en utilisant les codes et montages présents sur les sites suivants:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://retroetgeek.com/arduino/arduino-rfid-rc522/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;https://randomnerdtutorials.com/guide-for-oled-display-with-arduino/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|ItemList={{ItemList&lt;br /&gt;
|Item=Arduino Uno&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=RFID-RC522&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=LED&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Ecran OLED 0.96 pouces I2C&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Fil électrique&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Platine de Prototypage&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Logiciel Arduino&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Résistance&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Réaliser&lt;br /&gt;
|Step_Content=Réaliser le montage suivant&lt;br /&gt;
|Step_Picture_00=_nigme_d_Escape_Game_-_Carte_magn_tique_et_carte_au_tr_sor_SCHEMA_STAGE.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Lancer&lt;br /&gt;
|Step_Content=Lancer le logiciel Arduino&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Copier&lt;br /&gt;
|Step_Content=Copier/code suivant dans le programme permettant d’utiliser Arduino :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Inspiré des codes du site &amp;lt;nowiki&amp;gt;https://retroetgeek.com/arduino/arduino-rfid-rc522/&amp;lt;/nowiki&amp;gt; et ceux du site &amp;lt;nowiki&amp;gt;https://randomnerdtutorials.com/guide-for-oled-display-with-arduino/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;quot;SPI.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;quot;MFRC522.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;lt;Adafruit_SSD1306.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;lt;Fonts/FreeSerif9pt7b.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define RST_PIN  9 // RES pin&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define SS_PIN  10 // SDA (SS) pin&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define SCREEN_WIDTH 128 // OLED display width, in pixels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define SCREEN_HEIGHT 64 // OLED display height, in pixels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define ORG 3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define GRN 4&lt;br /&gt;
&lt;br /&gt;
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)&lt;br /&gt;
&lt;br /&gt;
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &amp;amp;Wire, -1);&lt;br /&gt;
&lt;br /&gt;
MFRC522 mfrc522(SS_PIN, RST_PIN);&lt;br /&gt;
&lt;br /&gt;
//keyOk ets l'ensemble des valeurs de la clé UID de la carte que l'on veut définir comme valide&lt;br /&gt;
&lt;br /&gt;
String keyOk[]={&amp;quot;39 11 d1 59&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
  pinMode(GRN, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
   pinMode(ORG, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
   Serial.begin(9600);&lt;br /&gt;
&lt;br /&gt;
   SPI.begin();&lt;br /&gt;
&lt;br /&gt;
   mfrc522.PCD_Init();&lt;br /&gt;
&lt;br /&gt;
   delay(4);&lt;br /&gt;
&lt;br /&gt;
   //mfrc522.PCD_DumpVersionToSerial();&lt;br /&gt;
&lt;br /&gt;
  //Serial.println(F(&amp;quot;Scan PICC to see UID, SAK, type, and data blocks...&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
   if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {&lt;br /&gt;
&lt;br /&gt;
    //Serial.println(&amp;quot;SSD1306 allocation failed&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
    for(;;);&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
&lt;br /&gt;
   // réinitialiser le cycle s'il n'y a pas de carte sur le lecteur&lt;br /&gt;
&lt;br /&gt;
   if ( ! mfrc522.PICC_IsNewCardPresent()) {&lt;br /&gt;
&lt;br /&gt;
      display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
      return;&lt;br /&gt;
&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   if ( ! mfrc522.PICC_ReadCardSerial()) {&lt;br /&gt;
&lt;br /&gt;
      display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
      return;&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   //Ecrire la clé UID sur le moniteur série&lt;br /&gt;
&lt;br /&gt;
   //mfrc522.PICC_DumpToSerial(&amp;amp;(mfrc522.uid));&lt;br /&gt;
&lt;br /&gt;
   // recuperation de l'UID et concaténation de sa valeur en hex dans un string&lt;br /&gt;
&lt;br /&gt;
  String myKey=String(mfrc522.uid.uidByte[0],HEX) + &amp;quot; &amp;quot; + String(mfrc522.uid.uidByte[1],HEX) + &amp;quot; &amp;quot; + String(mfrc522.uid.uidByte[2],HEX) + &amp;quot; &amp;quot; + String(mfrc522.uid.uidByte[3],HEX);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  //Booléen qui définit si la carte est valide (1) ou non (0)&lt;br /&gt;
&lt;br /&gt;
  bool accessOk = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Si chaque valeur de la clé UID de la carte correspond à une clé UID valide, alors accessOk = 1 (On définit que la carte est valide)&lt;br /&gt;
&lt;br /&gt;
for(int y = 0; y &amp;lt; (sizeof(keyOk)/sizeof(String)) ; y++){&lt;br /&gt;
&lt;br /&gt;
  if(keyOk[y] == myKey){&lt;br /&gt;
&lt;br /&gt;
    accessOk = 1;&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Si la carte est valide, alors on affiche le plan et le texte&lt;br /&gt;
&lt;br /&gt;
if(accessOk == 1){&lt;br /&gt;
&lt;br /&gt;
   delay(500);&lt;br /&gt;
&lt;br /&gt;
   digitalWrite(GRN, HIGH);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(ORG, LOW);&lt;br /&gt;
&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
  display.setTextSize(1);&lt;br /&gt;
&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.setCursor(0, 2);&lt;br /&gt;
&lt;br /&gt;
  // Display static text&lt;br /&gt;
&lt;br /&gt;
  //Ecrire &amp;quot;Bonne carte!&amp;quot; aux coordonnées 0,2 de l'écran&lt;br /&gt;
&lt;br /&gt;
  display.println(&amp;quot;Bonne carte!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  //Affiche un rectangle qui représente la table au centre de la pièce&lt;br /&gt;
&lt;br /&gt;
  display.drawRect(50, 20, 50, 30, WHITE);&lt;br /&gt;
&lt;br /&gt;
  //Affiche les lignes aux bords de l'écran qui représentent les murs&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 0, 127, 0, WHITE);&lt;br /&gt;
&lt;br /&gt;
  //Le décalage en X entre les deux prochaines lignes laisse un espace vide qui représente la porte&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 0, 0, 38, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 58, 0, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  //Affiche les lignes aux bords de l'écran qui représentent les murs&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(127, 0, 127, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 63, 127, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  /*Affiche progressivement le trajet à suivre dans la pièce.&lt;br /&gt;
&lt;br /&gt;
  Des tirets représentent le chemin à suivre et une croix représente ce que l'on cherche*/&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 48, 5, 48, WHITE); //Affiche un tiret, c'est à dire une ligne courte&lt;br /&gt;
&lt;br /&gt;
  display.display();// Affiche sur l'écran tous les élements, en ajoutant ceux qu'on a définit depuis le dernier &amp;quot;display.display();&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  delay(500); //Applique un délais de 500 ms avant le prochain affichage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// On recommence ces 3 lignes en changeant les coordonnées pour chaque tiret&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(10, 48, 15, 48, WHITE);//Affiche un nouveau tiret, c'est à dire une ligne courte&lt;br /&gt;
&lt;br /&gt;
  display.display();//Affiche la même chose qu'au dernier &amp;quot;display.display(); avec le nouveau tiret en plus&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(20, 48, 25, 48, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(30, 48, 35, 48, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(40, 48, 40, 53, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(45, 58, 50, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(55, 58, 60, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(65, 58, 70, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(75, 58, 80, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(85, 58, 90, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(95, 58, 100, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
// Ici on affiche 2 tirets qui se croisent afin de faire une croix&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(105, 53, 115, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(115, 53, 105, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Si la carte n'est pas valide, alors on affiche seulement &amp;quot;Mauvaise carte&amp;quot; aux coordonnées 0,2 de l'écran et on n'affiche pas le plan&lt;br /&gt;
&lt;br /&gt;
  else{&lt;br /&gt;
&lt;br /&gt;
    digitalWrite(GRN, LOW);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(ORG, HIGH);&lt;br /&gt;
&lt;br /&gt;
   display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
  display.setTextSize(1);&lt;br /&gt;
&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.setCursor(0, 2);&lt;br /&gt;
&lt;br /&gt;
  // Display static text&lt;br /&gt;
&lt;br /&gt;
  display.println(&amp;quot;Mauvaise carte!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Brancher&lt;br /&gt;
|Step_Content=Brancher l’Arduino sur un port USB de l’ordinateur.&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Cliquer&lt;br /&gt;
|Step_Content=Cliquer sur l’image représentant une sorte de v, puis sur l’image représentant une flèche (le programme sera mis dans l’Arduino.&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Résultat&lt;br /&gt;
|Step_Content=Attendre la fin du transfert.&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Observations=Par défaut, l’écran n’affiche rien et les 2 leds sont éteintes. Si l’on passe un mauvais badge/carte, le message &amp;quot;Mauvaise carte!&amp;quot; s’affiche sur l’écran OLED mais pas la carte. De plus, la led orange s’allume.&lt;br /&gt;
&lt;br /&gt;
Si on passe le bon badge/carte, le message &amp;quot;Bonne carte!&amp;quot; s’affiche ainsi que la carte. De plus, la led verte s’allume. L’affichage de cette carte n’est pas instantané mais suit une suite d’instructions entrecoupées de pauses.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le code UID de la bonne carte/ou du bon badge est inscrit dans le code et peut être modifié.&lt;br /&gt;
|Avertissement=Une erreur de branchement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Certains composants électroniques Arduino nécessitent d’être soudés à des fils afin de fonctionner.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se tromper dans les codages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
|Applications=Les lecteurs RFID et cartes et badges magnétiques sont utilisés pour plusieurs usages. On peut citer par exemple certaines portes qui nécessitent un badge pour rentrer (dans des immeubles par exemple).&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Pierre Touchard</name></author>
		
	</entry>
	<entry>
		<id>https://www.wikidebrouillard.org/w/index.php?title=%C3%89nigme_d%27Escape_Game_-_Carte_magn%C3%A9tique_et_carte_au_tr%C3%A9sor&amp;diff=18164</id>
		<title>Énigme d'Escape Game - Carte magnétique et carte au trésor</title>
		<link rel="alternate" type="text/html" href="https://www.wikidebrouillard.org/w/index.php?title=%C3%89nigme_d%27Escape_Game_-_Carte_magn%C3%A9tique_et_carte_au_tr%C3%A9sor&amp;diff=18164"/>
		<updated>2024-11-06T17:07:55Z</updated>

		<summary type="html">&lt;p&gt;Pierre Touchard : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=_nigme_d_Escape_Game_-_Carte_magn_tique_et_carte_au_tr_sor_WhatsApp_Image_2024-11-06_at_15.44.55.jpeg&lt;br /&gt;
|Licences=Attribution (CC-BY)&lt;br /&gt;
|Description=Vous avez un trésor à faire trouver et pour cela, quoi de mieux qu’une carte au trésor ? Celle-ci sera électronique et ne pourra être lu que par le détenteur du bon badge !&lt;br /&gt;
|Disciplines scientifiques=Arduino, Computing, Electricity&lt;br /&gt;
|Difficulty=Technical&lt;br /&gt;
|Duration=1&lt;br /&gt;
|Duration-type=hour(s)&lt;br /&gt;
|Tags=Arduino, escape game, Electronique&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=Le code a été conçu en utilisant les codes et montages présents sur les sites suivants:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://retroetgeek.com/arduino/arduino-rfid-rc522/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;https://randomnerdtutorials.com/guide-for-oled-display-with-arduino/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|ItemList={{ItemList&lt;br /&gt;
|Item=Arduino Uno&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=RFID-RC522&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=LED&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Ecran OLED 0.96 pouces I2C&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Fil électrique&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Platine de Prototypage&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Logiciel Arduino&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Résistance&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Réaliser&lt;br /&gt;
|Step_Content=Réaliser le montage suivant&lt;br /&gt;
|Step_Picture_00=_nigme_d_Escape_Game_-_Carte_magn_tique_et_carte_au_tr_sor_SCHEMA_STAGE.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Lancer&lt;br /&gt;
|Step_Content=Lancer le logiciel Arduino&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Copier&lt;br /&gt;
|Step_Content=Copier/code suivant dans le programme permettant d’utiliser Arduino :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Inspiré des codes du site &amp;lt;nowiki&amp;gt;https://retroetgeek.com/arduino/arduino-rfid-rc522/&amp;lt;/nowiki&amp;gt; et ceux du site &amp;lt;nowiki&amp;gt;https://randomnerdtutorials.com/guide-for-oled-display-with-arduino/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;quot;SPI.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;quot;MFRC522.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;lt;Adafruit_SSD1306.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;lt;Fonts/FreeSerif9pt7b.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define RST_PIN  9 // RES pin&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define SS_PIN  10 // SDA (SS) pin&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define SCREEN_WIDTH 128 // OLED display width, in pixels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define SCREEN_HEIGHT 64 // OLED display height, in pixels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define ORG 3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define GRN 4&lt;br /&gt;
&lt;br /&gt;
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)&lt;br /&gt;
&lt;br /&gt;
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &amp;amp;Wire, -1);&lt;br /&gt;
&lt;br /&gt;
MFRC522 mfrc522(SS_PIN, RST_PIN);&lt;br /&gt;
&lt;br /&gt;
//keyOk ets l'ensemble des valeurs de la clé UID de la carte que l'on veut définir comme valide&lt;br /&gt;
&lt;br /&gt;
String keyOk[]={&amp;quot;39 11 d1 59&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
  pinMode(GRN, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
   pinMode(ORG, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
   Serial.begin(9600);&lt;br /&gt;
&lt;br /&gt;
   SPI.begin();&lt;br /&gt;
&lt;br /&gt;
   mfrc522.PCD_Init();&lt;br /&gt;
&lt;br /&gt;
   delay(4);&lt;br /&gt;
&lt;br /&gt;
   //mfrc522.PCD_DumpVersionToSerial();&lt;br /&gt;
&lt;br /&gt;
  //Serial.println(F(&amp;quot;Scan PICC to see UID, SAK, type, and data blocks...&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
   if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {&lt;br /&gt;
&lt;br /&gt;
    //Serial.println(&amp;quot;SSD1306 allocation failed&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
    for(;;);&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
&lt;br /&gt;
   // réinitialiser le cycle s'il n'y a pas de carte sur le lecteur&lt;br /&gt;
&lt;br /&gt;
   if ( ! mfrc522.PICC_IsNewCardPresent()) {&lt;br /&gt;
&lt;br /&gt;
      display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
      return;&lt;br /&gt;
&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   if ( ! mfrc522.PICC_ReadCardSerial()) {&lt;br /&gt;
&lt;br /&gt;
      display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
      return;&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   //Ecrire la clé UID sur le moniteur série&lt;br /&gt;
&lt;br /&gt;
   //mfrc522.PICC_DumpToSerial(&amp;amp;(mfrc522.uid));&lt;br /&gt;
&lt;br /&gt;
   // recuperation de l'UID et concaténation de sa valeur en hex dans un string&lt;br /&gt;
&lt;br /&gt;
  String myKey=String(mfrc522.uid.uidByte[0],HEX) + &amp;quot; &amp;quot; + String(mfrc522.uid.uidByte[1],HEX) + &amp;quot; &amp;quot; + String(mfrc522.uid.uidByte[2],HEX) + &amp;quot; &amp;quot; + String(mfrc522.uid.uidByte[3],HEX);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  //Booléen qui définit si la carte est valide (1) ou non (0)&lt;br /&gt;
&lt;br /&gt;
  bool accessOk = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Si chaque valeur de la clé UID de la carte correspond à une clé UID valide, alors accessOk = 1 (On définit que la carte est valide)&lt;br /&gt;
&lt;br /&gt;
for(int y = 0; y &amp;lt; (sizeof(keyOk)/sizeof(String)) ; y++){&lt;br /&gt;
&lt;br /&gt;
  if(keyOk[y] == myKey){&lt;br /&gt;
&lt;br /&gt;
    accessOk = 1;&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Si la carte est valide, alors on affiche le plan et le texte&lt;br /&gt;
&lt;br /&gt;
if(accessOk == 1){&lt;br /&gt;
&lt;br /&gt;
   delay(500);&lt;br /&gt;
&lt;br /&gt;
   digitalWrite(GRN, HIGH);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(ORG, LOW);&lt;br /&gt;
&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
  display.setTextSize(1);&lt;br /&gt;
&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.setCursor(0, 2);&lt;br /&gt;
&lt;br /&gt;
  // Display static text&lt;br /&gt;
&lt;br /&gt;
  //Ecrire &amp;quot;Bonne carte!&amp;quot; aux coordonnées 0,2 de l'écran&lt;br /&gt;
&lt;br /&gt;
  display.println(&amp;quot;Bonne carte!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  //Affiche un rectangle qui représente la table au centre de la pièce&lt;br /&gt;
&lt;br /&gt;
  display.drawRect(50, 20, 50, 30, WHITE);&lt;br /&gt;
&lt;br /&gt;
  //Affiche les lignes aux bords de l'écran qui représentent les murs&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 0, 127, 0, WHITE);&lt;br /&gt;
&lt;br /&gt;
  //Le décalage en X entre les deux prochaines lignes laisse un espace vide qui représente la porte&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 0, 0, 38, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 58, 0, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  //Affiche les lignes aux bords de l'écran qui représentent les murs&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(127, 0, 127, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 63, 127, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  /*Affiche progressivement le trajet à suivre dans la pièce.&lt;br /&gt;
&lt;br /&gt;
  Des tirets représentent le chemin à suivre et une croix représente ce que l'on cherche*/&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 48, 5, 48, WHITE); //Affiche un tiret, c'est à dire une ligne courte&lt;br /&gt;
&lt;br /&gt;
  display.display();// Affiche sur l'écran tous les élements, en ajoutant ceux qu'on a définit depuis le dernier &amp;quot;display.display();&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  delay(500); //Applique un délais de 500 ms avant le prochain affichage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// On recommence ces 3 lignes en changeant les coordonnées pour chaque tiret&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(10, 48, 15, 48, WHITE);//Affiche un nouveau tiret, c'est à dire une ligne courte&lt;br /&gt;
&lt;br /&gt;
  display.display();//Affiche la même chose qu'au dernier &amp;quot;display.display(); avec le nouveau tiret en plus&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(20, 48, 25, 48, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(30, 48, 35, 48, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(40, 48, 40, 53, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(45, 58, 50, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(55, 58, 60, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(65, 58, 70, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(75, 58, 80, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(85, 58, 90, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(95, 58, 100, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
// Ici on affiche 2 tirets qui se croisent afin de faire une croix&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(105, 53, 115, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(115, 53, 105, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Si la carte n'est pas valide, alors on affiche seulement &amp;quot;Mauvaise carte&amp;quot; aux coordonnées 0,2 de l'écran et on n'affiche pas le plan&lt;br /&gt;
&lt;br /&gt;
  else{&lt;br /&gt;
&lt;br /&gt;
    digitalWrite(GRN, LOW);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(ORG, HIGH);&lt;br /&gt;
&lt;br /&gt;
   display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
  display.setTextSize(1);&lt;br /&gt;
&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.setCursor(0, 2);&lt;br /&gt;
&lt;br /&gt;
  // Display static text&lt;br /&gt;
&lt;br /&gt;
  display.println(&amp;quot;Mauvaise carte!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Brancher&lt;br /&gt;
|Step_Content=Brancher l’Arduino sur un port USB de l’ordinateur.&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Cliquer&lt;br /&gt;
|Step_Content=Cliquer sur l’image représentant une sorte de v, puis sur l’image représentant une flèche (le programme sera mis dans l’Arduino.&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Résultat&lt;br /&gt;
|Step_Content=Attendre la fin du transfert.&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Observations=Par défaut, l’écran n’affiche rien et les 2 leds sont éteintes. Si l’on passe un mauvais badge/carte, le message &amp;quot;Mauvaise carte!&amp;quot; s’affiche sur l’écran OLED mais pas la carte. De plus, la led orange s’allume.&lt;br /&gt;
&lt;br /&gt;
Si on passe le bon badge/carte, le message &amp;quot;Bonne carte!&amp;quot; s’affiche ainsi que la carte. De plus, la led verte s’allume. L’affichage de cette carte n’est pas instantané mais suit une suite d’instructions entrecoupées de pauses.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le code UID de la bonne carte/ou du bon badge est inscrit dans le code et peut être modifié.&lt;br /&gt;
|Avertissement=Une erreur de branchement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Certains composants électroniques Arduino nécessitent d’être soudés à des fils afin de fonctionner.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se tromper dans les codages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Pierre Touchard</name></author>
		
	</entry>
	<entry>
		<id>https://www.wikidebrouillard.org/w/index.php?title=%C3%89nigme_d%27Escape_Game_-_Carte_magn%C3%A9tique_et_carte_au_tr%C3%A9sor&amp;diff=18163</id>
		<title>Énigme d'Escape Game - Carte magnétique et carte au trésor</title>
		<link rel="alternate" type="text/html" href="https://www.wikidebrouillard.org/w/index.php?title=%C3%89nigme_d%27Escape_Game_-_Carte_magn%C3%A9tique_et_carte_au_tr%C3%A9sor&amp;diff=18163"/>
		<updated>2024-11-06T17:03:33Z</updated>

		<summary type="html">&lt;p&gt;Pierre Touchard : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=_nigme_d_Escape_Game_-_Carte_magn_tique_et_carte_au_tr_sor_WhatsApp_Image_2024-11-06_at_15.44.55.jpeg&lt;br /&gt;
|Licences=Attribution (CC-BY)&lt;br /&gt;
|Description=Vous avez un trésor à faire trouver et pour cela, quoi de mieux qu’une carte au trésor ? Celle-ci sera électronique et ne pourra être lu que par le détenteur du bon badge !&lt;br /&gt;
|Disciplines scientifiques=Arduino, Computing, Electricity&lt;br /&gt;
|Difficulty=Technical&lt;br /&gt;
|Duration=1&lt;br /&gt;
|Duration-type=hour(s)&lt;br /&gt;
|Tags=Arduino, escape game, Electronique&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=Le code a été conçu en utilisant les codes présents sur les sites suivants:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://retroetgeek.com/arduino/arduino-rfid-rc522/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;https://randomnerdtutorials.com/guide-for-oled-display-with-arduino/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|ItemList={{ItemList&lt;br /&gt;
|Item=Arduino Uno&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=RFID-RC522&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=LED&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Ecran OLED 0.96 pouces I2C&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Fil électrique&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Platine de Prototypage&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Logiciel Arduino&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Résistance&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Réaliser&lt;br /&gt;
|Step_Content=Réaliser le montage suivant&lt;br /&gt;
|Step_Picture_00=_nigme_d_Escape_Game_-_Carte_magn_tique_et_carte_au_tr_sor_SCHEMA_STAGE.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Lancer&lt;br /&gt;
|Step_Content=Lancer le logiciel Arduino&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Copier&lt;br /&gt;
|Step_Content=Copier/code suivant dans le programme permettant d’utiliser Arduino :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Inspiré des codes du site &amp;lt;nowiki&amp;gt;https://retroetgeek.com/arduino/arduino-rfid-rc522/&amp;lt;/nowiki&amp;gt; et ceux du site &amp;lt;nowiki&amp;gt;https://randomnerdtutorials.com/guide-for-oled-display-with-arduino/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;quot;SPI.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;quot;MFRC522.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;lt;Adafruit_SSD1306.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;lt;Fonts/FreeSerif9pt7b.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define RST_PIN  9 // RES pin&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define SS_PIN  10 // SDA (SS) pin&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define SCREEN_WIDTH 128 // OLED display width, in pixels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define SCREEN_HEIGHT 64 // OLED display height, in pixels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define ORG 3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define GRN 4&lt;br /&gt;
&lt;br /&gt;
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)&lt;br /&gt;
&lt;br /&gt;
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &amp;amp;Wire, -1);&lt;br /&gt;
&lt;br /&gt;
MFRC522 mfrc522(SS_PIN, RST_PIN);&lt;br /&gt;
&lt;br /&gt;
//keyOk ets l'ensemble des valeurs de la clé UID de la carte que l'on veut définir comme valide&lt;br /&gt;
&lt;br /&gt;
String keyOk[]={&amp;quot;39 11 d1 59&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
  pinMode(GRN, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
   pinMode(ORG, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
   Serial.begin(9600);&lt;br /&gt;
&lt;br /&gt;
   SPI.begin();&lt;br /&gt;
&lt;br /&gt;
   mfrc522.PCD_Init();&lt;br /&gt;
&lt;br /&gt;
   delay(4);&lt;br /&gt;
&lt;br /&gt;
   //mfrc522.PCD_DumpVersionToSerial();&lt;br /&gt;
&lt;br /&gt;
  //Serial.println(F(&amp;quot;Scan PICC to see UID, SAK, type, and data blocks...&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
   if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {&lt;br /&gt;
&lt;br /&gt;
    //Serial.println(&amp;quot;SSD1306 allocation failed&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
    for(;;);&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
&lt;br /&gt;
   // réinitialiser le cycle s'il n'y a pas de carte sur le lecteur&lt;br /&gt;
&lt;br /&gt;
   if ( ! mfrc522.PICC_IsNewCardPresent()) {&lt;br /&gt;
&lt;br /&gt;
      display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
      return;&lt;br /&gt;
&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   if ( ! mfrc522.PICC_ReadCardSerial()) {&lt;br /&gt;
&lt;br /&gt;
      display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
      return;&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   //Ecrire la clé UID sur le moniteur série&lt;br /&gt;
&lt;br /&gt;
   //mfrc522.PICC_DumpToSerial(&amp;amp;(mfrc522.uid));&lt;br /&gt;
&lt;br /&gt;
   // recuperation de l'UID et concaténation de sa valeur en hex dans un string&lt;br /&gt;
&lt;br /&gt;
  String myKey=String(mfrc522.uid.uidByte[0],HEX) + &amp;quot; &amp;quot; + String(mfrc522.uid.uidByte[1],HEX) + &amp;quot; &amp;quot; + String(mfrc522.uid.uidByte[2],HEX) + &amp;quot; &amp;quot; + String(mfrc522.uid.uidByte[3],HEX);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  //Booléen qui définit si la carte est valide (1) ou non (0)&lt;br /&gt;
&lt;br /&gt;
  bool accessOk = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Si chaque valeur de la clé UID de la carte correspond à une clé UID valide, alors accessOk = 1 (On définit que la carte est valide)&lt;br /&gt;
&lt;br /&gt;
for(int y = 0; y &amp;lt; (sizeof(keyOk)/sizeof(String)) ; y++){&lt;br /&gt;
&lt;br /&gt;
  if(keyOk[y] == myKey){&lt;br /&gt;
&lt;br /&gt;
    accessOk = 1;&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Si la carte est valide, alors on affiche le plan et le texte&lt;br /&gt;
&lt;br /&gt;
if(accessOk == 1){&lt;br /&gt;
&lt;br /&gt;
   delay(500);&lt;br /&gt;
&lt;br /&gt;
   digitalWrite(GRN, HIGH);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(ORG, LOW);&lt;br /&gt;
&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
  display.setTextSize(1);&lt;br /&gt;
&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.setCursor(0, 2);&lt;br /&gt;
&lt;br /&gt;
  // Display static text&lt;br /&gt;
&lt;br /&gt;
  //Ecrire &amp;quot;Bonne carte!&amp;quot; aux coordonnées 0,2 de l'écran&lt;br /&gt;
&lt;br /&gt;
  display.println(&amp;quot;Bonne carte!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  //Affiche un rectangle qui représente la table au centre de la pièce&lt;br /&gt;
&lt;br /&gt;
  display.drawRect(50, 20, 50, 30, WHITE);&lt;br /&gt;
&lt;br /&gt;
  //Affiche les lignes aux bords de l'écran qui représentent les murs&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 0, 127, 0, WHITE);&lt;br /&gt;
&lt;br /&gt;
  //Le décalage en X entre les deux prochaines lignes laisse un espace vide qui représente la porte&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 0, 0, 38, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 58, 0, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  //Affiche les lignes aux bords de l'écran qui représentent les murs&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(127, 0, 127, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 63, 127, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  /*Affiche progressivement le trajet à suivre dans la pièce.&lt;br /&gt;
&lt;br /&gt;
  Des tirets représentent le chemin à suivre et une croix représente ce que l'on cherche*/&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 48, 5, 48, WHITE); //Affiche un tiret, c'est à dire une ligne courte&lt;br /&gt;
&lt;br /&gt;
  display.display();// Affiche sur l'écran tous les élements, en ajoutant ceux qu'on a définit depuis le dernier &amp;quot;display.display();&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  delay(500); //Applique un délais de 500 ms avant le prochain affichage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// On recommence ces 3 lignes en changeant les coordonnées pour chaque tiret&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(10, 48, 15, 48, WHITE);//Affiche un nouveau tiret, c'est à dire une ligne courte&lt;br /&gt;
&lt;br /&gt;
  display.display();//Affiche la même chose qu'au dernier &amp;quot;display.display(); avec le nouveau tiret en plus&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(20, 48, 25, 48, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(30, 48, 35, 48, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(40, 48, 40, 53, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(45, 58, 50, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(55, 58, 60, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(65, 58, 70, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(75, 58, 80, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(85, 58, 90, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(95, 58, 100, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
// Ici on affiche 2 tirets qui se croisent afin de faire une croix&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(105, 53, 115, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(115, 53, 105, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Si la carte n'est pas valide, alors on affiche seulement &amp;quot;Mauvaise carte&amp;quot; aux coordonnées 0,2 de l'écran et on n'affiche pas le plan&lt;br /&gt;
&lt;br /&gt;
  else{&lt;br /&gt;
&lt;br /&gt;
    digitalWrite(GRN, LOW);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(ORG, HIGH);&lt;br /&gt;
&lt;br /&gt;
   display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
  display.setTextSize(1);&lt;br /&gt;
&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.setCursor(0, 2);&lt;br /&gt;
&lt;br /&gt;
  // Display static text&lt;br /&gt;
&lt;br /&gt;
  display.println(&amp;quot;Mauvaise carte!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Brancher&lt;br /&gt;
|Step_Content=Brancher l’Arduino sur un port USB de l’ordinateur.&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Cliquer&lt;br /&gt;
|Step_Content=Cliquer sur l’image représentant une sorte de v, puis sur l’image représentant une flèche (le programme sera mis dans l’Arduino.&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Résultat&lt;br /&gt;
|Step_Content=Attendre la fin du transfert.&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Observations=Par défaut, l’écran n’affiche rien et les 2 leds sont éteintes. Si l’on passe un mauvais badge/carte, le message &amp;quot;Mauvaise carte!&amp;quot; s’affiche sur l’écran OLED mais pas la carte. De plus, la led orange s’allume.&lt;br /&gt;
&lt;br /&gt;
Si on passe le bon badge/carte, le message &amp;quot;Bonne carte!&amp;quot; s’affiche ainsi que la carte. De plus, la led verte s’allume. L’affichage de cette carte n’est pas instantané mais suit une suite d’instructions entrecoupées de pauses.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le code UID de la bonne carte/ou du bon badge est inscrit dans le code et peut être modifié.&lt;br /&gt;
|Avertissement=Une erreur de branchement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Certains composants électroniques Arduino nécessitent d’être soudés à des fils afin de fonctionner.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se tromper dans les codages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Pierre Touchard</name></author>
		
	</entry>
	<entry>
		<id>https://www.wikidebrouillard.org/w/index.php?title=%C3%89nigme_d%27Escape_Game_-_Carte_magn%C3%A9tique_et_carte_au_tr%C3%A9sor&amp;diff=18162</id>
		<title>Énigme d'Escape Game - Carte magnétique et carte au trésor</title>
		<link rel="alternate" type="text/html" href="https://www.wikidebrouillard.org/w/index.php?title=%C3%89nigme_d%27Escape_Game_-_Carte_magn%C3%A9tique_et_carte_au_tr%C3%A9sor&amp;diff=18162"/>
		<updated>2024-11-06T17:01:21Z</updated>

		<summary type="html">&lt;p&gt;Pierre Touchard : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=_nigme_d_Escape_Game_-_Carte_magn_tique_et_carte_au_tr_sor_WhatsApp_Image_2024-11-06_at_15.44.55.jpeg&lt;br /&gt;
|Licences=Attribution (CC-BY)&lt;br /&gt;
|Description=Vous avez un trésor à faire trouver et pour cela, quoi de mieux qu’une carte au trésor ? Celle-ci sera électronique et ne pourra être lu que par le détenteur du bon badge !&lt;br /&gt;
|Disciplines scientifiques=Arduino, Computing, Electricity&lt;br /&gt;
|Difficulty=Technical&lt;br /&gt;
|Duration=1&lt;br /&gt;
|Duration-type=hour(s)&lt;br /&gt;
|Tags=Arduino, escape game, Electronique&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|ItemList={{ItemList&lt;br /&gt;
|Item=Arduino Uno&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=RFID-RC522&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=LED&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Ecran OLED 0.96 pouces I2C&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Fil électrique&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Platine de Prototypage&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Logiciel Arduino&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Résistance&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Réaliser&lt;br /&gt;
|Step_Content=Réaliser le montage suivant&lt;br /&gt;
|Step_Picture_00=_nigme_d_Escape_Game_-_Carte_magn_tique_et_carte_au_tr_sor_SCHEMA_STAGE.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Lancer&lt;br /&gt;
|Step_Content=Lancer le logiciel Arduino&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Copier&lt;br /&gt;
|Step_Content=Copier/code suivant dans le programme permettant d’utiliser Arduino :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Inspiré des codes du site &amp;lt;nowiki&amp;gt;https://retroetgeek.com/arduino/arduino-rfid-rc522/&amp;lt;/nowiki&amp;gt; et ceux du site &amp;lt;nowiki&amp;gt;https://randomnerdtutorials.com/guide-for-oled-display-with-arduino/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;quot;SPI.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;quot;MFRC522.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;lt;Adafruit_SSD1306.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;lt;Fonts/FreeSerif9pt7b.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define RST_PIN  9 // RES pin&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define SS_PIN  10 // SDA (SS) pin&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define SCREEN_WIDTH 128 // OLED display width, in pixels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define SCREEN_HEIGHT 64 // OLED display height, in pixels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define ORG 3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define GRN 4&lt;br /&gt;
&lt;br /&gt;
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)&lt;br /&gt;
&lt;br /&gt;
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &amp;amp;Wire, -1);&lt;br /&gt;
&lt;br /&gt;
MFRC522 mfrc522(SS_PIN, RST_PIN);&lt;br /&gt;
&lt;br /&gt;
//keyOk ets l'ensemble des valeurs de la clé UID de la carte que l'on veut définir comme valide&lt;br /&gt;
&lt;br /&gt;
String keyOk[]={&amp;quot;39 11 d1 59&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
  pinMode(GRN, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
   pinMode(ORG, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
   Serial.begin(9600);&lt;br /&gt;
&lt;br /&gt;
   SPI.begin();&lt;br /&gt;
&lt;br /&gt;
   mfrc522.PCD_Init();&lt;br /&gt;
&lt;br /&gt;
   delay(4);&lt;br /&gt;
&lt;br /&gt;
   //mfrc522.PCD_DumpVersionToSerial();&lt;br /&gt;
&lt;br /&gt;
  //Serial.println(F(&amp;quot;Scan PICC to see UID, SAK, type, and data blocks...&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
   if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {&lt;br /&gt;
&lt;br /&gt;
    //Serial.println(&amp;quot;SSD1306 allocation failed&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
    for(;;);&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
&lt;br /&gt;
   // réinitialiser le cycle s'il n'y a pas de carte sur le lecteur&lt;br /&gt;
&lt;br /&gt;
   if ( ! mfrc522.PICC_IsNewCardPresent()) {&lt;br /&gt;
&lt;br /&gt;
      display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
      return;&lt;br /&gt;
&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   if ( ! mfrc522.PICC_ReadCardSerial()) {&lt;br /&gt;
&lt;br /&gt;
      display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
      return;&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   //Ecrire la clé UID sur le moniteur série&lt;br /&gt;
&lt;br /&gt;
   //mfrc522.PICC_DumpToSerial(&amp;amp;(mfrc522.uid));&lt;br /&gt;
&lt;br /&gt;
   // recuperation de l'UID et concaténation de sa valeur en hex dans un string&lt;br /&gt;
&lt;br /&gt;
  String myKey=String(mfrc522.uid.uidByte[0],HEX) + &amp;quot; &amp;quot; + String(mfrc522.uid.uidByte[1],HEX) + &amp;quot; &amp;quot; + String(mfrc522.uid.uidByte[2],HEX) + &amp;quot; &amp;quot; + String(mfrc522.uid.uidByte[3],HEX);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  //Booléen qui définit si la carte est valide (1) ou non (0)&lt;br /&gt;
&lt;br /&gt;
  bool accessOk = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Si chaque valeur de la clé UID de la carte correspond à une clé UID valide, alors accessOk = 1 (On définit que la carte est valide)&lt;br /&gt;
&lt;br /&gt;
for(int y = 0; y &amp;lt; (sizeof(keyOk)/sizeof(String)) ; y++){&lt;br /&gt;
&lt;br /&gt;
  if(keyOk[y] == myKey){&lt;br /&gt;
&lt;br /&gt;
    accessOk = 1;&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Si la carte est valide, alors on affiche le plan et le texte&lt;br /&gt;
&lt;br /&gt;
if(accessOk == 1){&lt;br /&gt;
&lt;br /&gt;
   delay(500);&lt;br /&gt;
&lt;br /&gt;
   digitalWrite(GRN, HIGH);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(ORG, LOW);&lt;br /&gt;
&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
  display.setTextSize(1);&lt;br /&gt;
&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.setCursor(0, 2);&lt;br /&gt;
&lt;br /&gt;
  // Display static text&lt;br /&gt;
&lt;br /&gt;
  //Ecrire &amp;quot;Bonne carte!&amp;quot; aux coordonnées 0,2 de l'écran&lt;br /&gt;
&lt;br /&gt;
  display.println(&amp;quot;Bonne carte!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  //Affiche un rectangle qui représente la table au centre de la pièce&lt;br /&gt;
&lt;br /&gt;
  display.drawRect(50, 20, 50, 30, WHITE);&lt;br /&gt;
&lt;br /&gt;
  //Affiche les lignes aux bords de l'écran qui représentent les murs&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 0, 127, 0, WHITE);&lt;br /&gt;
&lt;br /&gt;
  //Le décalage en X entre les deux prochaines lignes laisse un espace vide qui représente la porte&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 0, 0, 38, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 58, 0, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  //Affiche les lignes aux bords de l'écran qui représentent les murs&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(127, 0, 127, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 63, 127, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  /*Affiche progressivement le trajet à suivre dans la pièce.&lt;br /&gt;
&lt;br /&gt;
  Des tirets représentent le chemin à suivre et une croix représente ce que l'on cherche*/&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 48, 5, 48, WHITE); //Affiche un tiret, c'est à dire une ligne courte&lt;br /&gt;
&lt;br /&gt;
  display.display();// Affiche sur l'écran tous les élements, en ajoutant ceux qu'on a définit depuis le dernier &amp;quot;display.display();&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  delay(500); //Applique un délais de 500 ms avant le prochain affichage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// On recommence ces 3 lignes en changeant les coordonnées pour chaque tiret&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(10, 48, 15, 48, WHITE);//Affiche un nouveau tiret, c'est à dire une ligne courte&lt;br /&gt;
&lt;br /&gt;
  display.display();//Affiche la même chose qu'au dernier &amp;quot;display.display(); avec le nouveau tiret en plus&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(20, 48, 25, 48, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(30, 48, 35, 48, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(40, 48, 40, 53, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(45, 58, 50, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(55, 58, 60, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(65, 58, 70, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(75, 58, 80, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(85, 58, 90, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(95, 58, 100, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
// Ici on affiche 2 tirets qui se croisent afin de faire une croix&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(105, 53, 115, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(115, 53, 105, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Si la carte n'est pas valide, alors on affiche seulement &amp;quot;Mauvaise carte&amp;quot; aux coordonnées 0,2 de l'écran et on n'affiche pas le plan&lt;br /&gt;
&lt;br /&gt;
  else{&lt;br /&gt;
&lt;br /&gt;
    digitalWrite(GRN, LOW);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(ORG, HIGH);&lt;br /&gt;
&lt;br /&gt;
   display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
  display.setTextSize(1);&lt;br /&gt;
&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.setCursor(0, 2);&lt;br /&gt;
&lt;br /&gt;
  // Display static text&lt;br /&gt;
&lt;br /&gt;
  display.println(&amp;quot;Mauvaise carte!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Brancher&lt;br /&gt;
|Step_Content=Brancher l’Arduino sur un port USB de l’ordinateur.&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Cliquer&lt;br /&gt;
|Step_Content=Cliquer sur l’image représentant une sorte de v, puis sur l’image représentant une flèche (le programme sera mis dans l’Arduino.&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Résultat&lt;br /&gt;
|Step_Content=Attendre la fin du transfert.&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Observations=Par défaut, l’écran n’affiche rien et les 2 leds sont éteintes. Si l’on passe un mauvais badge/carte, le message &amp;quot;Mauvaise carte!&amp;quot; s’affiche sur l’écran OLED mais pas la carte. De plus, la led orange s’allume.&lt;br /&gt;
&lt;br /&gt;
Si on passe le bon badge/carte, le message &amp;quot;Bonne carte!&amp;quot; s’affiche ainsi que la carte. De plus, la led verte s’allume. L’affichage de cette carte n’est pas instantané mais suit une suite d’instructions entrecoupées de pauses.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le code UID de la bonne carte/ou du bon badge est inscrit dans le code et peut être modifié.&lt;br /&gt;
|Avertissement=Une erreur de branchement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Certains composants électroniques Arduino nécessitent d’être soudés à des fils afin de fonctionner.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se tromper dans les codages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Pierre Touchard</name></author>
		
	</entry>
	<entry>
		<id>https://www.wikidebrouillard.org/w/index.php?title=%C3%89nigme_d%27Escape_Game_-_Carte_magn%C3%A9tique_et_carte_au_tr%C3%A9sor&amp;diff=18161</id>
		<title>Énigme d'Escape Game - Carte magnétique et carte au trésor</title>
		<link rel="alternate" type="text/html" href="https://www.wikidebrouillard.org/w/index.php?title=%C3%89nigme_d%27Escape_Game_-_Carte_magn%C3%A9tique_et_carte_au_tr%C3%A9sor&amp;diff=18161"/>
		<updated>2024-11-06T16:33:13Z</updated>

		<summary type="html">&lt;p&gt;Pierre Touchard : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=_nigme_d_Escape_Game_-_Carte_magn_tique_et_carte_au_tr_sor_WhatsApp_Image_2024-11-06_at_15.44.55.jpeg&lt;br /&gt;
|Licences=Attribution (CC-BY)&lt;br /&gt;
|Description=Vous avez un trésor à faire trouver et pour cela, quoi de mieux qu’une carte au trésor ? Celle-ci sera électronique et ne pourra être lu que par le détenteur du bon badge !&lt;br /&gt;
|Disciplines scientifiques=Arduino, Computing, Electricity&lt;br /&gt;
|Difficulty=Technical&lt;br /&gt;
|Duration=1&lt;br /&gt;
|Duration-type=hour(s)&lt;br /&gt;
|Tags=Arduino, escape game, Electronique&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|ItemList={{ItemList&lt;br /&gt;
|Item=Arduino Uno&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=RFID-RC522&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=LED&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Ecran OLED 0.96 pouces I2C&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Fil électrique&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Platine de Prototypage&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Logiciel Arduino&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Résistance&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Réaliser&lt;br /&gt;
|Step_Content=Réaliser le montage suivant&lt;br /&gt;
|Step_Picture_00=_nigme_d_Escape_Game_-_Carte_magn_tique_et_carte_au_tr_sor_SCHEMA_STAGE.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Lancer&lt;br /&gt;
|Step_Content=Lancer le logiciel Arduino&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Copier&lt;br /&gt;
|Step_Content=Copier/code suivant dans le programme permettant d’utiliser Arduino :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Inspiré des codes du site &amp;lt;nowiki&amp;gt;https://retroetgeek.com/arduino/arduino-rfid-rc522/&amp;lt;/nowiki&amp;gt; et ceux du site &amp;lt;nowiki&amp;gt;https://randomnerdtutorials.com/guide-for-oled-display-with-arduino/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;quot;SPI.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;quot;MFRC522.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;lt;Adafruit_SSD1306.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;lt;Fonts/FreeSerif9pt7b.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define RST_PIN  9 // RES pin&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define SS_PIN  10 // SDA (SS) pin&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define SCREEN_WIDTH 128 // OLED display width, in pixels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define SCREEN_HEIGHT 64 // OLED display height, in pixels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define ORG 3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define GRN 4&lt;br /&gt;
&lt;br /&gt;
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)&lt;br /&gt;
&lt;br /&gt;
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &amp;amp;Wire, -1);&lt;br /&gt;
&lt;br /&gt;
MFRC522 mfrc522(SS_PIN, RST_PIN);&lt;br /&gt;
&lt;br /&gt;
//keyOk ets l'ensemble des valeurs de la clé UID de la carte que l'on veut définir comme valide&lt;br /&gt;
&lt;br /&gt;
String keyOk[]={&amp;quot;39 11 d1 59&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
  pinMode(GRN, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
   pinMode(ORG, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
   Serial.begin(9600);&lt;br /&gt;
&lt;br /&gt;
   SPI.begin();&lt;br /&gt;
&lt;br /&gt;
   mfrc522.PCD_Init();&lt;br /&gt;
&lt;br /&gt;
   delay(4);&lt;br /&gt;
&lt;br /&gt;
   //mfrc522.PCD_DumpVersionToSerial();&lt;br /&gt;
&lt;br /&gt;
  //Serial.println(F(&amp;quot;Scan PICC to see UID, SAK, type, and data blocks...&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
   if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {&lt;br /&gt;
&lt;br /&gt;
    //Serial.println(&amp;quot;SSD1306 allocation failed&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
    for(;;);&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
&lt;br /&gt;
   // réinitialiser le cycle s'il n'y a pas de carte sur le lecteur&lt;br /&gt;
&lt;br /&gt;
   if ( ! mfrc522.PICC_IsNewCardPresent()) {&lt;br /&gt;
&lt;br /&gt;
      display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
      return;&lt;br /&gt;
&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   if ( ! mfrc522.PICC_ReadCardSerial()) {&lt;br /&gt;
&lt;br /&gt;
      display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
      return;&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   //Ecrire la clé UID sur le moniteur série&lt;br /&gt;
&lt;br /&gt;
   //mfrc522.PICC_DumpToSerial(&amp;amp;(mfrc522.uid));&lt;br /&gt;
&lt;br /&gt;
   // recuperation de l'UID et concaténation de sa valeur en hex dans un string&lt;br /&gt;
&lt;br /&gt;
  String myKey=String(mfrc522.uid.uidByte[0],HEX) + &amp;quot; &amp;quot; + String(mfrc522.uid.uidByte[1],HEX) + &amp;quot; &amp;quot; + String(mfrc522.uid.uidByte[2],HEX) + &amp;quot; &amp;quot; + String(mfrc522.uid.uidByte[3],HEX);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  //Booléen qui définit si la carte est valide (1) ou non (0)&lt;br /&gt;
&lt;br /&gt;
  bool accessOk = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Si chaque valeur de la clé UID de la carte correspond à une clé UID valide, alors accessOk = 1 (On définit que la carte est valide)&lt;br /&gt;
&lt;br /&gt;
for(int y = 0; y &amp;lt; (sizeof(keyOk)/sizeof(String)) ; y++){&lt;br /&gt;
&lt;br /&gt;
  if(keyOk[y] == myKey){&lt;br /&gt;
&lt;br /&gt;
    accessOk = 1;&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Si la carte est valide, alors on affiche le plan et le texte&lt;br /&gt;
&lt;br /&gt;
if(accessOk == 1){&lt;br /&gt;
&lt;br /&gt;
   delay(500);&lt;br /&gt;
&lt;br /&gt;
   digitalWrite(GRN, HIGH);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(ORG, LOW);&lt;br /&gt;
&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
  display.setTextSize(1);&lt;br /&gt;
&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.setCursor(0, 2);&lt;br /&gt;
&lt;br /&gt;
  // Display static text&lt;br /&gt;
&lt;br /&gt;
  //Ecrire &amp;quot;Bonne carte!&amp;quot; aux coordonnées 0,2 de l'écran&lt;br /&gt;
&lt;br /&gt;
  display.println(&amp;quot;Bonne carte!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  //Affiche un rectangle qui représente la table au centre de la pièce&lt;br /&gt;
&lt;br /&gt;
  display.drawRect(50, 20, 50, 30, WHITE);&lt;br /&gt;
&lt;br /&gt;
  //Affiche les lignes aux bords de l'écran qui représentent les murs&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 0, 127, 0, WHITE);&lt;br /&gt;
&lt;br /&gt;
  //Le décalage en X entre les deux prochaines lignes laisse un espace vide qui représente la porte&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 0, 0, 38, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 58, 0, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  //Affiche les lignes aux bords de l'écran qui représentent les murs&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(127, 0, 127, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 63, 127, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  /*Affiche progressivement le trajet à suivre dans la pièce.&lt;br /&gt;
&lt;br /&gt;
  Des tirets représentent le chemin à suivre et une croix représente ce que l'on cherche*/&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 48, 5, 48, WHITE); //Affiche un tiret, c'est à dire une ligne courte&lt;br /&gt;
&lt;br /&gt;
  display.display();// Affiche sur l'écran tous les élements, en ajoutant ceux qu'on a définit depuis le dernier &amp;quot;display.display();&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  delay(500); //Applique un délais de 500 ms avant le prochain affichage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// On recommence ces 3 lignes en changeant les coordonnées pour chaque tiret&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(10, 48, 15, 48, WHITE);//Affiche un nouveau tiret, c'est à dire une ligne courte&lt;br /&gt;
&lt;br /&gt;
  display.display();//Affiche la même chose qu'au dernier &amp;quot;display.display(); avec le nouveau tiret en plus&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(20, 48, 25, 48, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(30, 48, 35, 48, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(40, 48, 40, 53, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(45, 58, 50, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(55, 58, 60, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(65, 58, 70, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(75, 58, 80, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(85, 58, 90, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(95, 58, 100, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
// Ici on affiche 2 tirets qui se croisent afin de faire une croix&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(105, 53, 115, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(115, 53, 105, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Si la carte n'est pas valide, alors on affiche seulement &amp;quot;Mauvaise carte&amp;quot; aux coordonnées 0,2 de l'écran et on n'affiche pas le plan&lt;br /&gt;
&lt;br /&gt;
  else{&lt;br /&gt;
&lt;br /&gt;
    digitalWrite(GRN, LOW);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(ORG, HIGH);&lt;br /&gt;
&lt;br /&gt;
   display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
  display.setTextSize(1);&lt;br /&gt;
&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.setCursor(0, 2);&lt;br /&gt;
&lt;br /&gt;
  // Display static text&lt;br /&gt;
&lt;br /&gt;
  display.println(&amp;quot;Mauvaise carte!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Brancher&lt;br /&gt;
|Step_Content=Brancher l’Arduino sur un port USB de l’ordinateur.&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Cliquer&lt;br /&gt;
|Step_Content=Cliquer sur l’image représentant une sorte de v, puis sur l’image représentant une flèche (le programme sera mis dans l’Arduino.&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Résultat&lt;br /&gt;
|Step_Content=Attendre la fin du transfert.&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Observations=Par défaut, l’écran n’affiche rien et les 2 leds sont éteintes. Si l’on passe un mauvais badge/carte, le message &amp;quot;Mauvaise carte!&amp;quot; s’affiche sur l’écran OLED mais pas la carte. De plus, la led orange s’allume.&lt;br /&gt;
&lt;br /&gt;
Si on passe le bon badge/carte, le message &amp;quot;Bonne carte!&amp;quot; s’affiche ainsi que la carte. De plus, la led verte s’allume. L’affichage de cette carte n’est pas instantané mais suit une suite d’instructions entrecoupées de pauses (TEMPS A METTRE).&lt;br /&gt;
|Avertissement=Le code UID de la bonne carte/ou du bon badge est inscrit dans le code et peut être modifié.&lt;br /&gt;
|Explanations=Une erreur de branchement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Certains composants électroniques Arduino nécessitent d’être soudés à des fils afin de fonctionner.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se tromper dans les codages.&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Pierre Touchard</name></author>
		
	</entry>
	<entry>
		<id>https://www.wikidebrouillard.org/w/index.php?title=%C3%89nigme_d%27Escape_Game_-_Carte_magn%C3%A9tique_et_carte_au_tr%C3%A9sor&amp;diff=18160</id>
		<title>Énigme d'Escape Game - Carte magnétique et carte au trésor</title>
		<link rel="alternate" type="text/html" href="https://www.wikidebrouillard.org/w/index.php?title=%C3%89nigme_d%27Escape_Game_-_Carte_magn%C3%A9tique_et_carte_au_tr%C3%A9sor&amp;diff=18160"/>
		<updated>2024-11-06T16:30:30Z</updated>

		<summary type="html">&lt;p&gt;Pierre Touchard : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=_nigme_d_Escape_Game_-_Carte_magn_tique_et_carte_au_tr_sor_WhatsApp_Image_2024-11-06_at_15.44.55.jpeg&lt;br /&gt;
|Licences=Attribution (CC-BY)&lt;br /&gt;
|Description=Vous avez un trésor à faire trouver et pour cela, quoi de mieux qu’une carte au trésor ? Celle-ci sera électronique et ne pourra être lu que par le détenteur du bon badge !&lt;br /&gt;
|Disciplines scientifiques=Arduino, Computing, Electricity&lt;br /&gt;
|Difficulty=Technical&lt;br /&gt;
|Duration=1&lt;br /&gt;
|Duration-type=hour(s)&lt;br /&gt;
|Tags=Arduino, escape game, Electronique&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|ItemList={{ItemList&lt;br /&gt;
|Item=Arduino Uno&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=RFID-RC522&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=LED&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Ecran OLED 0.96 pouces I2C&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Fil électrique&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Platine de Prototypage&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Logiciel Arduino&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Réaliser&lt;br /&gt;
|Step_Content=Réaliser le montage suivant&lt;br /&gt;
|Step_Picture_00=_nigme_d_Escape_Game_-_Carte_magn_tique_et_carte_au_tr_sor_SCHEMA_STAGE.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Lancer&lt;br /&gt;
|Step_Content=Lancer le logiciel Arduino&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Copier&lt;br /&gt;
|Step_Content=Copier/code suivant dans le programme permettant d’utiliser Arduino :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Inspiré des codes du site &amp;lt;nowiki&amp;gt;https://retroetgeek.com/arduino/arduino-rfid-rc522/&amp;lt;/nowiki&amp;gt; et ceux du site &amp;lt;nowiki&amp;gt;https://randomnerdtutorials.com/guide-for-oled-display-with-arduino/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;quot;SPI.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;quot;MFRC522.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;lt;Adafruit_SSD1306.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;lt;Fonts/FreeSerif9pt7b.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define RST_PIN  9 // RES pin&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define SS_PIN  10 // SDA (SS) pin&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define SCREEN_WIDTH 128 // OLED display width, in pixels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define SCREEN_HEIGHT 64 // OLED display height, in pixels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define ORG 3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define GRN 4&lt;br /&gt;
&lt;br /&gt;
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)&lt;br /&gt;
&lt;br /&gt;
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &amp;amp;Wire, -1);&lt;br /&gt;
&lt;br /&gt;
MFRC522 mfrc522(SS_PIN, RST_PIN);&lt;br /&gt;
&lt;br /&gt;
//keyOk ets l'ensemble des valeurs de la clé UID de la carte que l'on veut définir comme valide&lt;br /&gt;
&lt;br /&gt;
String keyOk[]={&amp;quot;39 11 d1 59&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
  pinMode(GRN, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
   pinMode(ORG, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
   Serial.begin(9600);&lt;br /&gt;
&lt;br /&gt;
   SPI.begin();&lt;br /&gt;
&lt;br /&gt;
   mfrc522.PCD_Init();&lt;br /&gt;
&lt;br /&gt;
   delay(4);&lt;br /&gt;
&lt;br /&gt;
   //mfrc522.PCD_DumpVersionToSerial();&lt;br /&gt;
&lt;br /&gt;
  //Serial.println(F(&amp;quot;Scan PICC to see UID, SAK, type, and data blocks...&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
   if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {&lt;br /&gt;
&lt;br /&gt;
    //Serial.println(&amp;quot;SSD1306 allocation failed&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
    for(;;);&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
&lt;br /&gt;
   // réinitialiser le cycle s'il n'y a pas de carte sur le lecteur&lt;br /&gt;
&lt;br /&gt;
   if ( ! mfrc522.PICC_IsNewCardPresent()) {&lt;br /&gt;
&lt;br /&gt;
      display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
      return;&lt;br /&gt;
&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   if ( ! mfrc522.PICC_ReadCardSerial()) {&lt;br /&gt;
&lt;br /&gt;
      display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
      return;&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   //Ecrire la clé UID sur le moniteur série&lt;br /&gt;
&lt;br /&gt;
   //mfrc522.PICC_DumpToSerial(&amp;amp;(mfrc522.uid));&lt;br /&gt;
&lt;br /&gt;
   // recuperation de l'UID et concaténation de sa valeur en hex dans un string&lt;br /&gt;
&lt;br /&gt;
  String myKey=String(mfrc522.uid.uidByte[0],HEX) + &amp;quot; &amp;quot; + String(mfrc522.uid.uidByte[1],HEX) + &amp;quot; &amp;quot; + String(mfrc522.uid.uidByte[2],HEX) + &amp;quot; &amp;quot; + String(mfrc522.uid.uidByte[3],HEX);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  //Booléen qui définit si la carte est valide (1) ou non (0)&lt;br /&gt;
&lt;br /&gt;
  bool accessOk = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Si chaque valeur de la clé UID de la carte correspond à une clé UID valide, alors accessOk = 1 (On définit que la carte est valide)&lt;br /&gt;
&lt;br /&gt;
for(int y = 0; y &amp;lt; (sizeof(keyOk)/sizeof(String)) ; y++){&lt;br /&gt;
&lt;br /&gt;
  if(keyOk[y] == myKey){&lt;br /&gt;
&lt;br /&gt;
    accessOk = 1;&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Si la carte est valide, alors on affiche le plan et le texte&lt;br /&gt;
&lt;br /&gt;
if(accessOk == 1){&lt;br /&gt;
&lt;br /&gt;
   delay(500);&lt;br /&gt;
&lt;br /&gt;
   digitalWrite(GRN, HIGH);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(ORG, LOW);&lt;br /&gt;
&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
  display.setTextSize(1);&lt;br /&gt;
&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.setCursor(0, 2);&lt;br /&gt;
&lt;br /&gt;
  // Display static text&lt;br /&gt;
&lt;br /&gt;
  //Ecrire &amp;quot;Bonne carte!&amp;quot; aux coordonnées 0,2 de l'écran&lt;br /&gt;
&lt;br /&gt;
  display.println(&amp;quot;Bonne carte!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  //Affiche un rectangle qui représente la table au centre de la pièce&lt;br /&gt;
&lt;br /&gt;
  display.drawRect(50, 20, 50, 30, WHITE);&lt;br /&gt;
&lt;br /&gt;
  //Affiche les lignes aux bords de l'écran qui représentent les murs&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 0, 127, 0, WHITE);&lt;br /&gt;
&lt;br /&gt;
  //Le décalage en X entre les deux prochaines lignes laisse un espace vide qui représente la porte&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 0, 0, 38, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 58, 0, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  //Affiche les lignes aux bords de l'écran qui représentent les murs&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(127, 0, 127, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 63, 127, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  /*Affiche progressivement le trajet à suivre dans la pièce.&lt;br /&gt;
&lt;br /&gt;
  Des tirets représentent le chemin à suivre et une croix représente ce que l'on cherche*/&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 48, 5, 48, WHITE); //Affiche un tiret, c'est à dire une ligne courte&lt;br /&gt;
&lt;br /&gt;
  display.display();// Affiche sur l'écran tous les élements, en ajoutant ceux qu'on a définit depuis le dernier &amp;quot;display.display();&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  delay(500); //Applique un délais de 500 ms avant le prochain affichage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// On recommence ces 3 lignes en changeant les coordonnées pour chaque tiret&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(10, 48, 15, 48, WHITE);//Affiche un nouveau tiret, c'est à dire une ligne courte&lt;br /&gt;
&lt;br /&gt;
  display.display();//Affiche la même chose qu'au dernier &amp;quot;display.display(); avec le nouveau tiret en plus&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(20, 48, 25, 48, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(30, 48, 35, 48, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(40, 48, 40, 53, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(45, 58, 50, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(55, 58, 60, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(65, 58, 70, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(75, 58, 80, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(85, 58, 90, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(95, 58, 100, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
// Ici on affiche 2 tirets qui se croisent afin de faire une croix&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(105, 53, 115, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(115, 53, 105, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Si la carte n'est pas valide, alors on affiche seulement &amp;quot;Mauvaise carte&amp;quot; aux coordonnées 0,2 de l'écran et on n'affiche pas le plan&lt;br /&gt;
&lt;br /&gt;
  else{&lt;br /&gt;
&lt;br /&gt;
    digitalWrite(GRN, LOW);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(ORG, HIGH);&lt;br /&gt;
&lt;br /&gt;
   display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
  display.setTextSize(1);&lt;br /&gt;
&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.setCursor(0, 2);&lt;br /&gt;
&lt;br /&gt;
  // Display static text&lt;br /&gt;
&lt;br /&gt;
  display.println(&amp;quot;Mauvaise carte!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Brancher&lt;br /&gt;
|Step_Content=Brancher l’Arduino sur un port USB de l’ordinateur.&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Cliquer&lt;br /&gt;
|Step_Content=Cliquer sur l’image représentant une sorte de v, puis sur l’image représentant une flèche (le programme sera mis dans l’Arduino.&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Résultat&lt;br /&gt;
|Step_Content=Attendre la fin du transfert.&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Observations=Par défaut, l’écran n’affiche rien et les 2 leds sont éteintes. Si l’on passe un mauvais badge/carte, le message &amp;quot;Mauvaise carte!&amp;quot; s’affiche sur l’écran OLED mais pas la carte. De plus, la led orange s’allume.&lt;br /&gt;
&lt;br /&gt;
Si on passe le bon badge/carte, le message &amp;quot;Bonne carte!&amp;quot; s’affiche ainsi que la carte. De plus, la led verte s’allume. L’affichage de cette carte n’est pas instantané mais suit une suite d’instructions entrecoupées de pauses (TEMPS A METTRE).&lt;br /&gt;
|Avertissement=Le code UID de la bonne carte/ou du bon badge est inscrit dans le code et peut être modifié.&lt;br /&gt;
|Explanations=Une erreur de branchement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Certains composants électroniques Arduino nécessitent d’être soudés à des fils afin de fonctionner.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se tromper dans les codages.&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Pierre Touchard</name></author>
		
	</entry>
	<entry>
		<id>https://www.wikidebrouillard.org/w/index.php?title=Fichier:Nigme_d_Escape_Game_-_Carte_magn_tique_et_carte_au_tr_sor_SCHEMA_STAGE.png&amp;diff=18159</id>
		<title>Fichier:Nigme d Escape Game - Carte magn tique et carte au tr sor SCHEMA STAGE.png</title>
		<link rel="alternate" type="text/html" href="https://www.wikidebrouillard.org/w/index.php?title=Fichier:Nigme_d_Escape_Game_-_Carte_magn_tique_et_carte_au_tr_sor_SCHEMA_STAGE.png&amp;diff=18159"/>
		<updated>2024-11-06T16:30:18Z</updated>

		<summary type="html">&lt;p&gt;Pierre Touchard : _nigme_d_Escape_Game_-_Carte_magn_tique_et_carte_au_tr_sor_SCHEMA_STAGE&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;_nigme_d_Escape_Game_-_Carte_magn_tique_et_carte_au_tr_sor_SCHEMA_STAGE&lt;/div&gt;</summary>
		<author><name>Pierre Touchard</name></author>
		
	</entry>
	<entry>
		<id>https://www.wikidebrouillard.org/w/index.php?title=%C3%89nigme_d%27Escape_Game_-_Carte_magn%C3%A9tique_et_carte_au_tr%C3%A9sor&amp;diff=18158</id>
		<title>Énigme d'Escape Game - Carte magnétique et carte au trésor</title>
		<link rel="alternate" type="text/html" href="https://www.wikidebrouillard.org/w/index.php?title=%C3%89nigme_d%27Escape_Game_-_Carte_magn%C3%A9tique_et_carte_au_tr%C3%A9sor&amp;diff=18158"/>
		<updated>2024-11-06T14:52:38Z</updated>

		<summary type="html">&lt;p&gt;Pierre Touchard : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=_nigme_d_Escape_Game_-_Carte_magn_tique_et_carte_au_tr_sor_WhatsApp_Image_2024-11-06_at_15.44.55.jpeg&lt;br /&gt;
|Licences=Attribution (CC-BY)&lt;br /&gt;
|Description=Vous avez un trésor à faire trouver et pour cela, quoi de mieux qu’une carte au trésor ? Celle-ci sera électronique et ne pourra être lu que par le détenteur du bon badge !&lt;br /&gt;
|Disciplines scientifiques=Arduino, Computing, Electricity&lt;br /&gt;
|Difficulty=Technical&lt;br /&gt;
|Duration=1&lt;br /&gt;
|Duration-type=hour(s)&lt;br /&gt;
|Tags=Arduino, escape game, Electronique&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|ItemList={{ItemList&lt;br /&gt;
|Item=Arduino Uno&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=RFID-RC522&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=LED&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Ecran OLED 0.96 pouces I2C&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Fil électrique&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Platine de Prototypage&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Logiciel Arduino&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Réaliser&lt;br /&gt;
|Step_Content=Réaliser le montage suivant&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Lancer&lt;br /&gt;
|Step_Content=Lancer le logiciel Arduino&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Copier&lt;br /&gt;
|Step_Content=Copier/code suivant dans le programme permettant d’utiliser Arduino :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Inspiré des codes du site &amp;lt;nowiki&amp;gt;https://retroetgeek.com/arduino/arduino-rfid-rc522/&amp;lt;/nowiki&amp;gt; et ceux du site &amp;lt;nowiki&amp;gt;https://randomnerdtutorials.com/guide-for-oled-display-with-arduino/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;quot;SPI.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;quot;MFRC522.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;lt;Adafruit_SSD1306.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;lt;Fonts/FreeSerif9pt7b.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define RST_PIN  9 // RES pin&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define SS_PIN  10 // SDA (SS) pin&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define SCREEN_WIDTH 128 // OLED display width, in pixels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define SCREEN_HEIGHT 64 // OLED display height, in pixels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define ORG 3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define GRN 4&lt;br /&gt;
&lt;br /&gt;
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)&lt;br /&gt;
&lt;br /&gt;
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &amp;amp;Wire, -1);&lt;br /&gt;
&lt;br /&gt;
MFRC522 mfrc522(SS_PIN, RST_PIN);&lt;br /&gt;
&lt;br /&gt;
//keyOk ets l'ensemble des valeurs de la clé UID de la carte que l'on veut définir comme valide&lt;br /&gt;
&lt;br /&gt;
String keyOk[]={&amp;quot;39 11 d1 59&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
  pinMode(GRN, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
   pinMode(ORG, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
   Serial.begin(9600);&lt;br /&gt;
&lt;br /&gt;
   SPI.begin();&lt;br /&gt;
&lt;br /&gt;
   mfrc522.PCD_Init();&lt;br /&gt;
&lt;br /&gt;
   delay(4);&lt;br /&gt;
&lt;br /&gt;
   //mfrc522.PCD_DumpVersionToSerial();&lt;br /&gt;
&lt;br /&gt;
  //Serial.println(F(&amp;quot;Scan PICC to see UID, SAK, type, and data blocks...&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
   if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {&lt;br /&gt;
&lt;br /&gt;
    //Serial.println(&amp;quot;SSD1306 allocation failed&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
    for(;;);&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
&lt;br /&gt;
   // réinitialiser le cycle s'il n'y a pas de carte sur le lecteur&lt;br /&gt;
&lt;br /&gt;
   if ( ! mfrc522.PICC_IsNewCardPresent()) {&lt;br /&gt;
&lt;br /&gt;
      display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
      return;&lt;br /&gt;
&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   if ( ! mfrc522.PICC_ReadCardSerial()) {&lt;br /&gt;
&lt;br /&gt;
      display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
      return;&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   //Ecrire la clé UID sur le moniteur série&lt;br /&gt;
&lt;br /&gt;
   //mfrc522.PICC_DumpToSerial(&amp;amp;(mfrc522.uid));&lt;br /&gt;
&lt;br /&gt;
   // recuperation de l'UID et concaténation de sa valeur en hex dans un string&lt;br /&gt;
&lt;br /&gt;
  String myKey=String(mfrc522.uid.uidByte[0],HEX) + &amp;quot; &amp;quot; + String(mfrc522.uid.uidByte[1],HEX) + &amp;quot; &amp;quot; + String(mfrc522.uid.uidByte[2],HEX) + &amp;quot; &amp;quot; + String(mfrc522.uid.uidByte[3],HEX);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  //Booléen qui définit si la carte est valide (1) ou non (0)&lt;br /&gt;
&lt;br /&gt;
  bool accessOk = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Si chaque valeur de la clé UID de la carte correspond à une clé UID valide, alors accessOk = 1 (On définit que la carte est valide)&lt;br /&gt;
&lt;br /&gt;
for(int y = 0; y &amp;lt; (sizeof(keyOk)/sizeof(String)) ; y++){&lt;br /&gt;
&lt;br /&gt;
  if(keyOk[y] == myKey){&lt;br /&gt;
&lt;br /&gt;
    accessOk = 1;&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Si la carte est valide, alors on affiche le plan et le texte&lt;br /&gt;
&lt;br /&gt;
if(accessOk == 1){&lt;br /&gt;
&lt;br /&gt;
   delay(500);&lt;br /&gt;
&lt;br /&gt;
   digitalWrite(GRN, HIGH);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(ORG, LOW);&lt;br /&gt;
&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
  display.setTextSize(1);&lt;br /&gt;
&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.setCursor(0, 2);&lt;br /&gt;
&lt;br /&gt;
  // Display static text&lt;br /&gt;
&lt;br /&gt;
  //Ecrire &amp;quot;Bonne carte!&amp;quot; aux coordonnées 0,2 de l'écran&lt;br /&gt;
&lt;br /&gt;
  display.println(&amp;quot;Bonne carte!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  //Affiche un rectangle qui représente la table au centre de la pièce&lt;br /&gt;
&lt;br /&gt;
  display.drawRect(50, 20, 50, 30, WHITE);&lt;br /&gt;
&lt;br /&gt;
  //Affiche les lignes aux bords de l'écran qui représentent les murs&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 0, 127, 0, WHITE);&lt;br /&gt;
&lt;br /&gt;
  //Le décalage en X entre les deux prochaines lignes laisse un espace vide qui représente la porte&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 0, 0, 38, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 58, 0, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  //Affiche les lignes aux bords de l'écran qui représentent les murs&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(127, 0, 127, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 63, 127, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  /*Affiche progressivement le trajet à suivre dans la pièce.&lt;br /&gt;
&lt;br /&gt;
  Des tirets représentent le chemin à suivre et une croix représente ce que l'on cherche*/&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 48, 5, 48, WHITE); //Affiche un tiret, c'est à dire une ligne courte&lt;br /&gt;
&lt;br /&gt;
  display.display();// Affiche sur l'écran tous les élements, en ajoutant ceux qu'on a définit depuis le dernier &amp;quot;display.display();&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  delay(500); //Applique un délais de 500 ms avant le prochain affichage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// On recommence ces 3 lignes en changeant les coordonnées pour chaque tiret&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(10, 48, 15, 48, WHITE);//Affiche un nouveau tiret, c'est à dire une ligne courte&lt;br /&gt;
&lt;br /&gt;
  display.display();//Affiche la même chose qu'au dernier &amp;quot;display.display(); avec le nouveau tiret en plus&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(20, 48, 25, 48, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(30, 48, 35, 48, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(40, 48, 40, 53, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(45, 58, 50, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(55, 58, 60, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(65, 58, 70, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(75, 58, 80, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(85, 58, 90, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(95, 58, 100, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
// Ici on affiche 2 tirets qui se croisent afin de faire une croix&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(105, 53, 115, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(115, 53, 105, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Si la carte n'est pas valide, alors on affiche seulement &amp;quot;Mauvaise carte&amp;quot; aux coordonnées 0,2 de l'écran et on n'affiche pas le plan&lt;br /&gt;
&lt;br /&gt;
  else{&lt;br /&gt;
&lt;br /&gt;
    digitalWrite(GRN, LOW);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(ORG, HIGH);&lt;br /&gt;
&lt;br /&gt;
   display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
  display.setTextSize(1);&lt;br /&gt;
&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.setCursor(0, 2);&lt;br /&gt;
&lt;br /&gt;
  // Display static text&lt;br /&gt;
&lt;br /&gt;
  display.println(&amp;quot;Mauvaise carte!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Brancher&lt;br /&gt;
|Step_Content=Brancher l’Arduino sur un port USB de l’ordinateur.&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Cliquer&lt;br /&gt;
|Step_Content=Cliquer sur l’image représentant une sorte de v, puis sur l’image représentant une flèche (le programme sera mis dans l’Arduino.&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Résultat&lt;br /&gt;
|Step_Content=Attendre la fin du transfert.&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Observations=Par défaut, l’écran n’affiche rien et les 2 leds sont éteintes. Si l’on passe un mauvais badge/carte, le message &amp;quot;Mauvaise carte!&amp;quot; s’affiche sur l’écran OLED mais pas la carte. De plus, la led orange s’allume.&lt;br /&gt;
&lt;br /&gt;
Si on passe le bon badge/carte, le message &amp;quot;Bonne carte!&amp;quot; s’affiche ainsi que la carte. De plus, la led verte s’allume. L’affichage de cette carte n’est pas instantané mais suit une suite d’instructions entrecoupées de pauses (TEMPS A METTRE).&lt;br /&gt;
|Avertissement=Le code UID de la bonne carte/ou du bon badge est inscrit dans le code et peut être modifié.&lt;br /&gt;
|Explanations=Une erreur de branchement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Certains composants électroniques Arduino nécessitent d’être soudés à des fils afin de fonctionner.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se tromper dans les codages.&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Pierre Touchard</name></author>
		
	</entry>
	<entry>
		<id>https://www.wikidebrouillard.org/w/index.php?title=%C3%89nigme_d%27Escape_Game_-_Carte_magn%C3%A9tique_et_carte_au_tr%C3%A9sor&amp;diff=18157</id>
		<title>Énigme d'Escape Game - Carte magnétique et carte au trésor</title>
		<link rel="alternate" type="text/html" href="https://www.wikidebrouillard.org/w/index.php?title=%C3%89nigme_d%27Escape_Game_-_Carte_magn%C3%A9tique_et_carte_au_tr%C3%A9sor&amp;diff=18157"/>
		<updated>2024-11-06T14:45:47Z</updated>

		<summary type="html">&lt;p&gt;Pierre Touchard : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=_nigme_d_Escape_Game_-_Carte_magn_tique_et_carte_au_tr_sor_WhatsApp_Image_2024-11-06_at_15.44.55.jpeg&lt;br /&gt;
|Licences=Attribution (CC-BY)&lt;br /&gt;
|Description=Vous avez un trésor à faire trouver et pour cela, quoi de mieux qu’une carte au trésor ? Celle-ci sera électronique et ne pourra être lu que par le détenteur du bon badge !&lt;br /&gt;
|Disciplines scientifiques=Arduino, Computing, Electricity&lt;br /&gt;
|Difficulty=Technical&lt;br /&gt;
|Duration=1&lt;br /&gt;
|Duration-type=hour(s)&lt;br /&gt;
|Tags=Arduino, escape game, Electronique&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|ItemList={{ItemList&lt;br /&gt;
|Item=Arduino Uno&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=RFID-RC522&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=LED&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Ecran OLED 0.96 pouces I2C&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Fil électrique&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Platine de Prototypage&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Logiciel Arduino&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Réaliser&lt;br /&gt;
|Step_Content=Réaliser le montage suivant&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Lancer&lt;br /&gt;
|Step_Content=Lancer le logiciel Arduino&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Copier&lt;br /&gt;
|Step_Content=Copier/code suivant dans le programme permettant d’utiliser Arduino :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Inspiré des codes du site &amp;lt;nowiki&amp;gt;https://retroetgeek.com/arduino/arduino-rfid-rc522/&amp;lt;/nowiki&amp;gt; et ceux du site &amp;lt;nowiki&amp;gt;https://randomnerdtutorials.com/guide-for-oled-display-with-arduino/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;quot;SPI.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;quot;MFRC522.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;lt;Adafruit_SSD1306.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;lt;Fonts/FreeSerif9pt7b.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define RST_PIN  9 // RES pin&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define SS_PIN  10 // SDA (SS) pin&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define SCREEN_WIDTH 128 // OLED display width, in pixels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define SCREEN_HEIGHT 64 // OLED display height, in pixels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define ORG 3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define GRN 4&lt;br /&gt;
&lt;br /&gt;
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)&lt;br /&gt;
&lt;br /&gt;
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &amp;amp;Wire, -1);&lt;br /&gt;
&lt;br /&gt;
MFRC522 mfrc522(SS_PIN, RST_PIN);&lt;br /&gt;
&lt;br /&gt;
//keyOk ets l'ensemble des valeurs de la clé UID de la carte que l'on veut définir comme valide&lt;br /&gt;
&lt;br /&gt;
String keyOk[]={&amp;quot;39 11 d1 59&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
  pinMode(GRN, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
   pinMode(ORG, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
   Serial.begin(9600);&lt;br /&gt;
&lt;br /&gt;
   SPI.begin();&lt;br /&gt;
&lt;br /&gt;
   mfrc522.PCD_Init();&lt;br /&gt;
&lt;br /&gt;
   delay(4);&lt;br /&gt;
&lt;br /&gt;
   //mfrc522.PCD_DumpVersionToSerial();&lt;br /&gt;
&lt;br /&gt;
  //Serial.println(F(&amp;quot;Scan PICC to see UID, SAK, type, and data blocks...&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
   if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {&lt;br /&gt;
&lt;br /&gt;
    //Serial.println(&amp;quot;SSD1306 allocation failed&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
    for(;;);&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
&lt;br /&gt;
   // réinitialiser le cycle s'il n'y a pas de carte sur le lecteur&lt;br /&gt;
&lt;br /&gt;
   if ( ! mfrc522.PICC_IsNewCardPresent()) {&lt;br /&gt;
&lt;br /&gt;
      display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
      return;&lt;br /&gt;
&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   if ( ! mfrc522.PICC_ReadCardSerial()) {&lt;br /&gt;
&lt;br /&gt;
      display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
      return;&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   //Ecrire la clé UID sur le moniteur série&lt;br /&gt;
&lt;br /&gt;
   //mfrc522.PICC_DumpToSerial(&amp;amp;(mfrc522.uid));&lt;br /&gt;
&lt;br /&gt;
   // recuperation de l'UID et concaténation de sa valeur en hex dans un string&lt;br /&gt;
&lt;br /&gt;
  String myKey=String(mfrc522.uid.uidByte[0],HEX) + &amp;quot; &amp;quot; + String(mfrc522.uid.uidByte[1],HEX) + &amp;quot; &amp;quot; + String(mfrc522.uid.uidByte[2],HEX) + &amp;quot; &amp;quot; + String(mfrc522.uid.uidByte[3],HEX);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  //Booléen qui définit si la carte est valide (1) ou non (0)&lt;br /&gt;
&lt;br /&gt;
  bool accessOk = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Si chaque valeur de la clé UID de la carte correspond à une clé UID valide, alors accessOk = 1 (On définit que la carte est valide)&lt;br /&gt;
&lt;br /&gt;
for(int y = 0; y &amp;lt; (sizeof(keyOk)/sizeof(String)) ; y++){&lt;br /&gt;
&lt;br /&gt;
  if(keyOk[y] == myKey){&lt;br /&gt;
&lt;br /&gt;
    accessOk = 1;&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Si la carte est valide, alors on affiche le plan et le texte&lt;br /&gt;
&lt;br /&gt;
if(accessOk == 1){&lt;br /&gt;
&lt;br /&gt;
   delay(500);&lt;br /&gt;
&lt;br /&gt;
   digitalWrite(GRN, HIGH);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(ORG, LOW);&lt;br /&gt;
&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
  display.setTextSize(1);&lt;br /&gt;
&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.setCursor(0, 2);&lt;br /&gt;
&lt;br /&gt;
  // Display static text&lt;br /&gt;
&lt;br /&gt;
  //Ecrire &amp;quot;Bonne carte!&amp;quot; aux coordonnées 0,2 de l'écran&lt;br /&gt;
&lt;br /&gt;
  display.println(&amp;quot;Bonne carte!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  //Ecrire &amp;quot;Papi fab 2024!&amp;quot; aux coordonnées 0,12 de l'écran&lt;br /&gt;
&lt;br /&gt;
  display.setCursor(0, 12);&lt;br /&gt;
&lt;br /&gt;
  display.println(&amp;quot;Papi fab 2024!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  //Affiche un rectangle qui représente la table au centre de la pièce&lt;br /&gt;
&lt;br /&gt;
  display.drawRect(50, 20, 50, 30, WHITE);&lt;br /&gt;
&lt;br /&gt;
  //Affiche les lignes aux bords de l'écran qui représentent les murs&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 0, 127, 0, WHITE);&lt;br /&gt;
&lt;br /&gt;
  //Le décalage en X entre les deux prochaines lignes laisse un espace vide qui représente la porte&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 0, 0, 38, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 58, 0, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  //Affiche les lignes aux bords de l'écran qui représentent les murs&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(127, 0, 127, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 63, 127, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  /*Affiche progressivement le trajet à suivre dans la pièce.&lt;br /&gt;
&lt;br /&gt;
  Des tirets représentent le chemin à suivre et une croix représente ce que l'on cherche*/&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 48, 5, 48, WHITE); //Affiche un tiret, c'est à dire une ligne courte&lt;br /&gt;
&lt;br /&gt;
  display.display();// Affiche sur l'écran tous les élements, en ajoutant ceux qu'on a définit depuis le dernier &amp;quot;display.display();&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  delay(500); //Applique un délais de 500 ms avant le prochain affichage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// On recommence ces 3 lignes en changeant les coordonnées pour chaque tiret&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(10, 48, 15, 48, WHITE);//Affiche un nouveau tiret, c'est à dire une ligne courte&lt;br /&gt;
&lt;br /&gt;
  display.display();//Affiche la même chose qu'au dernier &amp;quot;display.display(); avec le nouveau tiret en plus&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(20, 48, 25, 48, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(30, 48, 35, 48, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(40, 48, 40, 53, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(45, 58, 50, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(55, 58, 60, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(65, 58, 70, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(75, 58, 80, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(85, 58, 90, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(95, 58, 100, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
// Ici on affiche 2 tirets qui se croisent afin de faire une croix&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(105, 53, 115, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(115, 53, 105, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Si la carte n'est pas valide, alors on affiche seulement &amp;quot;Mauvaise carte&amp;quot; aux coordonnées 0,2 de l'écran et on n'affiche pas le plan&lt;br /&gt;
&lt;br /&gt;
  else{&lt;br /&gt;
&lt;br /&gt;
    digitalWrite(GRN, LOW);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(ORG, HIGH);&lt;br /&gt;
&lt;br /&gt;
   display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
  display.setTextSize(1);&lt;br /&gt;
&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.setCursor(0, 2);&lt;br /&gt;
&lt;br /&gt;
  // Display static text&lt;br /&gt;
&lt;br /&gt;
  display.println(&amp;quot;Mauvaise carte!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Brancher&lt;br /&gt;
|Step_Content=Brancher l’Arduino sur un port USB de l’ordinateur.&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Cliquer&lt;br /&gt;
|Step_Content=Cliquer sur l’image représentant une sorte de v, puis sur l’image représentant une flèche (le programme sera mis dans l’Arduino.&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Résultat&lt;br /&gt;
|Step_Content=Attendre la fin du transfert.&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Observations=Par défaut, l’écran n’affiche rien et les 2 leds sont éteintes. Si l’on passe un mauvais badge/carte, le message A COMPLETER s’affiche sur l’écran OLED mais pas la carte. De plus, la led orange s’allume.&lt;br /&gt;
&lt;br /&gt;
Si on passe le bon badge/carte, le message A COMPLETER s’affiche ainsi que la carte. De plus, la led verte s’allume. L’affichage de cette carte n’est pas instantané mais suit une suite d’instructions entrecoupées de pauses (TEMPS A METTRE).&lt;br /&gt;
|Avertissement=Le COMPLETER de la bonne carte/ou du bon badge est inscrit dans le code et peut être modifié.&lt;br /&gt;
|Explanations=Une erreur de branchement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Certains composants électroniques Arduino nécessitent d’être soudés à des fils afin de fonctionner.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se tromper dans les codages.&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Pierre Touchard</name></author>
		
	</entry>
	<entry>
		<id>https://www.wikidebrouillard.org/w/index.php?title=Fichier:Nigme_d_Escape_Game_-_Carte_magn_tique_et_carte_au_tr_sor_WhatsApp_Image_2024-11-06_at_15.44.55.jpeg&amp;diff=18156</id>
		<title>Fichier:Nigme d Escape Game - Carte magn tique et carte au tr sor WhatsApp Image 2024-11-06 at 15.44.55.jpeg</title>
		<link rel="alternate" type="text/html" href="https://www.wikidebrouillard.org/w/index.php?title=Fichier:Nigme_d_Escape_Game_-_Carte_magn_tique_et_carte_au_tr_sor_WhatsApp_Image_2024-11-06_at_15.44.55.jpeg&amp;diff=18156"/>
		<updated>2024-11-06T14:45:37Z</updated>

		<summary type="html">&lt;p&gt;Pierre Touchard : _nigme_d_Escape_Game_-_Carte_magn_tique_et_carte_au_tr_sor_WhatsApp_Image_2024-11-06_at_15.44.55&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;_nigme_d_Escape_Game_-_Carte_magn_tique_et_carte_au_tr_sor_WhatsApp_Image_2024-11-06_at_15.44.55&lt;/div&gt;</summary>
		<author><name>Pierre Touchard</name></author>
		
	</entry>
	<entry>
		<id>https://www.wikidebrouillard.org/w/index.php?title=%C3%89nigme_d%27Escape_Game_-_Carte_magn%C3%A9tique_et_carte_au_tr%C3%A9sor&amp;diff=18155</id>
		<title>Énigme d'Escape Game - Carte magnétique et carte au trésor</title>
		<link rel="alternate" type="text/html" href="https://www.wikidebrouillard.org/w/index.php?title=%C3%89nigme_d%27Escape_Game_-_Carte_magn%C3%A9tique_et_carte_au_tr%C3%A9sor&amp;diff=18155"/>
		<updated>2024-11-06T14:40:59Z</updated>

		<summary type="html">&lt;p&gt;Pierre Touchard : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=Nigme_d_Escape_Game_-_Carte_magn_tique_et_carte_au_tr_sor_70c33f6e-28cb-4b49-9c53-29562d32b015.jpg&lt;br /&gt;
|Licences=Attribution (CC-BY)&lt;br /&gt;
|Description=Vous avez un trésor à faire trouver et pour cela, quoi de mieux qu’une carte au trésor ? Celle-ci sera électronique et ne pourra être lu que par le détenteur du bon badge !&lt;br /&gt;
|Disciplines scientifiques=Arduino, Computing, Electricity&lt;br /&gt;
|Difficulty=Technical&lt;br /&gt;
|Duration=1&lt;br /&gt;
|Duration-type=hour(s)&lt;br /&gt;
|Tags=Arduino, escape game, Electronique&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|ItemList={{ItemList&lt;br /&gt;
|Item=Arduino Uno&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=RFID-RC522&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=LED&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Ecran OLED 0.96 pouces I2C&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Fil électrique&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Platine de Prototypage&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Logiciel Arduino&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Réaliser&lt;br /&gt;
|Step_Content=Réaliser le montage suivant&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Lancer&lt;br /&gt;
|Step_Content=Lancer le logiciel Arduino&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Copier&lt;br /&gt;
|Step_Content=Copier/code suivant dans le programme permettant d’utiliser Arduino :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Inspiré des codes du site &amp;lt;nowiki&amp;gt;https://retroetgeek.com/arduino/arduino-rfid-rc522/&amp;lt;/nowiki&amp;gt; et ceux du site &amp;lt;nowiki&amp;gt;https://randomnerdtutorials.com/guide-for-oled-display-with-arduino/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;quot;SPI.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;quot;MFRC522.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;lt;Adafruit_GFX.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;lt;Adafruit_SSD1306.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;include &amp;lt;Fonts/FreeSerif9pt7b.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define RST_PIN  9 // RES pin&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define SS_PIN  10 // SDA (SS) pin&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define SCREEN_WIDTH 128 // OLED display width, in pixels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define SCREEN_HEIGHT 64 // OLED display height, in pixels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define ORG 3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;define GRN 4&lt;br /&gt;
&lt;br /&gt;
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)&lt;br /&gt;
&lt;br /&gt;
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &amp;amp;Wire, -1);&lt;br /&gt;
&lt;br /&gt;
MFRC522 mfrc522(SS_PIN, RST_PIN);&lt;br /&gt;
&lt;br /&gt;
//keyOk ets l'ensemble des valeurs de la clé UID de la carte que l'on veut définir comme valide&lt;br /&gt;
&lt;br /&gt;
String keyOk[]={&amp;quot;39 11 d1 59&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
  pinMode(GRN, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
   pinMode(ORG, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
   Serial.begin(9600);&lt;br /&gt;
&lt;br /&gt;
   SPI.begin();&lt;br /&gt;
&lt;br /&gt;
   mfrc522.PCD_Init();&lt;br /&gt;
&lt;br /&gt;
   delay(4);&lt;br /&gt;
&lt;br /&gt;
   //mfrc522.PCD_DumpVersionToSerial();&lt;br /&gt;
&lt;br /&gt;
  //Serial.println(F(&amp;quot;Scan PICC to see UID, SAK, type, and data blocks...&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
   if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {&lt;br /&gt;
&lt;br /&gt;
    //Serial.println(&amp;quot;SSD1306 allocation failed&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
    for(;;);&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
&lt;br /&gt;
   // réinitialiser le cycle s'il n'y a pas de carte sur le lecteur&lt;br /&gt;
&lt;br /&gt;
   if ( ! mfrc522.PICC_IsNewCardPresent()) {&lt;br /&gt;
&lt;br /&gt;
      display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
      return;&lt;br /&gt;
&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   if ( ! mfrc522.PICC_ReadCardSerial()) {&lt;br /&gt;
&lt;br /&gt;
      display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
      return;&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   //Ecrire la clé UID sur le moniteur série&lt;br /&gt;
&lt;br /&gt;
   //mfrc522.PICC_DumpToSerial(&amp;amp;(mfrc522.uid));&lt;br /&gt;
&lt;br /&gt;
   // recuperation de l'UID et concaténation de sa valeur en hex dans un string&lt;br /&gt;
&lt;br /&gt;
  String myKey=String(mfrc522.uid.uidByte[0],HEX) + &amp;quot; &amp;quot; + String(mfrc522.uid.uidByte[1],HEX) + &amp;quot; &amp;quot; + String(mfrc522.uid.uidByte[2],HEX) + &amp;quot; &amp;quot; + String(mfrc522.uid.uidByte[3],HEX);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  //Booléen qui définit si la carte est valide (1) ou non (0)&lt;br /&gt;
&lt;br /&gt;
  bool accessOk = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Si chaque valeur de la clé UID de la carte correspond à une clé UID valide, alors accessOk = 1 (On définit que la carte est valide)&lt;br /&gt;
&lt;br /&gt;
for(int y = 0; y &amp;lt; (sizeof(keyOk)/sizeof(String)) ; y++){&lt;br /&gt;
&lt;br /&gt;
  if(keyOk[y] == myKey){&lt;br /&gt;
&lt;br /&gt;
    accessOk = 1;&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Si la carte est valide, alors on affiche le plan et le texte&lt;br /&gt;
&lt;br /&gt;
if(accessOk == 1){&lt;br /&gt;
&lt;br /&gt;
   delay(500);&lt;br /&gt;
&lt;br /&gt;
   digitalWrite(GRN, HIGH);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(ORG, LOW);&lt;br /&gt;
&lt;br /&gt;
  display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
  display.setTextSize(1);&lt;br /&gt;
&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.setCursor(0, 2);&lt;br /&gt;
&lt;br /&gt;
  // Display static text&lt;br /&gt;
&lt;br /&gt;
  //Ecrire &amp;quot;Bonne carte!&amp;quot; aux coordonnées 0,2 de l'écran&lt;br /&gt;
&lt;br /&gt;
  display.println(&amp;quot;Bonne carte!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  //Ecrire &amp;quot;Papi fab 2024!&amp;quot; aux coordonnées 0,12 de l'écran&lt;br /&gt;
&lt;br /&gt;
  display.setCursor(0, 12);&lt;br /&gt;
&lt;br /&gt;
  display.println(&amp;quot;Papi fab 2024!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  //Affiche un rectangle qui représente la table au centre de la pièce&lt;br /&gt;
&lt;br /&gt;
  display.drawRect(50, 20, 50, 30, WHITE);&lt;br /&gt;
&lt;br /&gt;
  //Affiche les lignes aux bords de l'écran qui représentent les murs&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 0, 127, 0, WHITE);&lt;br /&gt;
&lt;br /&gt;
  //Le décalage en X entre les deux prochaines lignes laisse un espace vide qui représente la porte&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 0, 0, 38, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 58, 0, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  //Affiche les lignes aux bords de l'écran qui représentent les murs&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(127, 0, 127, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 63, 127, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  /*Affiche progressivement le trajet à suivre dans la pièce.&lt;br /&gt;
&lt;br /&gt;
  Des tirets représentent le chemin à suivre et une croix représente ce que l'on cherche*/&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(0, 48, 5, 48, WHITE); //Affiche un tiret, c'est à dire une ligne courte&lt;br /&gt;
&lt;br /&gt;
  display.display();// Affiche sur l'écran tous les élements, en ajoutant ceux qu'on a définit depuis le dernier &amp;quot;display.display();&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  delay(500); //Applique un délais de 500 ms avant le prochain affichage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// On recommence ces 3 lignes en changeant les coordonnées pour chaque tiret&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(10, 48, 15, 48, WHITE);//Affiche un nouveau tiret, c'est à dire une ligne courte&lt;br /&gt;
&lt;br /&gt;
  display.display();//Affiche la même chose qu'au dernier &amp;quot;display.display(); avec le nouveau tiret en plus&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(20, 48, 25, 48, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(30, 48, 35, 48, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(40, 48, 40, 53, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(45, 58, 50, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(55, 58, 60, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(65, 58, 70, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(75, 58, 80, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(85, 58, 90, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(95, 58, 100, 58, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
// Ici on affiche 2 tirets qui se croisent afin de faire une croix&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(105, 53, 115, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.drawLine(115, 53, 105, 63, WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Si la carte n'est pas valide, alors on affiche seulement &amp;quot;Mauvaise carte&amp;quot; aux coordonnées 0,2 de l'écran et on n'affiche pas le plan&lt;br /&gt;
&lt;br /&gt;
  else{&lt;br /&gt;
&lt;br /&gt;
    digitalWrite(GRN, LOW);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(ORG, HIGH);&lt;br /&gt;
&lt;br /&gt;
   display.clearDisplay();&lt;br /&gt;
&lt;br /&gt;
  display.setTextSize(1);&lt;br /&gt;
&lt;br /&gt;
  display.setTextColor(WHITE);&lt;br /&gt;
&lt;br /&gt;
  display.setCursor(0, 2);&lt;br /&gt;
&lt;br /&gt;
  // Display static text&lt;br /&gt;
&lt;br /&gt;
  display.println(&amp;quot;Mauvaise carte!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Brancher&lt;br /&gt;
|Step_Content=Brancher l’Arduino sur un port USB de l’ordinateur.&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Cliquer&lt;br /&gt;
|Step_Content=Cliquer sur l’image représentant une sorte de v, puis sur l’image représentant une flèche (le programme sera mis dans l’Arduino.&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Résultat&lt;br /&gt;
|Step_Content=Attendre la fin du transfert.&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Observations=Par défaut, l’écran n’affiche rien et les 2 leds sont éteintes. Si l’on passe un mauvais badge/carte, le message A COMPLETER s’affiche sur l’écran OLED mais pas la carte. De plus, la led orange s’allume.&lt;br /&gt;
&lt;br /&gt;
Si on passe le bon badge/carte, le message A COMPLETER s’affiche ainsi que la carte. De plus, la led verte s’allume. L’affichage de cette carte n’est pas instantané mais suit une suite d’instructions entrecoupées de pauses (TEMPS A METTRE).&lt;br /&gt;
|Avertissement=Le COMPLETER de la bonne carte/ou du bon badge est inscrit dans le code et peut être modifié.&lt;br /&gt;
|Explanations=Une erreur de branchement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Certains composants électroniques Arduino nécessitent d’être soudés à des fils afin de fonctionner.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se tromper dans les codages.&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Pierre Touchard</name></author>
		
	</entry>
	<entry>
		<id>https://www.wikidebrouillard.org/w/index.php?title=Fichier:Nigme_d_Escape_Game_-_Carte_magn_tique_et_carte_au_tr_sor_70c33f6e-28cb-4b49-9c53-29562d32b015.jpg&amp;diff=18154</id>
		<title>Fichier:Nigme d Escape Game - Carte magn tique et carte au tr sor 70c33f6e-28cb-4b49-9c53-29562d32b015.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.wikidebrouillard.org/w/index.php?title=Fichier:Nigme_d_Escape_Game_-_Carte_magn_tique_et_carte_au_tr_sor_70c33f6e-28cb-4b49-9c53-29562d32b015.jpg&amp;diff=18154"/>
		<updated>2024-11-06T14:40:02Z</updated>

		<summary type="html">&lt;p&gt;Pierre Touchard : _nigme_d_Escape_Game_-_Carte_magn_tique_et_carte_au_tr_sor_70c33f6e-28cb-4b49-9c53-29562d32b015&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;_nigme_d_Escape_Game_-_Carte_magn_tique_et_carte_au_tr_sor_70c33f6e-28cb-4b49-9c53-29562d32b015&lt;/div&gt;</summary>
		<author><name>Pierre Touchard</name></author>
		
	</entry>
	<entry>
		<id>https://www.wikidebrouillard.org/w/index.php?title=Fichier:Nigme_d_Escape_Game_-_Carte_magn_tique_et_carte_au_tr_sor_4d3bc2c3-99b7-401d-893d-c043f89b20f3.jpg&amp;diff=18153</id>
		<title>Fichier:Nigme d Escape Game - Carte magn tique et carte au tr sor 4d3bc2c3-99b7-401d-893d-c043f89b20f3.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.wikidebrouillard.org/w/index.php?title=Fichier:Nigme_d_Escape_Game_-_Carte_magn_tique_et_carte_au_tr_sor_4d3bc2c3-99b7-401d-893d-c043f89b20f3.jpg&amp;diff=18153"/>
		<updated>2024-11-06T14:35:28Z</updated>

		<summary type="html">&lt;p&gt;Pierre Touchard : _nigme_d_Escape_Game_-_Carte_magn_tique_et_carte_au_tr_sor_4d3bc2c3-99b7-401d-893d-c043f89b20f3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;_nigme_d_Escape_Game_-_Carte_magn_tique_et_carte_au_tr_sor_4d3bc2c3-99b7-401d-893d-c043f89b20f3&lt;/div&gt;</summary>
		<author><name>Pierre Touchard</name></author>
		
	</entry>
	<entry>
		<id>https://www.wikidebrouillard.org/w/index.php?title=Fichier:Nigme_d_Escape_Game_-_Carte_magn_tique_et_carte_au_tr_sor_WhatsApp_Image_2024-11-06_at_15.29.21.jpeg&amp;diff=18152</id>
		<title>Fichier:Nigme d Escape Game - Carte magn tique et carte au tr sor WhatsApp Image 2024-11-06 at 15.29.21.jpeg</title>
		<link rel="alternate" type="text/html" href="https://www.wikidebrouillard.org/w/index.php?title=Fichier:Nigme_d_Escape_Game_-_Carte_magn_tique_et_carte_au_tr_sor_WhatsApp_Image_2024-11-06_at_15.29.21.jpeg&amp;diff=18152"/>
		<updated>2024-11-06T14:33:40Z</updated>

		<summary type="html">&lt;p&gt;Pierre Touchard : _nigme_d_Escape_Game_-_Carte_magn_tique_et_carte_au_tr_sor_WhatsApp_Image_2024-11-06_at_15.29.21&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;_nigme_d_Escape_Game_-_Carte_magn_tique_et_carte_au_tr_sor_WhatsApp_Image_2024-11-06_at_15.29.21&lt;/div&gt;</summary>
		<author><name>Pierre Touchard</name></author>
		
	</entry>
	<entry>
		<id>https://www.wikidebrouillard.org/w/index.php?title=%C3%89nigme_d%27Escape_Game_-_Carte_magn%C3%A9tique_et_carte_au_tr%C3%A9sor&amp;diff=18151</id>
		<title>Énigme d'Escape Game - Carte magnétique et carte au trésor</title>
		<link rel="alternate" type="text/html" href="https://www.wikidebrouillard.org/w/index.php?title=%C3%89nigme_d%27Escape_Game_-_Carte_magn%C3%A9tique_et_carte_au_tr%C3%A9sor&amp;diff=18151"/>
		<updated>2024-11-05T11:32:18Z</updated>

		<summary type="html">&lt;p&gt;Pierre Touchard : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Licences=Attribution (CC-BY)&lt;br /&gt;
|Description=Vous avez un trésor à faire trouver et pour cela, quoi de mieux qu’une carte au trésor ? Celle-ci sera électronique et ne pourra être lu que par le détenteur du bon badge !&lt;br /&gt;
|Disciplines scientifiques=Arduino, Computing, Electricity&lt;br /&gt;
|Difficulty=Technical&lt;br /&gt;
|Duration=1&lt;br /&gt;
|Duration-type=hour(s)&lt;br /&gt;
|Tags=Arduino, escape game, Electronique&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|ItemList={{ItemList&lt;br /&gt;
|Item=Arduino Uno&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=RFID-RC522&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=LED&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Ecran OLED 0.96 pouces I2C&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Fil électrique&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Platine de Prototypage&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Logiciel Arduino&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Réaliser&lt;br /&gt;
|Step_Content=Réaliser le montage suivant&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Lancer&lt;br /&gt;
|Step_Content=Lancer le logiciel Arduino&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Copier&lt;br /&gt;
|Step_Content=Copier/code suivant dans le programme permettant d’utiliser Arduino :&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Brancher&lt;br /&gt;
|Step_Content=Brancher l’Arduino sur un port USB de l’ordinateur.&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Cliquer&lt;br /&gt;
|Step_Content=Cliquer sur l’image représentant une sorte de v, puis sur l’image représentant une flèche (le programme sera mis dans l’Arduino.&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Résultat&lt;br /&gt;
|Step_Content=Attendre la fin du transfert.&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Observations=Par défaut, l’écran n’affiche rien et les 2 leds sont éteintes. Si l’on passe un mauvais badge/carte, le message A COMPLETER s’affiche sur l’écran OLED mais pas la carte. De plus, la led orange s’allume.&lt;br /&gt;
&lt;br /&gt;
Si on passe le bon badge/carte, le message A COMPLETER s’affiche ainsi que la carte. De plus, la led verte s’allume. L’affichage de cette carte n’est pas instantané mais suit une suite d’instructions entrecoupées de pauses (TEMPS A METTRE).&lt;br /&gt;
|Avertissement=Le COMPLETER de la bonne carte/ou du bon badge est inscrit dans le code et peut être modifié.&lt;br /&gt;
|Explanations=Une erreur de branchement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Certains composants électroniques Arduino nécessitent d’être soudés à des fils afin de fonctionner.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se tromper dans les codages.&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Pierre Touchard</name></author>
		
	</entry>
	<entry>
		<id>https://www.wikidebrouillard.org/w/index.php?title=%C3%89nigme_d%27Escape_Game_-_Carte_magn%C3%A9tique_et_carte_au_tr%C3%A9sor&amp;diff=18150</id>
		<title>Énigme d'Escape Game - Carte magnétique et carte au trésor</title>
		<link rel="alternate" type="text/html" href="https://www.wikidebrouillard.org/w/index.php?title=%C3%89nigme_d%27Escape_Game_-_Carte_magn%C3%A9tique_et_carte_au_tr%C3%A9sor&amp;diff=18150"/>
		<updated>2024-11-05T11:29:40Z</updated>

		<summary type="html">&lt;p&gt;Pierre Touchard : Page créée avec « {{Tuto Details |Licences=Attribution (CC-BY) |Description=Vous avez un trésor à faire trouver et pour cela, quoi de mieux qu’une carte au trésor ? Celle-ci sera éle... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Licences=Attribution (CC-BY)&lt;br /&gt;
|Description=Vous avez un trésor à faire trouver et pour cela, quoi de mieux qu’une carte au trésor ? Celle-ci sera électronique et ne pourra être lu que par le détenteur du bon badge !&lt;br /&gt;
|Disciplines scientifiques=Arduino, Computing, Electricity&lt;br /&gt;
|Difficulty=Technical&lt;br /&gt;
|Duration=1&lt;br /&gt;
|Duration-type=hour(s)&lt;br /&gt;
|Tags=Arduino, escape game, Electronique&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|ItemList={{ItemList&lt;br /&gt;
|Item=Arduino Uno&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=RFID-RC522&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=LED&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Ecran OLED 0.96 pouces I2C&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Fil électrique&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Platine de Prototypage&lt;br /&gt;
}}{{ItemList&lt;br /&gt;
|Item=Logiciel Arduino&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Réaliser&lt;br /&gt;
|Step_Content=Réaliser le montage suivant&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Lancer&lt;br /&gt;
|Step_Content=Lancer le logiciel Arduino&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Copier&lt;br /&gt;
|Step_Content=Copier/code suivant dans le programme permettant d’utiliser Arduino :&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=Brancher&lt;br /&gt;
|Step_Content=Brancher l’Arduino sur un port USB de l’ordinateur.&lt;br /&gt;
}}&lt;br /&gt;
{{Notes}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Pierre Touchard</name></author>
		
	</entry>
</feed>