<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Eugénio DA-LUZ, Auteur à PlaisirArduino</title>
	<atom:link href="https://plaisirarduino.fr/author/daluzeugenio/feed/" rel="self" type="application/rss+xml" />
	<link>https://plaisirarduino.fr/author/daluzeugenio/</link>
	<description></description>
	<lastBuildDate>Sun, 01 Feb 2026 06:09:58 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>Cours Complet : Arduino + MQTT + Web &#8211; Contrôle tes LEDs depuis ton téléphone &#x1f680;</title>
		<link>https://plaisirarduino.fr/arduino-et-rabbitm-dans-une-infra-docker-mamp/</link>
		
		<dc:creator><![CDATA[Eugénio DA-LUZ]]></dc:creator>
		<pubDate>Sun, 01 Feb 2026 05:11:15 +0000</pubDate>
				<category><![CDATA[Intermédiaire]]></category>
		<guid isPermaLink="false">https://plaisirarduino.fr/?p=4973</guid>

					<description><![CDATA[<p>PARTIE 1 — INTRODUCTION : Pourquoi ce projet est magique ? Objectif : Découvrir l’architecture globale (Arduino + MQTT + Web) et son utilité. Ce que tu vas apprendre Tu vas découvrir comment faire discuter ton Arduino avec une page web, comme si tu envoyais des SMS à tes LEDs &#8230;</p>
<p>Cet article <a href="https://plaisirarduino.fr/arduino-et-rabbitm-dans-une-infra-docker-mamp/">Cours Complet : Arduino + MQTT + Web &#8211; Contrôle tes LEDs depuis ton téléphone &#x1f680;</a> est apparu en premier sur <a href="https://plaisirarduino.fr">PlaisirArduino</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<hr class="wp-block-separator has-alpha-channel-opacity"/>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="La puissance de RabbitMQ avec Arduino" width="660" height="371" src="https://www.youtube.com/embed/mYyOmvtbU9g?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<h2 class="wp-block-heading"><strong>PARTIE 1 — INTRODUCTION : Pourquoi ce projet est magique ?</strong></h2>



<p><strong>Objectif</strong> : Découvrir l’architecture globale (Arduino + MQTT + Web) et son utilité.</p>



<h3 class="wp-block-heading"><strong>Ce que tu vas apprendre</strong></h3>



<p>Tu vas découvrir comment faire <strong>discuter ton Arduino avec une page web</strong>, comme si tu envoyais des SMS à tes LEDs ! <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4ac.png" alt="💬" class="wp-smiley" style="height: 1em; max-height: 1em;" /> On va utiliser <strong>RabbitMQ</strong> (un "standardiste" qui transmet les messages) pour que ton téléphone puisse :</p>



<ul class="wp-block-list">
<li>Allumer une LED à distance.</li>



<li>Lire la valeur d’un potentiomètre en temps réel.</li>
</ul>



<h3 class="wp-block-heading"><strong>Pourquoi c’est utile (et amusant)</strong></h3>



<p>Imagine :</p>



<ul class="wp-block-list">
<li>Allumer la lumière de ta chambre depuis ton canapé, juste avec ton téléphone. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f6cb.png" alt="🛋" class="wp-smiley" style="height: 1em; max-height: 1em;" /><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/27a1.png" alt="➡" class="wp-smiley" style="height: 1em; max-height: 1em;" /><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4a1.png" alt="💡" class="wp-smiley" style="height: 1em; max-height: 1em;" /></li>



<li>Voir en direct le niveau d’humidité de tes plantes sur ton écran. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f331.png" alt="🌱" class="wp-smiley" style="height: 1em; max-height: 1em;" /><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4ca.png" alt="📊" class="wp-smiley" style="height: 1em; max-height: 1em;" /></li>



<li>Piloter un robot ou une station météo depuis l’autre bout de la maison. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f916.png" alt="🤖" class="wp-smiley" style="height: 1em; max-height: 1em;" /><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f326.png" alt="🌦" class="wp-smiley" style="height: 1em; max-height: 1em;" /></li>
</ul>



<p>Avec ce projet, tu poses les <strong>bases de la domotique</strong> sans te prendre la tête. Et le meilleur ? Tu peux tout adapter à tes idées !</p>



<h3 class="wp-block-heading"><strong>Le plan du projet</strong></h3>



<p>Voici comment on va s’y prendre, étape par étape :</p>



<p> 1&#x20e3; <strong>Prépare ton matériel</strong> : LEDs, potentiomètre, et ton Arduino R4 WiFi (ton "chef d’orchestre"). </p>



<p>2&#x20e3; <strong>Installe RabbitMQ</strong> (le "standardiste") dans Docker, comme une appli sur ton ordi. </p>



<p>3&#x20e3; <strong>Configure MAMP</strong> (un serveur web tout simple) pour afficher une jolie page de contrôle sur ton téléphone. </p>



<p>4&#x20e3; <strong>Code l’Arduino</strong> pour qu’il écoute les ordres (ex : "Allume la LED 13 !") et renvoie des infos (ex : "Le potentiomètre est à 36%"). </p>



<p>5&#x20e3; <strong>Teste tout</strong> : tu cliques sur ton téléphone, et pouf ! La LED s’allume. Magique, non ? <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2728.png" alt="✨" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p>À la fin, tu auras une <strong>interface web</strong> qui ressemble à un tableau de bord de vaisseau spatial… mais en version Arduino ! <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f680.png" alt="🚀" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>PARTIE 2 — PRÉPARE TON MATÉRIEL COMME UN PRO</strong> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f6d2.png" alt="🛒" class="wp-smiley" style="height: 1em; max-height: 1em;" /></h2>



<p><strong>Objectif</strong> : Vérifier et organiser les composants avant de commencer.</p>



<h3 class="wp-block-heading"><strong>Liste de courses</strong></h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Composant</th><th>Quantité</th><th>Où l'acheter</th><th>Prix estimé</th></tr></thead><tbody><tr><td>Arduino R4 WiFi</td><td>1</td><td>Amazon / Mouser</td><td>30€</td></tr><tr><td>LEDs (rouge + verte)</td><td>2</td><td>Gotronic / Amazon</td><td>1€</td></tr><tr><td>Résistances 220Ω</td><td>2</td><td>Kit de résistances (Amazon)</td><td>0,50€</td></tr><tr><td>Potentiomètre 10kΩ</td><td>1</td><td>SparkFun / ElectroDragon</td><td>2€</td></tr><tr><td>Breadboard</td><td>1</td><td>Kit de démarrage (Amazon)</td><td>5€</td></tr><tr><td>Câbles de connexion</td><td>6</td><td>Kit de câbles dupont (Amazon)</td><td>3€</td></tr><tr><td><strong>Budget total</strong></td><td></td><td></td><td><strong>~41,50€</strong></td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><strong>Avant de commencer, vérifie :</strong></h3>



<ul class="wp-block-list">
<li><strong>Tu as tous les composants</strong> : Sors-les de leur emballage et pose-les devant toi comme un chef étoilé prépare ses ingrédients. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f468-200d-1f373.png" alt="👨‍🍳" class="wp-smiley" style="height: 1em; max-height: 1em;" /></li>



<li><strong>Ton Arduino est reconnu par ton PC</strong> :
<ul class="wp-block-list">
<li>Branche-le en USB et ouvre l’IDE Arduino.</li>



<li>Va dans <em>Outils > Port</em> et sélectionne le port COM correspondant (ex: <code>COM3</code> ou <code>/dev/ttyACM0</code>).</li>



<li><em>Pas de port ?</em> Suis ce <a href="https://plaisirarduino.fr/installation-arduino">tutoriel d’installation</a>.</li>
</ul>
</li>



<li><strong>Tu as 30 minutes devant toi sans interruption</strong> : Éteins les notifications, c’est l’heure de coder ! <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/23f3.png" alt="⏳" class="wp-smiley" style="height: 1em; max-height: 1em;" /></li>
</ul>



<h3 class="wp-block-heading"><strong>Astuces de pro</strong></h3>



<ul class="wp-block-list">
<li>Range tes composants dans des <strong>boîtes à compartiments</strong> (comme celles pour les vis) pour ne plus jamais perdre une résistance.</li>



<li>Prends une <strong>photo de ton montage</strong> avant de débrancher : ça sauve des vies quand tu veux le refaire plus tard !</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>PARTIE 3 — LE SCHÉMA DE CÂBLAGE : TON PLAN DE BATAILLE</strong> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f50c.png" alt="🔌" class="wp-smiley" style="height: 1em; max-height: 1em;" /></h2>



<p><strong>Objectif</strong> : Brancher correctement LEDs et potentiomètre sur l’Arduino.</p>



<h3 class="wp-block-heading"><strong>Vue d'ensemble</strong></h3>



<p>On va brancher <strong>2 LEDs et un potentiomètre</strong> à ton Arduino R4 WiFi, comme si tu connectais des enceintes à une chaîne hi-fi. L’ordre est important :</p>



<ol class="wp-block-list">
<li>D’abord les LEDs (pour vérifier que le courant passe).</li>



<li>Puis le potentiomètre (pour lire des valeurs analogiques).</li>
</ol>



<h3 class="wp-block-heading"><strong>Tableau des connexions</strong></h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Composant</th><th>Broche composant</th><th>➜</th><th>Arduino</th><th>Raison (facultatif)</th></tr></thead><tbody><tr><td><strong>LED 13</strong></td><td>Patte longue (+)</td><td>➜</td><td>Pin 13</td><td>Signal numérique (ON/OFF)</td></tr><tr><td><strong>LED 13</strong></td><td>Patte courte (-)</td><td>➜</td><td>GND via résistance</td><td>Protection contre le court-circuit</td></tr><tr><td><strong>LED 12</strong></td><td>Patte longue (+)</td><td>➜</td><td>Pin 12</td><td>Signal numérique (ON/OFF)</td></tr><tr><td><strong>LED 12</strong></td><td>Patte courte (-)</td><td>➜</td><td>GND via résistance</td><td>Protection contre le court-circuit</td></tr><tr><td><strong>Potentiomètre</strong></td><td>Broche du milieu</td><td>➜</td><td>A0</td><td>Lecture de la valeur analogique (0-1023)</td></tr><tr><td><strong>Potentiomètre</strong></td><td>Broche de gauche</td><td>➜</td><td>5V</td><td>Alimentation pour créer une tension variable</td></tr><tr><td><strong>Potentiomètre</strong></td><td>Broche de droite</td><td>➜</td><td>GND</td><td>Référence de masse</td></tr></tbody></table></figure>



<p><strong>Note :</strong></p>



<ul class="wp-block-list">
<li><strong>Les résistances (220Ω)</strong> sont obligatoires pour les LEDs : sans elles, le courant serait trop fort et grillerait la LED (comme un tuyau d’arrosage sous trop de pression).</li>



<li><strong>Le potentiomètre</strong> se branche comme un robinet : la broche du milieu est la sortie (comme le bec du robinet), et les deux autres sont l’entrée (5V) et la sortie (GND).</li>
</ul>



<h3 class="wp-block-heading"><strong>Les 3 erreurs à ne JAMAIS faire</strong></h3>



<ol class="wp-block-list">
<li><strong>Inverser les pattes de la LED</strong> → Risque : La LED ne s’allumera pas (comme une pile branchée à l’envers dans une lampe).
<ul class="wp-block-list">
<li><em>Astuce</em> : La patte longue (+) va toujours vers la broche Arduino, la courte (-) vers la résistance et la masse.</li>
</ul>
</li>



<li><strong>Oublier la résistance pour les LEDs</strong> → Risque : La LED va griller en quelques secondes (comme une ampoule sans variateur de lumière).
<ul class="wp-block-list">
<li><em>Astuce</em> : Une résistance de 220Ω est idéale pour les LEDs classiques (rouge, verte, jaune).</li>
</ul>
</li>



<li><strong>Brancher le potentiomètre à l’envers</strong> → Risque : La valeur lue sera toujours à 0 ou 1023 (comme un robinet qui ne laisse passer que de l’eau froide ou chaude).
<ul class="wp-block-list">
<li><em>Astuce</em> : La broche du milieu (A0) doit toujours être connectée à la sortie du potentiomètre.</li>
</ul>
</li>
</ol>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>PARTIE 4 — MQTT &amp; WEBSOCKET : LES SUPER-POUVOIRS DE LA COMMUNICATION</strong> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e0.png" alt="🧠" class="wp-smiley" style="height: 1em; max-height: 1em;" /></h2>



<p><strong>Objectif</strong> : Comprendre comment Arduino parle au web (broker, topics, messages).</p>



<h3 class="wp-block-heading"><strong>L'analogie pour tout comprendre</strong></h3>



<p>Imagine ton <strong>Arduino comme un chef d’orchestre</strong> qui dirige une petite troupe de musiciens :</p>



<ul class="wp-block-list">
<li><strong>Les LEDs</strong> sont des percussionnistes : elles ne savent faire que deux choses, jouer (allumées) ou se taire (éteintes).</li>



<li><strong>Le potentiomètre</strong> est un violoniste : il peut jouer toutes les notes entre 0 et 100% (comme un volume de musique).</li>



<li><strong>RabbitMQ</strong> est le chef d’orchestre adjoint : il transmet les ordres du public (ton téléphone) aux musiciens (Arduino) et vice versa.</li>
</ul>



<p>Quand tu cliques sur un bouton dans ton navigateur :</p>



<ol class="wp-block-list">
<li>Ton téléphone envoie un message <em>"Allume la LED 13 !"</em> à RabbitMQ.</li>



<li>RabbitMQ le transmet à l’Arduino.</li>



<li>L’Arduino exécute l’ordre et répond <em>"C’est fait !"</em>.</li>



<li>RabbitMQ renvoie la confirmation à ton téléphone.</li>
</ol>



<h3 class="wp-block-heading"><strong>Comment ça marche techniquement</strong></h3>



<p><strong>Étape 1 : Connexion au broker</strong></p>



<ul class="wp-block-list">
<li>L’Arduino se connecte à <strong>RabbitMQ</strong> (le "standardiste") via WiFi, comme tu te connectes à ta box internet.</li>
</ul>



<p><strong>Étape 2 : Abonnement aux topics</strong></p>



<ul class="wp-block-list">
<li>L’Arduino s’abonne à des <strong>"topics"</strong> (comme des chaînes de discussion) :
<ul class="wp-block-list">
<li><code>arduino/led13</code> pour recevoir les ordres de la LED 13.</li>



<li><code>arduino/pot</code> pour envoyer la valeur du potentiomètre.</li>
</ul>
</li>
</ul>



<p><strong>Étape 3 : Envoi/réception des messages</strong></p>



<ul class="wp-block-list">
<li>Quand tu cliques sur un bouton dans ton navigateur, un message est envoyé au topic <code>arduino/led13</code>.</li>



<li>L’Arduino reçoit le message, allume la LED, et envoie une confirmation au topic <code>arduino/feedback</code>.</li>
</ul>



<h3 class="wp-block-heading"><strong>À retenir</strong></h3>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><strong>"MQTT, c’est comme des SMS pour objets connectés : léger, rapide, et sans fil."</strong></p>



<p>Exemple concret : Une station météo qui envoie la température toutes les 5 minutes à ton téléphone.</p>
</blockquote>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>PARTIE 5 — CODE PARTIE 1 : CONFIGURATION DE L'ARDUINO</strong> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4bb.png" alt="💻" class="wp-smiley" style="height: 1em; max-height: 1em;" /></h2>



<p><strong>Objectif</strong> : Configurer les broches, le WiFi et MQTT.</p>



<h3 class="wp-block-heading"><strong>Ce que fait cette partie du code</strong></h3>



<p>Ici, on configure l’Arduino comme un <strong>chef d’orchestre qui se présente à son public</strong> :</p>



<ul class="wp-block-list">
<li>On déclare les <strong>broches</strong> (où brancher les LEDs et le potentiomètre).</li>



<li>On initialise les <strong>variables</strong> (comme des post-it pour se souvenir de l’état des LEDs).</li>



<li>On prépare la <strong>connexion WiFi et MQTT</strong> (pour que l’Arduino puisse discuter avec ton téléphone).</li>
</ul>



<h3 class="wp-block-heading"><strong>Code commenté ligne par ligne</strong></h3>



<pre class="wp-block-code"><code>// ---- Inclusion des bibliothèques ----
#include &lt;WiFiS3.h&gt;     // Pour gérer le WiFi de l&#039;Arduino R4
#include &lt;MQTT.h&gt;       // Pour communiquer en MQTT (comme des SMS)
#include &quot;secrets.h&quot;    // Fichier externe qui contient tes identifiants WiFi (SSID + mot de passe)

// ---- Configuration IP fixe ----
// Comme une adresse postale pour ton Arduino sur le réseau
IPAddress localIP(192, 168, 1, 165);  // Adresse IP de l&#039;Arduino (modifiable si conflit)
IPAddress gateway(192, 168, 1, 1);    // Adresse de ta box (généralement 192.168.1.1)
IPAddress subnet(255, 255, 255, 0);   // Masque de sous-réseau (ne change pas)
IPAddress dns(8, 8, 8, 8);            // DNS de Google (pour résoudre les noms de domaine)

// ---- Initialisation des clients ----
WiFiClient net;          // Client WiFi (comme un câble réseau virtuel)
MQTTClient client;       // Client MQTT (pour envoyer/recevoir des messages)

// ---- Déclaration des broches ----
const int ledPin13 = 13; // Broche pour la LED 13 (celle intégrée à l&#039;Arduino R4)
const int ledPin12 = 12; // Broche pour la LED 12 (externe)
const int potPin = A0;   // Broche analogique pour le potentiomètre (A0 = entrée analogique)

// ---- Variables d&#039;état ----
bool ledState13 = false; // État de la LED 13 (false = éteinte, true = allumée)
bool ledState12 = false; // État de la LED 12
unsigned long lastPublishTime = 0; // Dernier moment où on a envoyé des données
const long publishInterval = 1000; // Délai entre chaque envoi (1000 ms = 1 seconde)

// ---- Fonction pour se connecter au WiFi ----
void connectWiFi() {
  Serial.print(&quot;Connexion au WiFi...&quot;); // Message dans le moniteur série

  // On configure l&#039;IP fixe (comme une adresse postale fixe)
  WiFi.config(localIP, dns, gateway, subnet);

  // On se connecte avec les identifiants du fichier &quot;secrets.h&quot;
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);

  // Tant qu&#039;on n&#039;est pas connecté, on attend et on affiche des points
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(&quot;.&quot;);
    delay(1000); // On attend 1 seconde avant de réessayer
  }

  Serial.println(&quot;\nConnecté au WiFi !&quot;); // Message de confirmation
  Serial.print(&quot;Adresse IP : &quot;);
  Serial.println(WiFi.localIP()); // Affiche l&#039;IP de l&#039;Arduino
}

// ---- Fonction pour se connecter à MQTT ----
void connectMQTT() {
  Serial.print(&quot;Connexion à MQTT...&quot;);

  // On se connecte au broker MQTT (RabbitMQ)
  client.begin(&quot;192.168.1.XX&quot;, net); // Remplace XX par l&#039;IP de ton ordinateur
  client.onMessage(messageReceived); // Fonction appelée quand un message arrive

  // Tant qu&#039;on n&#039;est pas connecté, on attend
  while (!client.connect(&quot;arduinoClient&quot;, &quot;user&quot;, &quot;password&quot;)) { // Remplace user/password
    Serial.print(&quot;.&quot;);
    delay(1000);
  }

  Serial.println(&quot;\nConnecté au MQTT !&quot;);

  // On s&#039;abonne aux topics pour recevoir les ordres
  client.subscribe(&quot;arduino/led13&quot;);
  client.subscribe(&quot;arduino/led12&quot;);
}

// ---- Fonction appelée quand un message MQTT arrive ----
void messageReceived(String &amp;topic, String &amp;payload) {
  Serial.print(&quot;Message reçu sur topic : &quot;);
  Serial.println(topic);
  Serial.print(&quot;Contenu : &quot;);
  Serial.println(payload);

  // Si le message est pour la LED 13
  if (topic == &quot;arduino/led13&quot;) {
    if (payload == &quot;on&quot;) {
      digitalWrite(ledPin13, HIGH); // Allume la LED
      ledState13 = true;
    } else if (payload == &quot;off&quot;) {
      digitalWrite(ledPin13, LOW); // Éteint la LED
      ledState13 = false;
    }
  }

  // Si le message est pour la LED 12
  if (topic == &quot;arduino/led12&quot;) {
    if (payload == &quot;on&quot;) {
      digitalWrite(ledPin12, HIGH);
      ledState12 = true;
    } else if (payload == &quot;off&quot;) {
      digitalWrite(ledPin12, LOW);
      ledState12 = false;
    }
  }
}

// ---- Configuration initiale (setup) ----
void setup() {
  Serial.begin(115200); // Initialise la communication série
  pinMode(ledPin13, OUTPUT); // Configure la broche 13 en sortie
  pinMode(ledPin12, OUTPUT); // Configure la broche 12 en sortie

  connectWiFi(); // Se connecte au WiFi
  connectMQTT(); // Se connecte à MQTT
}

// ---- Boucle principale (loop) ----
void loop() {
  client.loop(); // Garde la connexion MQTT active

  // Envoie les données toutes les X secondes
  if (millis() - lastPublishTime &gt; publishInterval) {
    lastPublishTime = millis();

    // Lit la valeur du potentiomètre (0-1023)
    int potValue = analogRead(potPin);
    // Convertit en pourcentage (0-100%)
    int potPercentage = map(potValue, 0, 1023, 0, 100);

    // Envoie la valeur du potentiomètre au topic &quot;arduino/pot&quot;
    client.publish(&quot;arduino/pot&quot;, String(potPercentage));

    // Envoie l&#039;état des LEDs
    client.publish(&quot;arduino/led13/state&quot;, ledState13 ? &quot;on&quot; : &quot;off&quot;);
    client.publish(&quot;arduino/led12/state&quot;, ledState12 ? &quot;on&quot; : &quot;off&quot;);
  }
}
</code></pre>



<h3 class="wp-block-heading"><strong>Exercice rapide</strong></h3>



<p><strong>Mission</strong> : Modifie la variable <code>publishInterval</code> à la ligne 25 et passe de <code>1000</code> à <code>5000</code>.</p>



<ul class="wp-block-list">
<li><strong>Valeur initiale</strong> : 1000 ms (1 seconde).</li>



<li><strong>Valeur modifiée</strong> : 5000 ms (5 secondes).</li>
</ul>



<p><strong>Résultat attendu</strong> :</p>



<ul class="wp-block-list">
<li>Les données du potentiomètre seront envoyées <strong>toutes les 5 secondes</strong> au lieu de 1 seconde.</li>



<li><em>Pourquoi ?</em> Pour réduire la fréquence d’envoi et économiser de la bande passante.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>PARTIE 6 — CODE PARTIE 2 : INTERFACE WEB EN HTML/JS</strong> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f310.png" alt="🌐" class="wp-smiley" style="height: 1em; max-height: 1em;" /></h2>



<p><strong>Objectif</strong> : Créer une page web pour contrôler l’Arduino.</p>



<h3 class="wp-block-heading"><strong>Ce que fait cette partie du code</strong></h3>



<p>Ici, on crée une <strong>interface web</strong> qui envoie des ordres à l’Arduino via MQTT :</p>



<ul class="wp-block-list">
<li>Des <strong>boutons</strong> pour allumer/éteindre les LEDs.</li>



<li>Une <strong>jauge</strong> pour afficher la valeur du potentiomètre en temps réel.</li>



<li>Une <strong>connexion MQTT</strong> pour communiquer avec l’Arduino.</li>
</ul>



<h3 class="wp-block-heading"><strong>Code commenté ligne par ligne</strong></h3>



<pre class="wp-block-code"><code>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;fr&quot;&gt;
&lt;head&gt;
    &lt;meta charset=&quot;UTF-8&quot;&gt;
    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
    &lt;title&gt;Contrôle Arduino depuis ton téléphone&lt;/title&gt;
    &lt;style&gt;
        /* ---- Styles CSS ---- */
        body {
            font-family: Arial, sans-serif;
            text-align: center;
            margin: 20px;
            background-color: #f0f0f0;
        }
        h1 {
            color: #333;
        }
        .button {
            background-color: #4CAF50;
            border: none;
            color: white;
            padding: 15px 32px;
            text-align: center;
            text-decoration: none;
            display: inline-block;
            font-size: 16px;
            margin: 10px;
            cursor: pointer;
            border-radius: 8px;
        }
        .button.off {
            background-color: #f44336;
        }
        #potValue {
            font-size: 24px;
            margin: 20px;
        }
        #connectionStatus {
            padding: 10px;
            border-radius: 5px;
            margin: 10px;
        }
        .connected {
            background-color: #4CAF50;
            color: white;
        }
        .disconnected {
            background-color: #f44336;
            color: white;
        }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;h1&gt;Contrôle ton Arduino depuis ton téléphone&lt;/h1&gt;

    &lt;!-- Boutons pour les LEDs --&gt;
    &lt;button id=&quot;toggleButton13&quot; class=&quot;button&quot;&gt;Allumer LED 13&lt;/button&gt;
    &lt;button id=&quot;toggleButton12&quot; class=&quot;button&quot;&gt;Allumer LED 12&lt;/button&gt;

    &lt;!-- Jauge pour le potentiomètre --&gt;
    &lt;div id=&quot;potValue&quot;&gt;Potentiomètre : 0%&lt;/div&gt;
    &lt;progress id=&quot;potProgress&quot; value=&quot;0&quot; max=&quot;100&quot; style=&quot;width: 80%; height: 30px;&quot;&gt;&lt;/progress&gt;

    &lt;!-- Statut de la connexion --&gt;
    &lt;div id=&quot;connectionStatus&quot; class=&quot;disconnected&quot;&gt;Déconnecté&lt;/div&gt;

    &lt;!-- Bibliothèque MQTT --&gt;
    &lt;script src=&quot;https://unpkg.com/mqtt/dist/mqtt.min.js&quot;&gt;&lt;/script&gt;
    &lt;script&gt;
        // ---- Configuration MQTT ----
        const mqttConfig = {
            host: &#039;192.168.1.XX&#039;, // Remplace XX par l&#039;IP de ton ordinateur
            port: 1983, // Port WebSocket de RabbitMQ
            username: &#039;user&#039;, // Remplace par ton username MQTT
            password: &#039;password&#039; // Remplace par ton password MQTT
        };

        // ---- Connexion au broker MQTT ----
        const client = mqtt.connect(`ws://${mqttConfig.host}:${mqttConfig.port}`, {
            username: mqttConfig.username,
            password: mqttConfig.password
        });

        // ---- Éléments du DOM ----
        const toggleButton13 = document.getElementById(&#039;toggleButton13&#039;);
        const toggleButton12 = document.getElementById(&#039;toggleButton12&#039;);
        const potValue = document.getElementById(&#039;potValue&#039;);
        const potProgress = document.getElementById(&#039;potProgress&#039;);
        const connectionStatus = document.getElementById(&#039;connectionStatus&#039;);

        // ---- Mise à jour du statut de connexion ----
        function updateConnectionStatus(status, message) {
            connectionStatus.textContent = message;
            connectionStatus.className = status;
        }

        // ---- Connexion MQTT ----
        client.on(&#039;connect&#039;, () =&gt; {
            updateConnectionStatus(&#039;connected&#039;, &#039;Connecté au broker MQTT !&#039;);
            console.log(&#039;Connecté au broker MQTT&#039;);

            // On s&#039;abonne aux topics pour recevoir les mises à jour
            client.subscribe(&#039;arduino/pot&#039;);
            client.subscribe(&#039;arduino/led13/state&#039;);
            client.subscribe(&#039;arduino/led12/state&#039;);
        });

        // ---- Réception des messages MQTT ----
        client.on(&#039;message&#039;, (topic, message) =&gt; {
            console.log(`Message reçu sur ${topic}: ${message}`);

            // Met à jour la jauge du potentiomètre
            if (topic === &#039;arduino/pot&#039;) {
                const value = parseInt(message.toString());
                potValue.textContent = `Potentiomètre : ${value}%`;
                potProgress.value = value;
            }

            // Met à jour l&#039;état des LEDs
            if (topic === &#039;arduino/led13/state&#039;) {
                toggleButton13.textContent = message.toString() === &#039;on&#039; ? &#039;Éteindre LED 13&#039; : &#039;Allumer LED 13&#039;;
                toggleButton13.className = message.toString() === &#039;on&#039; ? &#039;button off&#039; : &#039;button&#039;;
            }

            if (topic === &#039;arduino/led12/state&#039;) {
                toggleButton12.textContent = message.toString() === &#039;on&#039; ? &#039;Éteindre LED 12&#039; : &#039;Allumer LED 12&#039;;
                toggleButton12.className = message.toString() === &#039;on&#039; ? &#039;button off&#039; : &#039;button&#039;;
            }
        });

        // ---- Envoi d&#039;une commande MQTT ----
        function toggleLed(ledNumber) {
            if (client.connected) {
                const topic = `arduino/led${ledNumber}`;
                const currentState = document.getElementById(`toggleButton${ledNumber}`).textContent;
                const newState = currentState.includes(&#039;Allumer&#039;) ? &#039;on&#039; : &#039;off&#039;;

                client.publish(topic, newState);
                console.log(`Commande envoyée : ${topic} ${newState}`);
            } else {
                updateConnectionStatus(&#039;disconnected&#039;, &#039;Impossible d\&#039;envoyer la commande: non connecté&#039;);
            }
        }

        // ---- Événements des boutons ----
        toggleButton13.addEventListener(&#039;click&#039;, () =&gt; toggleLed(13));
        toggleButton12.addEventListener(&#039;click&#039;, () =&gt; toggleLed(12));
    &lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>



<h3 class="wp-block-heading"><strong>Exercice rapide</strong></h3>



<p><strong>Mission</strong> : Change le délai de rafraîchissement de la jauge en modifiant la fréquence d’envoi des données dans le code Arduino (Partie 5).</p>



<ul class="wp-block-list">
<li><strong>Valeur initiale</strong> : 1000 ms (1 seconde).</li>



<li><strong>Valeur modifiée</strong> : 200 ms (0,2 seconde).</li>
</ul>



<p><strong>Résultat attendu</strong> :</p>



<ul class="wp-block-list">
<li>La jauge du potentiomètre se mettra à jour <strong>5 fois plus vite</strong>.</li>



<li><em>Pourquoi ça marche ?</em> Parce que l’Arduino envoie les données plus fréquemment, donc l’interface web les reçoit plus souvent.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>PARTIE 7 — TEST : VÉRIFIE QUE TOUT FONCTIONNE</strong> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9ea.png" alt="🧪" class="wp-smiley" style="height: 1em; max-height: 1em;" /></h2>



<p><strong>Objectif</strong> : Tester le projet et valider son fonctionnement.</p>



<h3 class="wp-block-heading"><strong>Mise sous tension</strong></h3>



<ol class="wp-block-list">
<li><strong>Branche ton Arduino</strong> au port USB de ton ordinateur.
<ul class="wp-block-list">
<li><em>Vérifie</em> : La LED orange "ON" doit s’allumer sur l’Arduino.</li>
</ul>
</li>



<li><strong>Ouvre l’IDE Arduino</strong> et sélectionne le bon port COM.</li>



<li><strong>Téléverse le code</strong> (Partie 5) sur l’Arduino.
<ul class="wp-block-list">
<li><em>Vérifie</em> : La LED intégrée (broche 13) doit clignoter rapidement pendant le téléversement, puis s’éteindre.</li>
</ul>
</li>



<li><strong>Ouvre le moniteur série</strong> (Outils > Moniteur série, vitesse 115200 bauds).
<ul class="wp-block-list">
<li><em>Vérifie</em> : Tu dois voir les messages <code>&quot;Connecté au WiFi !&quot;</code> et <code>&quot;Connecté au MQTT !&quot;</code>.</li>
</ul>
</li>



<li><strong>Ouvre le fichier HTML</strong> (Partie 6) dans ton navigateur.
<ul class="wp-block-list">
<li><em>Vérifie</em> : La page doit afficher <code>&quot;Connecté au broker MQTT !&quot;</code>.</li>
</ul>
</li>
</ol>



<h3 class="wp-block-heading"><strong>Comportement attendu</strong></h3>



<p><strong>Ce que tu dois voir :</strong></p>



<ol class="wp-block-list">
<li><strong>Sur l’interface web</strong> :
<ul class="wp-block-list">
<li>Les boutons "Allumer LED 13" et "Allumer LED 12" doivent être actifs.</li>



<li>La jauge du potentiomètre doit bouger quand tu tournes le bouton.</li>
</ul>
</li>



<li><strong>Sur l’Arduino</strong> :
<ul class="wp-block-list">
<li>La LED 13 doit s’allumer quand tu cliques sur le bouton correspondant.</li>



<li>La LED 12 doit réagir de la même façon.</li>
</ul>
</li>



<li><strong>Dans le moniteur série</strong> :
<ul class="wp-block-list">
<li>Des messages comme <code>&quot;Led13 on&quot;</code>, <code>&quot;Led12 off&quot;</code>, et <code>&quot;pot XX&quot;</code> doivent défiler toutes les secondes.</li>
</ul>
</li>
</ol>



<p><strong>Timing</strong> :</p>



<ul class="wp-block-list">
<li>Les messages MQTT doivent s’afficher <strong>toutes les secondes</strong> (ou selon ton <code>publishInterval</code>).</li>



<li>Les LEDs doivent s’allumer/éteindre <strong>instantanément</strong> quand tu cliques sur les boutons.</li>
</ul>



<h3 class="wp-block-heading"><strong>Ça marche ?</strong></h3>



<p><strong>Bravo !</strong> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f389.png" alt="🎉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Tu viens de :</p>



<ul class="wp-block-list">
<li>Faire communiquer ton Arduino avec une page web comme un pro.</li>



<li>Créer une interface de contrôle à distance pour tes LEDs et ton potentiomètre.</li>



<li>Poser les bases de la domotique (tu peux maintenant contrôler n’importe quel composant depuis ton téléphone !).</li>
</ul>



<p><strong>Partage ta victoire !</strong> :</p>



<ul class="wp-block-list">
<li>Prends une photo de ton montage et poste-la sur <a href="https://www.facebook.com/groups/plaisirarduino">notre groupe Facebook</a> avec le hashtag <strong>#PlaisirArduino</strong>.</li>



<li>Enregistre une courte vidéo de l’interface web en action et envoie-la à un ami pour lui montrer ta création !</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><strong>Ça ne marche pas ?</strong></h3>



<p>Pas de panique, c’est normal ! Direction la <strong>Partie 8 — Dépannage</strong> pour trouver la solution.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>PARTIE 8 — DÉPANNAGE : LES SOLUTIONS À TES PROBLÈMES</strong> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f6e0.png" alt="🛠" class="wp-smiley" style="height: 1em; max-height: 1em;" /></h2>



<p><strong>Objectif</strong> : Résoudre les problèmes courants.</p>



<h3 class="wp-block-heading"><strong>Problème 1 : Les LEDs ne s’allument pas</strong></h3>



<p><strong>Symptôme</strong> : Les LEDs restent éteintes même quand tu cliques sur les boutons.</p>



<p><strong>Cause probable</strong> :</p>



<ul class="wp-block-list">
<li>Câblage incorrect (inversion des pattes de la LED ou oubli de la résistance).</li>



<li>Broches mal déclarées dans le code Arduino.</li>
</ul>



<p><strong>Solution</strong> :</p>



<ol class="wp-block-list">
<li>Vérifie que la <strong>patte longue de la LED</strong> est branchée sur la broche Arduino (13 ou 12) et la <strong>patte courte</strong> sur la masse (GND) via une résistance.</li>



<li>Vérifie que les broches sont bien déclarées dans le code :<code>const int ledPin13 = 13; const int ledPin12 = 12;</code></li>



<li>Teste les LEDs <strong>manuellement</strong> en branchant directement la patte longue sur le 5V (avec résistance).</li>
</ol>



<p><strong>Comment vérifier</strong> :</p>



<ul class="wp-block-list">
<li>Ouvre le moniteur série et cherche les messages <code>&quot;Led13 on&quot;</code> ou <code>&quot;Led12 on&quot;</code>. Si tu les vois mais que les LEDs ne s’allument pas, c’est un problème de câblage.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><strong>Problème 2 : La jauge du potentiomètre ne bouge pas</strong></h3>



<p><strong>Symptôme</strong> : La jauge reste à 0% même quand tu tournes le potentiomètre.</p>



<p><strong>Cause probable</strong> :</p>



<ul class="wp-block-list">
<li>Câblage incorrect du potentiomètre (broche du milieu non connectée à A0).</li>



<li>Code Arduino mal configuré pour lire la valeur analogique.</li>
</ul>



<p><strong>Solution</strong> :</p>



<ol class="wp-block-list">
<li>Vérifie que la <strong>broche du milieu du potentiomètre</strong> est branchée sur A0.</li>



<li>Vérifie que les autres broches sont branchées sur 5V et GND.</li>



<li>Dans le code Arduino, vérifie que la broche est bien déclarée :<code>const int potPin = A0;</code></li>



<li>Teste le potentiomètre <strong>manuellement</strong> en affichant sa valeur dans le moniteur série :<code>Serial.println(analogRead(A0));</code></li>
</ol>



<p><strong>Comment vérifier</strong> :</p>



<ul class="wp-block-list">
<li>Tourne le potentiomètre et observe le moniteur série. Si la valeur change, c’est un problème avec l’interface web (vérifie la connexion MQTT).</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><strong>Problème 3 : L’interface web affiche "Déconnecté"</strong></h3>



<p><strong>Symptôme</strong> : La page web affiche "Déconnecté" et les boutons ne fonctionnent pas.</p>



<p><strong>Cause probable</strong> :</p>



<ul class="wp-block-list">
<li>RabbitMQ n’est pas lancé ou l’IP est incorrecte.</li>



<li>Le port WebSocket (1883) est bloqué par un pare-feu.</li>
</ul>



<p><strong>Solution</strong> :</p>



<ol class="wp-block-list">
<li>Vérifie que <strong>RabbitMQ est lancé</strong> dans Docker :
<ul class="wp-block-list">
<li>Ouvre Docker Desktop et vérifie que le conteneur <code>rabbitmq</code> est en cours d’exécution.</li>



<li>Si ce n’est pas le cas, lance-le avec : <code>docker run --name rabbitmqWeb -p 5672:5672 -p 15672:15672 -p 15675:15675 -p 1883:1883 rabbitmq:3.13-management</code></li>
</ul>
</li>



<li>Vérifie que l’<strong>IP du broker MQTT</strong> est correcte dans le code HTML :<code>host: &#039;192.168.1.XX&#039;, // Remplace XX par l&#039;IP de ton ordinateur</code></li>



<li>Vérifie que le <strong>port </strong>1883 est ouvert :
<ul class="wp-block-list">
<li>Sur Windows : Ouvre le pare-feu et autorise le port 1883.</li>



<li>Sur Mac/Linux : Vérifie avec <code>netstat -tuln | grep 1883</code>.</li>
</ul>
</li>
</ol>



<p><strong>Comment vérifier</strong> :</p>



<ul class="wp-block-list">
<li>Ouvre MQTT Explorer et essaie de te connecter au broker avec les mêmes identifiants que dans le code HTML. Si ça ne marche pas, c’est un problème de broker.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><strong>Toujours bloqué ?</strong></h3>



<p>Pas de panique ! Voici ce que tu peux faire :</p>



<ol class="wp-block-list">
<li><strong>Relis les étapes</strong> : Vérifie que tu n’as pas sauté une étape du câblage ou du code.</li>



<li><strong>Cherche des indices</strong> : Les messages dans le moniteur série sont tes meilleurs amis.</li>



<li><strong>Demande de l’aide</strong> :
<ul class="wp-block-list">
<li>Poste une photo de ton montage et une capture d’écran du moniteur série dans <a href="https://www.facebook.com/groups/plaisirarduino">notre groupe Facebook</a>.</li>



<li>Décris précisément ce qui ne marche pas (ex : "La LED 13 s’allume mais ne s’éteint pas quand je clique").</li>



<li>On est là pour t’aider ! <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f680.png" alt="🚀" class="wp-smiley" style="height: 1em; max-height: 1em;" /></li>
</ul>
</li>
</ol>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>PARTIE 9 — RÉSUMÉ : CE QU’ON A FAIT ENSEMBLE</strong> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f389.png" alt="🎉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></h2>



<p><strong>Objectif</strong> : Faire le bilan des compétences acquises.</p>



<h3 class="wp-block-heading"><strong>Ce qu’on a accompli</strong></h3>



<p>On a construit un <strong>système malin</strong> où ton Arduino discute avec ton téléphone comme deux potes qui s’envoient des messages. Voici ce qu’on a fait : </p>



<p>1&#x20e3; <strong>On a branché les composants</strong> : deux LEDs et un potentiomètre sur l’Arduino, comme des musiciens prêts à jouer. </p>



<p>2&#x20e3; <strong>On a installé RabbitMQ</strong> (le "standardiste") dans Docker pour qu’il transmette les ordres entre ton téléphone et l’Arduino. </p>



<p>3&#x20e3; <strong>On a configuré MAMP</strong> pour afficher une page web sur ton téléphone, avec des boutons pour contrôler les LEDs et une jauge pour le potentiomètre. </p>



<p>4&#x20e3; <strong>On a codé l’Arduino</strong> pour qu’il :</p>



<ul class="wp-block-list">
<li>Se connecte au WiFi (comme quand tu te connectes à ta box).</li>



<li>Écoute les messages MQTT (les "SMS" du projet).</li>



<li>Allume/éteint les LEDs ou renvoie la valeur du potentiomètre. 5&#x20e3; <strong>On a testé et débogué</strong> : on a vérifié que tout fonctionnait et corrigé les erreurs.</li>
</ul>



<h3 class="wp-block-heading"><strong>Ce que tu peux faire maintenant</strong></h3>



<p>Avec ce projet, tu as <strong>toutes les clés</strong> pour créer tes propres systèmes connectés :</p>



<ul class="wp-block-list">
<li><strong>Une station météo</strong> : Ajoute un capteur de température et affiche les données sur ton téléphone.</li>



<li><strong>Un système d’arrosage automatique</strong> : Utilise un relais pour contrôler une pompe à eau.</li>



<li><strong>Un robot télécommandé</strong> : Ajoute des moteurs et contrôle-les depuis ton navigateur.</li>
</ul>



<p><strong>Le plus beau ?</strong> Tu peux tout adapter à tes idées !</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>PARTIE 10 — ALLER PLUS LOIN : ET MAINTENANT ?</strong> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f680.png" alt="🚀" class="wp-smiley" style="height: 1em; max-height: 1em;" /></h2>



<p><strong>Objectif</strong> : Donner des idées pour aller plus loin.</p>



<h3 class="wp-block-heading"><strong>3 projets pour continuer</strong></h3>



<ol class="wp-block-list">
<li><strong>Station météo connectée</strong>
<ul class="wp-block-list">
<li>Ajoute un <strong>capteur DHT11</strong> pour mesurer la température et l’humidité.</li>



<li>Affiche les données sur ton interface web avec des graphiques.</li>



<li><em>Matériel</em> : DHT11 (5€), câbles.</li>
</ul>
</li>



<li><strong>Système d’arrosage automatique</strong>
<ul class="wp-block-list">
<li>Utilise un <strong>relais</strong> pour contrôler une pompe à eau.</li>



<li>Programme l’arrosage en fonction de l’humidité du sol (capteur FC-28).</li>



<li><em>Matériel</em> : Relais (3€), pompe à eau (10€), capteur FC-28 (5€).</li>
</ul>
</li>



<li><strong>Robot télécommandé</strong>
<ul class="wp-block-list">
<li>Ajoute des <strong>moteurs</strong> et un <strong>module L298N</strong> pour les contrôler.</li>



<li>Contrôle le robot depuis ton téléphone avec des boutons directionnels.</li>



<li><em>Matériel</em> : 2 moteurs DC (10€), module L298N (5€), châssis (15€).</li>
</ul>
</li>
</ol>



<h3 class="wp-block-heading"><strong>Ressources pour aller plus loin</strong></h3>



<ul class="wp-block-list">
<li><strong>Tutoriels</strong> :
<ul class="wp-block-list">
<li><a href="https://plaisirarduino.fr/station-meteo">Créer une station météo avec Arduino</a></li>



<li><a href="https://plaisirarduino.fr/robot-mqtt">Contrôler un robot avec MQTT</a></li>
</ul>
</li>



<li><strong>Communauté</strong> :
<ul class="wp-block-list">
<li>Rejoins notre <a href="https://www.facebook.com/groups/plaisirarduino">groupe Facebook</a> pour poser tes questions.</li>



<li>Participe à nos <a href="https://www.youtube.com/c/PlaisirArduino">live YouTube</a> pour des projets en direct.</li>
</ul>
</li>



<li><strong>Outils</strong> :
<ul class="wp-block-list">
<li><a href="http://mqtt-explorer.com/">MQTT Explorer</a> : Pour visualiser les messages MQTT.</li>



<li><a href="https://platformio.org/">PlatformIO</a> : Un IDE plus puissant que l’IDE Arduino.</li>
</ul>
</li>
</ul>



<h3 class="wp-block-heading"><strong>Ton prochain défi</strong></h3>



<p><strong>Mission</strong> : Ajoute une <strong>troisième LED</strong> à ton projet et contrôle-la depuis ton interface web.</p>



<ul class="wp-block-list">
<li><em>Indice</em> : Il suffit de dupliquer le code pour la LED 13 ou 12 et de modifier les broches.</li>
</ul>



<p><strong>Partage ton résultat</strong> avec le hashtag <strong>#PlaisirArduino</strong> – on a hâte de voir tes créations ! <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f60a.png" alt="😊" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>5. VOCABULAIRE CLÉS</strong></h2>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Terme</th><th>Définition ultra-simple (max 15 mots)</th><th>Analogie du quotidien</th></tr></thead><tbody><tr><td><strong>MQTT</strong></td><td>Protocole de messagerie léger pour objets connectés.</td><td>Comme des SMS entre ton Arduino et ton téléphone.</td></tr><tr><td><strong>Broker</strong></td><td>Serveur qui transmet les messages entre appareils.</td><td>Comme un standardiste qui transmet les appels.</td></tr><tr><td><strong>Topic</strong></td><td>Canal de discussion pour envoyer/recevoir des messages.</td><td>Comme une chaîne de discussion WhatsApp.</td></tr><tr><td><strong>WebSocket</strong></td><td>Connexion permanente entre un navigateur et un serveur.</td><td>Comme un appel téléphonique en continu.</td></tr><tr><td><strong>Potentiomètre</strong></td><td>Composant qui ajuste une valeur (ex : volume).</td><td>Comme le bouton de volume de ta chaîne hi-fi.</td></tr><tr><td><strong>Breadboard</strong></td><td>Plaque pour brancher des composants sans souder.</td><td>Comme une planche à pain pour l’électronique.</td></tr></tbody></table></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>6. POINTS D'ATTENTION PÉDAGOGIQUE</strong></h2>



<ul class="wp-block-list">
<li><strong>Pour les débutants</strong> :
<ul class="wp-block-list">
<li>Insiste sur l’importance de <strong>vérifier le câblage</strong> avant de coder.</li>



<li>Explique que les <strong>résistances sont obligatoires</strong> pour les LEDs (risque de griller le composant).</li>



<li>Montre comment utiliser le <strong>moniteur série</strong> pour déboguer.</li>
</ul>
</li>



<li><strong>Pour les intermédiaires</strong> :
<ul class="wp-block-list">
<li>Encourage à <strong>modifier le code</strong> pour comprendre comment ça marche.</li>



<li>Propose des <strong>exercices rapides</strong> (ex : changer la fréquence d’envoi des données).</li>



<li>Montre comment <strong>adapter le projet</strong> (ajouter des capteurs, des moteurs, etc.).</li>
</ul>
</li>



<li><strong>Pour tous</strong> :
<ul class="wp-block-list">
<li><strong>Rassure</strong> : Les erreurs sont normales, même les pros en font !</li>



<li><strong>Encourage</strong> : Partage tes résultats et pose des questions.</li>



<li><strong>Inspire</strong> : Montre des exemples de projets réalisés par la communauté.</li>
</ul>
</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p><strong>Félicitations !</strong> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f389.png" alt="🎉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Tu as maintenant toutes les clés pour créer des projets Arduino connectés. À toi de jouer ! <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f680.png" alt="🚀" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Cet article <a href="https://plaisirarduino.fr/arduino-et-rabbitm-dans-une-infra-docker-mamp/">Cours Complet : Arduino + MQTT + Web &#8211; Contrôle tes LEDs depuis ton téléphone &#x1f680;</a> est apparu en premier sur <a href="https://plaisirarduino.fr">PlaisirArduino</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>La persistance des données EEPROM</title>
		<link>https://plaisirarduino.fr/la-persistance-des-donnees-eeprom/</link>
		
		<dc:creator><![CDATA[Eugénio DA-LUZ]]></dc:creator>
		<pubDate>Sun, 10 Aug 2025 09:54:10 +0000</pubDate>
				<category><![CDATA[Débutant Arduino]]></category>
		<guid isPermaLink="false">https://plaisirarduino.fr/?p=4913</guid>

					<description><![CDATA[<p>1. Objectif pédagogique À la fin de ce cours, vous saurez : Précaution à prendre En quelque minutes les cellules EEPROM peuvent se détérioré et altéré votre carte. 2. Présentation de L'EEPROM Qu’est‑ce que l’EEPROM ?L’EEPROM (Electrically Erasable Programmable Read-Only Memory) est une mémoire&#160;non volatile&#160;: elle garde les données même &#8230;</p>
<p>Cet article <a href="https://plaisirarduino.fr/la-persistance-des-donnees-eeprom/">La persistance des données EEPROM</a> est apparu en premier sur <a href="https://plaisirarduino.fr">PlaisirArduino</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="EEPROM Arduino : Gardez vos données au redémarrage !" width="660" height="371" src="https://www.youtube.com/embed/BSWSgJ5_AOc?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<h2 class="wp-block-heading">1. Objectif pédagogique</h2>



<p>À la fin de ce cours, vous saurez :</p>



<ul class="wp-block-list">
<li>Comprendre le rôle et les limites de l’EEPROM interne d’un Arduino.</li>



<li>Lire et écrire des données persistantes avec&nbsp;<code>EEPROM.read()</code>&nbsp;et&nbsp;<code>EEPROM.write()</code>.</li>



<li>Optimiser les écritures avec&nbsp;<code>EEPROM.update()</code>.</li>



<li>Sauvegarder et relire des variables complètes avec&nbsp;<code>EEPROM.put()</code>&nbsp;et&nbsp;<code>EEPROM.get()</code>.</li>



<li>Créer un projet simple qui conserve ses paramètres après extinction.</li>
</ul>



<h2 class="wp-block-heading">Précaution à prendre</h2>



<p>En quelque minutes les cellules EEPROM peuvent se détérioré et altéré votre carte.</p>



<h2 class="wp-block-heading">2. Présentation de L'EEPROM</h2>



<p><strong>Qu’est‑ce que l’EEPROM ?</strong><br>L’EEPROM (Electrically Erasable Programmable Read-Only Memory) est une mémoire&nbsp;<em>non volatile</em>&nbsp;: elle garde les données même sans alimentation. </p>



<p><strong>Caractéristiques :</strong></p>



<ul class="wp-block-list">
<li>Capacité limitée : ex. 1024 octets sur un Arduino Uno.</li>



<li>Accès octet par octet ou via des variables complètes.</li>



<li>Durée de vie ~100 000 écritures par cellule (éviter les écritures inutiles).</li>
</ul>



<p><strong>Applications :</strong>&nbsp;sauvegarde de paramètres, compteurs, scores, restauration d’état après redémarrage.</p>



<h2 class="wp-block-heading">3. Matériel nécessaire</h2>



<ul class="wp-block-list">
<li>Arduino Uno (ou Nano, Mega…)</li>



<li>Câble USB</li>



<li>(Optionnel) Bouton poussoir + résistance 10 kΩ</li>



<li>(Optionnel) LED + résistance 220 Ω</li>
</ul>



<p><strong>Schéma minimaliste :</strong>&nbsp;pour les premiers exemples, aucun câblage n’est requis.</p>



<h2 class="wp-block-heading">4. Explication du fonctionnement</h2>



<p>L’EEPROM est organisée en cases numérotées (adresses). Chaque case stocke un octet (0–255). Imaginez un meuble avec 1024 tiroirs : chaque tiroir peut contenir un petit papier avec un nombre. Quand vous éteignez l’Arduino, les papiers restent en place.</p>



<h2 class="wp-block-heading">5. Premier code minimaliste</h2>



<p>Exemple simple : écrire puis lire un octet à l’adresse 0.</p>



<pre class="wp-block-code"><code class="language-cpp">#include &lt;EEPROM.h&gt;

void setup() {
  Serial.begin(9600);

  // Écrire 42 à l&#039;adresse 0
  EEPROM.write(0, 42);

  // Lire la valeur stockée à l&#039;adresse 0
  byte valeur = EEPROM.read(0);

  Serial.print(&quot;Valeur lue : &quot;);
  Serial.println(valeur);
}

void loop() {
  // Vide
}
</code></pre>



<p><strong>Ce que fait ce code :</strong>&nbsp;écrit le nombre 42 à l'adresse 0, puis le relit et l'affiche sur le moniteur série.</p>



<h2 class="wp-block-heading">6. Décryptage du code</h2>



<ul class="wp-block-list">
<li><code>#include &lt;EEPROM.h&gt;</code>&nbsp;: active la bibliothèque EEPROM.</li>



<li><code>EEPROM.write(adresse, valeur)</code>&nbsp;: écrit un octet.</li>



<li><code>EEPROM.read(adresse)</code>&nbsp;: lit un octet.</li>



<li>Les adresses vont de&nbsp;<code>0</code>&nbsp;à&nbsp;<code>EEPROM.length()-1</code>.</li>



<li>Erreur fréquente : écrire trop souvent (surtout dans&nbsp;<code>loop()</code>) use la mémoire.</li>
</ul>



<h2 class="wp-block-heading">7. Expérimentation guidée</h2>



<p>Propositions faciles :</p>



<ul class="wp-block-list">
<li>Changer la valeur écrite (ex.&nbsp;<code>EEPROM.write(0, 100)</code>).</li>



<li>Utiliser une autre adresse (ex. adresse 10).</li>



<li>Écrire plusieurs valeurs et les relire.</li>
</ul>



<h2 class="wp-block-heading">8. Fonctions avancées</h2>



<p>En complément de&nbsp;<code>read()</code>&nbsp;et&nbsp;<code>write()</code>, Arduino fournit :</p>



<h3 class="wp-block-heading">EEPROM.update(adresse, valeur)</h3>



<p>Écrit seulement si la valeur est différente de celle déjà stockée — utile pour économiser les cycles d'écriture.</p>



<pre class="wp-block-code"><code>#include &lt;EEPROM.h&gt;

void setup() {
  Serial.begin(9600);
  EEPROM.update(0, 42); // Écrit seulement si nécessaire
  Serial.println(&quot;Valeur mise à jour !&quot;);
}

void loop() {}
</code></pre>



<h3 class="wp-block-heading">EEPROM.put(adresse, variable)</h3>



<p>Permet d'enregistrer une variable complète (int, float, struct...) en une seule instruction.</p>



<pre class="wp-block-code"><code>#include &lt;EEPROM.h&gt;

struct Donnees {
  int compteur;
  float temperature;
};

Donnees info;

void setup() {
  Serial.begin(9600);
  info.compteur = 123;
  info.temperature = 24.5;
  EEPROM.put(0, info);
  Serial.println(&quot;Données sauvegardées !&quot;);
}

void loop() {}
</code></pre>



<h3 class="wp-block-heading">EEPROM.get(adresse, variable)</h3>



<p>Lit directement une variable complète depuis l'EEPROM (complément de&nbsp;<code>put</code>).</p>



<pre class="wp-block-code"><code>#include &lt;EEPROM.h&gt;

struct Donnees {
  int compteur;
  float temperature;
};

Donnees info;

void setup() {
  Serial.begin(9600);
  EEPROM.get(0, info);
  Serial.print(&quot;Compteur : &quot;);
  Serial.println(info.compteur);
  Serial.print(&quot;Température : &quot;);
  Serial.println(info.temperature);
}

void loop() {}
</code></pre>



<p>Astuce :&nbsp;<code>put()</code>&nbsp;et&nbsp;<code>get()</code>&nbsp;gèrent automatiquement la taille en octets — attention à la place restante dans l'EEPROM.</p>



<h2 class="wp-block-heading">9. Vérification avant écriture dans l’EEPROM</h2>



<p>Avant d’enregistrer une donnée en mémoire EEPROM, il est essentiel de vérifier que sa valeur a réellement changé. En effet, si la donnée est identique à celle déjà stockée, une réécriture inutile détériorera prématurément la cellule mémoire, qui ne supporte qu’un nombre limité de cycles d’écriture. Pour protéger la durée de vie de l’EEPROM, il faut donc ajouter systématiquement une étape de vérification avant d’écrire.</p>



<p>Voici un exemple fiable et simple, utilisable pour tout type de donnée basique (comme un octet) :</p>



<pre class="wp-block-code"><code>
#include &lt;EEPROM.h&gt;

int adresse = 0;         // Adresse mémoire EEPROM
byte nouvelleValeur = 42; // Valeur à écrire

void setup() {
  Serial.begin(9600);

  // Lire la valeur actuelle dans l’EEPROM
  byte ancienneValeur = EEPROM.read(adresse);

  // Vérifier si la valeur a changé avant d’écrire
  if (ancienneValeur != nouvelleValeur) {
    EEPROM.write(adresse, nouvelleValeur);
    Serial.println(&quot;Valeur mise à jour dans l’EEPROM.&quot;);
  } else {
    Serial.println(&quot;Valeur identique, écriture évitée pour préserver l’EEPROM.&quot;);
  }
}

void loop() {
  // Rien ici
}
</code></pre>



<p>Cette méthode simple protège efficacement l’EEPROM contre les écritures redondantes et prolonge sa durée de vie.</p>



<h2 class="wp-block-heading">Exemple fiable de vérification avant écriture avec EEPROM.get() et EEPROM.put()</h2>



<p>Pour éviter d’écrire inutilement dans l’EEPROM une structure&nbsp;<code>Donnees</code>, on peut comparer la donnée à écrire avec celle déjà stockée, puis n’écrire que si elles diffèrent.</p>



<pre class="wp-block-code"><code>#include &lt;EEPROM.h&gt;

struct Donnees {
  int compteur;
  float temperature;
};

Donnees infoNew;  // Nouvelle donnée à sauvegarder
Donnees infoOld;  // Donnée lue depuis EEPROM

void setup() {
  Serial.begin(9600);
  delay(1000); // Attente pour le moniteur série

  // Initialisation des nouvelles données
  infoNew.compteur = 123;
  infoNew.temperature = 24.5;

  // Lire la donnée existante dans EEPROM à l&#039;adresse 0
  EEPROM.get(0, infoOld);

  // Comparer byte à byte pour vérifier si les données ont changé
  if (memcmp(&amp;infoNew, &amp;infoOld, sizeof(Donnees)) != 0) {
    EEPROM.put(0, infoNew);
    Serial.println(&quot;Données mises à jour dans l’EEPROM.&quot;);
  } else {
    Serial.println(&quot;Données identiques, écriture évitée.&quot;);
  }
}

void loop() {
  // Rien ici
}
</code></pre>



<h2 class="wp-block-heading">10. Résumé</h2>



<ul class="wp-block-list">
<li>Lecture/écriture d'octets :&nbsp;<code>read()</code>&nbsp;/&nbsp;<code>write()</code>.</li>



<li>Éviter les écritures inutiles :&nbsp;<code>update()</code>.</li>



<li>Stocker/charger des variables complètes :&nbsp;<code>put()</code>&nbsp;/&nbsp;<code>get()</code>.</li>



<li>Penser à la taille disponible et à l'usure des cellules.</li>
</ul>



<h2 class="wp-block-heading">Ressources complémentaires</h2>



<ul class="wp-block-list">
<li>Documentation officielle :&nbsp;<a href="https://www.arduino.cc/en/Reference/EEPROM" target="_blank" rel="noreferrer noopener">arduino.cc — EEPROM</a></li>



<li>Bibliothèque&nbsp;<code>EEPROM.h</code>&nbsp;incluse par défaut</li>



<li>Conseil pratique : limiter les écritures inutiles pour préserver la mémoire</li>
</ul>
<p>Cet article <a href="https://plaisirarduino.fr/la-persistance-des-donnees-eeprom/">La persistance des données EEPROM</a> est apparu en premier sur <a href="https://plaisirarduino.fr">PlaisirArduino</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Ruban à l&#8217;LED adressable</title>
		<link>https://plaisirarduino.fr/ruban-a-led-adressable/</link>
		
		<dc:creator><![CDATA[Eugénio DA-LUZ]]></dc:creator>
		<pubDate>Tue, 30 Jan 2024 21:46:14 +0000</pubDate>
				<category><![CDATA[Débutant Arduino]]></category>
		<guid isPermaLink="false">https://plaisirarduino.fr/?p=4805</guid>

					<description><![CDATA[<p>Caractéristiques du ruban à LED adressage Type: WS2812B Alimentation: 18 mA/LED 5V ne supporte pas les surtensions, une alimentation stable est recommandée. La bibliothèque de gestion des LEDs que j'ai utilisée est "Adafruit_NeoPixel.h". Le projet est relativement simple à mettre en oeuvre sur un petit nombre de LEDs. J'ai pris &#8230;</p>
<p>Cet article <a href="https://plaisirarduino.fr/ruban-a-led-adressable/">Ruban à l&rsquo;LED adressable</a> est apparu en premier sur <a href="https://plaisirarduino.fr">PlaisirArduino</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="Ruban à led addressable avec arduino" width="660" height="371" src="https://www.youtube.com/embed/w8bx2bhkvsw?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<h2 class="wp-block-heading has-text-align-center">Caractéristiques du ruban à LED adressage</h2>



<p> Type:  WS2812B</p>



<p>Alimentation: 18 mA/LED 5V ne supporte pas les surtensions, une alimentation stable est recommandée.</p>



<figure class="wp-block-image size-large"><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2024/01/schema-ruban-a-led.png"><img loading="lazy" decoding="async" width="1024" height="476" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2024/01/schema-ruban-a-led-1024x476.png" alt="" class="wp-image-4806" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2024/01/schema-ruban-a-led-1024x476.png 1024w, https://plaisirarduino.fr/arduino/wp-content/uploads/2024/01/schema-ruban-a-led-300x139.png 300w, https://plaisirarduino.fr/arduino/wp-content/uploads/2024/01/schema-ruban-a-led-768x357.png 768w, https://plaisirarduino.fr/arduino/wp-content/uploads/2024/01/schema-ruban-a-led-1536x714.png 1536w, https://plaisirarduino.fr/arduino/wp-content/uploads/2024/01/schema-ruban-a-led-2048x951.png 2048w, https://plaisirarduino.fr/arduino/wp-content/uploads/2024/01/schema-ruban-a-led-700x325.png 700w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p>La bibliothèque de gestion des LEDs  que j'ai utilisée est "Adafruit_NeoPixel.h".</p>



<p>Le projet est relativement simple à mettre en oeuvre sur un petit nombre de LEDs. J'ai pris comme point de départ l'exemple "simple" que j'ai retravaillé. </p>



<p class="has-text-align-left">La bibliothèque Adafruit NeoPixel pour Arduino est conçue pour faciliter la gestion des LED RGB individuelles ou des bandes de LED RGB, telles que les populaires LED WS2812 ou WS2812B. Voici quelques-unes des fonctions natives de cette bibliothèque :</p>



<ol class="wp-block-list">
<li><strong><code>Adafruit_NeoPixel pixels(nombre de pixels, branche de sortie, neoPixelType type)</code></strong></li>
</ol>



<ul class="wp-block-list">
<li>Initialise la bibliothèque en spécifiant le nombre total de pixels, le numéro de broche à laquelle les pixels sont connectés et le type de pixels (par exemple, <code>NEO_GRB</code> ou <code>NEO_RGB</code>).</li>
</ul>



<ol class="wp-block-list">
<li><strong><code>begin()</code></strong></li>
</ol>



<ul class="wp-block-list">
<li>Initialise la communication avec les pixels. Cette fonction doit être appelée une fois dans le programme, généralement dans la fonction <code>setup()</code>.</li>
</ul>



<ol class="wp-block-list">
<li><strong><code>show()</code></strong></li>
</ol>



<ul class="wp-block-list">
<li>Envoie les données de couleur aux pixels. Vous devez appeler cette fonction après avoir modifié les couleurs des pixels pour les rendre effectives.</li>
</ul>



<ol class="wp-block-list">
<li><strong><code>setPixelColor(numéro de la LED adressable, couleur rouge de 0 à 255, couleur vert de 0 à 255, &lt;strong&gt;&lt;code&gt;couleur bleu de 0 à 255</code></strong>)</code></strong></li>
</ol>



<ul class="wp-block-list">
<li>Définit la couleur d'un pixel spécifique en spécifiant les valeurs des composants rouge, vert et bleu (RVB). Les valeurs des composants RVB vont de 0 à 255.</li>
</ul>



<ol class="wp-block-list">
<li><strong><code>setPixelColor(uint16_t n, uint32_t color)</code></strong></li>
</ol>



<ul class="wp-block-list">
<li>Version alternative de <code>setPixelColor</code> où vous spécifiez directement la couleur sous forme d'un entier 32 bits, où les 8 premiers bits représentent le rouge, les 8 suivants le vert et les 8 derniers le bleu.</li>
</ul>



<ol class="wp-block-list">
<li><strong><code>setBrightness(intensité de 0 à 255)</code></strong></li>
</ol>



<ul class="wp-block-list">
<li>Ajuste la luminosité de tous les pixels. La valeur de luminosité varie de 0 (éteint) à 255 (pleine luminosité).</li>
</ul>



<ol class="wp-block-list">
<li><strong><code>Color(uint8_t red, uint8_t green, uint8_t blue)</code></strong></li>
</ol>



<ul class="wp-block-list">
<li>Fonction utilitaire qui renvoie une couleur sous forme d'entier 32 bits à partir des composants RVB spécifiés.</li>
</ul>



<ol class="wp-block-list">
<li><strong><code>ColorHSV(uint16_t hue, uint8_t saturation, uint8_t value)</code></strong></li>
</ol>



<ul class="wp-block-list">
<li>Fonction utilitaire qui renvoie une couleur sous forme d'entier 32 bits à partir des composants HSV (teinte, saturation, valeur) spécifiés.</li>
</ul>



<ol class="wp-block-list">
<li><strong><code>getPixelColor(uint16_t n)</code></strong></li>
</ol>



<ul class="wp-block-list">
<li>Récupère la couleur d'un pixel spécifique sous forme d'entier 32 bits.</li>
</ul>



<ol class="wp-block-list">
<li><strong><code>clear()</code></strong>
<ul class="wp-block-list">
<li>Éteint tous les pixels en les mettant à la couleur noire (0, 0, 0).</li>
</ul>
</li>
</ol>



<p>Ces fonctions de base devraient vous aider à démarrer avec la gestion des LEDs à l'aide de la bibliothèque Adafruit NeoPixel dans vos projets Arduino. N'oubliez pas de consulter la documentation officielle pour des détails plus approfondis sur chaque fonction : https://learn.adafruit.com/adafruit-neopixel-uberguide/arduino-library.</p>



<p>Merci pour votre intérêt, vous pouvez revoir toutes les vidéos sur la chaine Youtube <a href="https://www.youtube.com/@plaisirarduino6659">plaisirarduino</a></p>



<p></p>
<p>Cet article <a href="https://plaisirarduino.fr/ruban-a-led-adressable/">Ruban à l&rsquo;LED adressable</a> est apparu en premier sur <a href="https://plaisirarduino.fr">PlaisirArduino</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>WEB ET ARDUINO</title>
		<link>https://plaisirarduino.fr/web-et-arduino/</link>
		
		<dc:creator><![CDATA[Eugénio DA-LUZ]]></dc:creator>
		<pubDate>Sun, 12 May 2019 20:44:08 +0000</pubDate>
				<category><![CDATA[Projet]]></category>
		<guid isPermaLink="false">https://plaisirarduino.fr/?p=3991</guid>

					<description><![CDATA[<p>Le broker qu’est-ce que c’est ? Pour faire interagir la platine arduino et le web nous utilisons un broker. Son rôle est de distribuer les messages aux ensembles des objets IOT connectés.&#160; Lorsque l’objet IOT a souscrit à un topic, il va recevoir tous les messages de celui - ci. &#8230;</p>
<p>Cet article <a href="https://plaisirarduino.fr/web-et-arduino/">WEB ET ARDUINO</a> est apparu en premier sur <a href="https://plaisirarduino.fr">PlaisirArduino</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Web et arduino" width="660" height="371" src="https://www.youtube.com/embed/Xp_8vsn8wUg?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<h2 class="wp-block-heading">Le broker qu’est-ce que c’est ?</h2>



<p>Pour faire interagir la platine arduino et le web nous utilisons un broker. Son rôle est de distribuer les messages aux ensembles des objets IOT connectés.&nbsp;</p>



<p>Lorsque l’objet IOT a souscrit à un topic, il va recevoir tous les messages de celui - ci. Quand il publie un message tous les objets abonnés à son topic le reçoivent.</p>



<p>Exemple: &nbsp;</p>



<img decoding="async" width="100%" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2019/05/gif-animé-1-à-8-1.gif" alt="Animation brocker vers IOT">



<img decoding="async" width="100%" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2019/05/gif-animé-9a15.gif" alt="Animation vers broker IOT topic">



<p>Pour interagir avec les différents objets, le broker utilise  le protocole MQTT. Vous n’avez pas besoin de rentrer dans la technique pour utiliser celui-ci.&nbsp;</p>



<p>Il existe plusieurs brokers, en principe nous pouvons avoir besoin d’un broker local ou accessible par internet.&nbsp;</p>



<p>J’ai testé le broker Mosquitto en local sur une platine rasberryPi qui remplie efficacement son rôle.</p>



<p>Pour ne pas vous faire acheter du matériel supplémentaire, j’ai choisi le brocker <a href="http://shiftr.io">shiftr.io</a> sur internet car il est facile à installer et la documentation remplie les exigences du projet que je souhaite réaliser.&nbsp;</p>



<h2 class="wp-block-heading">Etape 1: Mise en place du Broker</h2>



<ul class="wp-block-list"><li>Créer un compte sur <a href="http://shiftr.io">shiftr.io</a>&nbsp;</li><li>Créer le broker&nbsp;</li><li>Modifier le token avec pour paramètre l’identifiant et le mot de passe.</li></ul>



<p>Ces démarches sont rapides, pour ceux qui auraient des difficultés, je vous renvoie sur la vidéo Web et arduino ci-dessus.</p>



<h2 class="wp-block-heading">Etape 2: Test  avec la platine Arduino</h2>



<p>Dans un premier temps, je vous invite à installer la librairie MQTT de Joel Gaehwiller</p>



<figure class="wp-block-image is-resized"><img loading="lazy" decoding="async" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2019/05/Libraire-MQTT.png" alt="Libraire MQTT" class="wp-image-4004" width="578" height="70" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2019/05/Libraire-MQTT.png 482w, https://plaisirarduino.fr/arduino/wp-content/uploads/2019/05/Libraire-MQTT-300x36.png 300w" sizes="auto, (max-width: 578px) 100vw, 578px" /></figure>



<p>Ensuite lancer l’exemple&nbsp;</p>



<p>- Fichier/EXEMPLE / MQTT / ArduinoEthernetShield</p>



<p>- Modifier les paramètres de connexion au broker dans la fonction Connect ligne 23 avec votre identifiant et votre mot de passe du token</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="945" height="141" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2019/05/Identifiant-shiftr.png" alt="" class="wp-image-3994" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2019/05/Identifiant-shiftr.png 945w, https://plaisirarduino.fr/arduino/wp-content/uploads/2019/05/Identifiant-shiftr-300x45.png 300w, https://plaisirarduino.fr/arduino/wp-content/uploads/2019/05/Identifiant-shiftr-768x115.png 768w, https://plaisirarduino.fr/arduino/wp-content/uploads/2019/05/Identifiant-shiftr-700x104.png 700w" sizes="auto, (max-width: 945px) 100vw, 945px" /></figure>



<p>- Téléverser le programme et vérifier que le broker reçoit l’information </p>



<p>«&nbsp;World&nbsp;»&nbsp; sous le topic «&nbsp;Hello&nbsp;».</p>



<p>A partir de là, la platine arduino et le broker sont opérationnels.</p>



<h2 class="wp-block-heading">Etape 3: Le Web&nbsp;</h2>



<p>Dans la documentation de <a href="http://shiftr.io">shiftr.io</a> vous y touverez le code source de base pour interagir avec le broker et le navigateur.&nbsp;</p>



<ul class="wp-block-list"><li>&nbsp;Créer un dossier dans lequel vous allez y mettre trois fichiers: index.html, script.js et style.css</li><li>Prenez le code de la documentation sous exemple browser et faites un copier/coller dans les différents fichiers.</li><li>Tester l’envoi du message lorsque vous appuyez sur le bouton</li></ul>



<h2 style="text-align:center" class="red wp-block-heading"> ARDUINO ET WEB</h2>



<p>Présentation&nbsp;</p>



<p>Il s'agit d’allumer des diodes aux travers du navigateur, recevoir le retour d’un potentiomètre et d’agir avec un bouton poussoir sur la platine arduino.</p>



<p>Le broker étant opérationnel, nous n’agirons plus sur celui-ci.</p>



<p style="text-align:center"> Index.html</p>



<p>L’objectif est d’afficher deux boutons pour commander des diodes et un retour potentiomètre.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="898" height="408" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2019/05/index.png" alt="fichier index html" class="wp-image-3995" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2019/05/index.png 898w, https://plaisirarduino.fr/arduino/wp-content/uploads/2019/05/index-300x136.png 300w, https://plaisirarduino.fr/arduino/wp-content/uploads/2019/05/index-768x349.png 768w, https://plaisirarduino.fr/arduino/wp-content/uploads/2019/05/index-700x318.png 700w" sizes="auto, (max-width: 898px) 100vw, 898px" /></figure>



<p style="text-align:center">Style.css</p>



<p>Le fichier style.css permet de donner des paramètres d’affichage de la page index.html</p>



<p style="text-align:center">Script.js</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="760" height="952" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2019/05/code-javascript.png" alt="script javascript" class="wp-image-3993" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2019/05/code-javascript.png 760w, https://plaisirarduino.fr/arduino/wp-content/uploads/2019/05/code-javascript-239x300.png 239w, https://plaisirarduino.fr/arduino/wp-content/uploads/2019/05/code-javascript-700x877.png 700w" sizes="auto, (max-width: 760px) 100vw, 760px" /></figure>



<p>Script permet de modifier et d'actualiser la page index.html, son langage est le javascript. &nbsp;</p>



<p>Le javascript a la particularité de modifier la page Web,  même après son téléchargement celui-ci est interprété par le navigateur. &nbsp;</p>



<p>Le premier élément, c’est la connexion au broker ligne 4, il faut renseigner ses identifiants de token</p>



<p>Le second élément: lignes 10 et 11 permettent de souscrire aux différents Topic.&nbsp;</p>



<p>Le troisième élément: lignes 15 à 69 modifient le contenu des balises ou leurs styles en fonction des&nbsp; messages reçus .</p>



<p>Exemple&nbsp;</p>



<p class="has-text-color has-vivid-cyan-blue-color">	document.getElementById('led7').innerHTML = ‘ON';</p>



<p>Modifie le contenue de la balise qui porte l’identifiant «&nbsp;led7&nbsp;» dans la page index.html par «&nbsp;ON&nbsp;».</p>



<p class="has-text-color has-vivid-cyan-blue-color">&nbsp;document.getElementById("led7").style.backgroundColor="green";</p>



<p>Modifie le style backgroundColor de la balise qui porte l’identifiant «&nbsp;led7&nbsp;» dans la page index.html.</p>



<p>Le dernier élément: ligne 71 à ligne 76 permettent de publier des messages au broker au click de bouton.&nbsp;</p>



<p>Lorsque le bouton est appuyé le message est traité par la fonction de traitement des messages : lignes 15 à 69.</p>



<h2 class="wp-block-heading">Code source arduino</h2>



<p>Le programme est fourni gratuitement en téléchargement <a href="https://plaisirarduino.fr/telechargement">https://plaisirarduino.fr/telechargement</a> &nbsp;</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="418" height="283" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2019/05/variable.png" alt="" class="wp-image-4003" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2019/05/variable.png 418w, https://plaisirarduino.fr/arduino/wp-content/uploads/2019/05/variable-300x203.png 300w" sizes="auto, (max-width: 418px) 100vw, 418px" /></figure>



<p>Déclaration des variables pour les entrées / sorties de la commande des diodes et des différentes temporisations.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="757" height="300" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2019/05/conexion-et-topic.png" alt="Paramettre token" class="wp-image-3998" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2019/05/conexion-et-topic.png 757w, https://plaisirarduino.fr/arduino/wp-content/uploads/2019/05/conexion-et-topic-300x119.png 300w, https://plaisirarduino.fr/arduino/wp-content/uploads/2019/05/conexion-et-topic-700x277.png 700w" sizes="auto, (max-width: 757px) 100vw, 757px" /></figure>



<ul class="wp-block-list"><li>Connexion avec les identifiants et mot de passe du token</li><li>Souscription aux Topic</li></ul>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="555" height="431" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2019/05/message-recieved.png" alt="Fonction received" class="wp-image-4000" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2019/05/message-recieved.png 555w, https://plaisirarduino.fr/arduino/wp-content/uploads/2019/05/message-recieved-300x233.png 300w" sizes="auto, (max-width: 555px) 100vw, 555px" /></figure>



<p>La fonction messageReceived traite toutes les interactions des messages reçus par le broker, elle a pour rôle de commander l’état des différentes diodes.</p>



<p>Dans cet exemple, lorsque la platine reçoit le message 9$Led7, elle met la diode 7 à HIGH</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="587" height="290" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2019/05/setup.png" alt="setup arduino" class="wp-image-4002" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2019/05/setup.png 587w, https://plaisirarduino.fr/arduino/wp-content/uploads/2019/05/setup-300x148.png 300w" sizes="auto, (max-width: 587px) 100vw, 587px" /></figure>



<p>Le setup initialise les entrées / sorties et les différents paramètres nécessaires</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="608" height="442" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2019/05/poop-1.png" alt="loop partir une" class="wp-image-4001" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2019/05/poop-1.png 608w, https://plaisirarduino.fr/arduino/wp-content/uploads/2019/05/poop-1-300x218.png 300w" sizes="auto, (max-width: 608px) 100vw, 608px" /></figure>



<p>La première partie de la fonction Loop renvoie toutes les 5 secondes les paramètres des diodes et ceux du potentiomètre en publiant leurs valeurs.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="909" height="593" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2019/05/loop-2.png" alt="loop deux" class="wp-image-3999" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2019/05/loop-2.png 909w, https://plaisirarduino.fr/arduino/wp-content/uploads/2019/05/loop-2-300x196.png 300w, https://plaisirarduino.fr/arduino/wp-content/uploads/2019/05/loop-2-768x501.png 768w, https://plaisirarduino.fr/arduino/wp-content/uploads/2019/05/loop-2-700x457.png 700w" sizes="auto, (max-width: 909px) 100vw, 909px" /></figure>



<p>La seconde partie de loop renvoie les valeurs du potentiomètre, seulement quand celui-ci change de valeur.</p>



<p>Et enfin le traitement du bouton poussoir  publie la commande de la diode 7 lorsque celui-ci est appuyé.&nbsp;</p>
<p>Cet article <a href="https://plaisirarduino.fr/web-et-arduino/">WEB ET ARDUINO</a> est apparu en premier sur <a href="https://plaisirarduino.fr">PlaisirArduino</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>RFID avec Arduino</title>
		<link>https://plaisirarduino.fr/rfid-avec-arduino/</link>
		
		<dc:creator><![CDATA[Eugénio DA-LUZ]]></dc:creator>
		<pubDate>Wed, 25 Jul 2018 17:13:25 +0000</pubDate>
				<category><![CDATA[Projet]]></category>
		<guid isPermaLink="false">https://plaisirarduino.fr/?p=2998</guid>

					<description><![CDATA[<p>Le module RFID RC522 Principe de fonctionnement Ce cours a pour objectif d'appréhender le module RFID. Le téléchargement du code source vous permettra de mettre en application la modification de chaque block. Le module RFID détecte des badges ou des cartes magnétiques à moins de 10 cm. Le passage d’un &#8230;</p>
<p>Cet article <a href="https://plaisirarduino.fr/rfid-avec-arduino/">RFID avec Arduino</a> est apparu en premier sur <a href="https://plaisirarduino.fr">PlaisirArduino</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1 style="text-align: center;"><span style="color: #0000ff;"><b>Le module RFID RC522</b></span></h1>
<p style="text-align: center;"><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2018/07/Module-RFID.jpg"><img loading="lazy" decoding="async" class="wp-image-3010 alignnone" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2018/07/Module-RFID.jpg" alt="Photo module RFID" width="227" height="170" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2018/07/Module-RFID.jpg 3264w, https://plaisirarduino.fr/arduino/wp-content/uploads/2018/07/Module-RFID-300x225.jpg 300w, https://plaisirarduino.fr/arduino/wp-content/uploads/2018/07/Module-RFID-768x576.jpg 768w, https://plaisirarduino.fr/arduino/wp-content/uploads/2018/07/Module-RFID-1024x768.jpg 1024w, https://plaisirarduino.fr/arduino/wp-content/uploads/2018/07/Module-RFID-700x525.jpg 700w" sizes="auto, (max-width: 227px) 100vw, 227px" /></a></p>
<p><iframe loading="lazy" src="https://www.youtube.com/embed/20rEFd5he1s" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<h2>Principe de fonctionnement</h2>
<p >Ce cours a pour objectif d'appréhender le module RFID. Le téléchargement du code source vous permettra de mettre en application la modification de chaque block.</p>
<p>Le module RFID détecte des badges ou des cartes magnétiques à moins de 10 cm. Le passage d’un composant magnétique permet de lire l’identifiant de l'UID de la carte, ainsi que les données enregistrées.</p>
<p>Par principe, chaque carte RFID dispose de son propre UID.</p>
<p>De plus, les cartes ou tags répondent à une fréquence. Les tags, les plus répandus, sont à une fréquence de 13,56Mhz.</p>
<p>Le contenu est divisé en plusieurs secteurs, subdivisé en block et encore en données.</p>
<p>Certaines cartes disposent du block 0 verrouillé, c’est-à-dire non modifiable. Celui-ci contient essentiellement l’identifiant unique "UID".<span class="Apple-converted-space"> </span></p>
<p>Sur le marché, vous pouvez avoir des cartes dont le cluster UID est modifiable. Dans le cadre de ce tutoriel, j’utilise des cartes dont l’UID est modifiable à 13,56Mhz et d’une capacité mémoire de 1 Ko.
</p>
<h2>Schéma du module RFID RC522</h2>
<p><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2018/07/rfid.png"><img loading="lazy" decoding="async" class="size-full wp-image-2999 aligncenter" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2018/07/rfid.png" alt="Schéma RFID" width="1024" height="768" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2018/07/rfid.png 1024w, https://plaisirarduino.fr/arduino/wp-content/uploads/2018/07/rfid-300x225.png 300w, https://plaisirarduino.fr/arduino/wp-content/uploads/2018/07/rfid-768x576.png 768w, https://plaisirarduino.fr/arduino/wp-content/uploads/2018/07/rfid-700x525.png 700w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p>Le montage du module RFID se compose de 7 fils :</p>
<ul>
<li>RST/Reset <span class="Apple-converted-space">  </span>RST <span class="Apple-converted-space">      </span>—&gt; <span class="Apple-converted-space">  </span>Pin 9 Arduino</li>
<li>SPI SS<span class="Apple-converted-space">      </span>SDA(SS)<span class="Apple-converted-space">  </span>—&gt;<span class="Apple-converted-space">    </span>Pin 10 Arduino</li>
<li>SPI MOSI<span class="Apple-converted-space">    </span>MOSI<span class="Apple-converted-space">      </span>—&gt;<span class="Apple-converted-space">  </span>Pin 11 Arduino</li>
<li>SPI MISO<span class="Apple-converted-space">    </span>MISO <span class="Apple-converted-space">    </span>—&gt;<span class="Apple-converted-space">    </span>Pin 12 Arduino</li>
<li>SPI SCK <span class="Apple-converted-space">    </span>SCK<span class="Apple-converted-space">      </span>—&gt;<span class="Apple-converted-space">    </span>Pin 13 Arduino</li>
<li>GND<span class="Apple-converted-space"> </span></li>
<li>VCC 3,3V !Attention pas 5V</li>
</ul>
<h2>Lire le contenu d’un module RFID</h2>
<p>Maintenant que nous avons vu à quoi ressemble le contenu d’un tag RFID,  passons à la pratique.</p>
<p>Premièrement, ajoutons la librairie MFRC522<span class="Apple-converted-space"> </span></p>
<p>A ce stade, les exemples de la librairie MFRC52  permettent de lire et d’écrire (attention !!! le fait d’approcher votre carte du module en écriture modifie les informations contenues dans le tag et la rend inutilisable) .<span class="Apple-converted-space"> </span></p>
<p>Voyons le résultat de l’exemple « dump info » qui est sans danger.</p>
<p>Exemple dump info:</p>
<p><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2018/07/tableau_rfid.png"><img loading="lazy" decoding="async" class="size-full wp-image-3000 aligncenter" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2018/07/tableau_rfid.png" alt="Dump RFID" width="455" height="948" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2018/07/tableau_rfid.png 455w, https://plaisirarduino.fr/arduino/wp-content/uploads/2018/07/tableau_rfid-144x300.png 144w" sizes="auto, (max-width: 455px) 100vw, 455px" /></a></p>
<p><span class="Apple-converted-space">    </span></p>
<p>Cet exemple nous donne toutes les informations de notre carte RFID . On y trouve la capacité mémoire, l’UID, les secteurs, les adresses et les données.</p>
<p>Vous constaterez que les données sont sous formes hexadécimales, c’est un langage<span class="Apple-converted-space">  </span>machine qui nous est incompréhensible au premier abord.</p>
<h2>Ecrire du contenu<span class="Apple-converted-space"> dans le module RFID</span></h2>
<p>Pour écrire une information dans le tag, il est nécessaire de définir trois choses :<span style="color: #ff0000;"> le secteur</span> , <span style="color: #0000ff;">l’adresse</span> , et <span style="color: #339966;">les données</span>.<span class="Apple-converted-space">  </span>La modification des données se font par ligne de 16 octets. <span class="Apple-converted-space"> </span></p>
<p>&nbsp;</p>
<p><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2018/07/contenue-RFID.png"><img loading="lazy" decoding="async" class="size-full wp-image-3001 aligncenter" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2018/07/contenue-RFID.png" alt="Exemple de secteur RFID" width="482" height="256" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2018/07/contenue-RFID.png 482w, https://plaisirarduino.fr/arduino/wp-content/uploads/2018/07/contenue-RFID-300x159.png 300w" sizes="auto, (max-width: 482px) 100vw, 482px" /></a></p>
<p><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2018/07/contenue-RFID.png"><br />
</a>Nous pourrions mettre n’importe quelles données hexadécimales. En ce qui me concerne, j’ai fait le choix de faire correspondre les données, au traditionnel tableau ascii. En effet , ce langage se montre  particulièrement utile pour l’exploitation des informations par la suite.</p>
<p>Lançons l’exemple ReadAndWrite (Attention!! Modification du tag).</p>
<p>L’exécution de ce sketch a pour effet de modifier le secteur 1, le block 4 et les 16 octets hexadécimales.<span class="Apple-converted-space"> </span></p>
<p>En relisant le contenu, les données à cet emplacement, vous avez 0x01, 0x02, 0x03, 0x04,0x05, 0x06, 0x07, 0x08, 0x08, 0x09, 0xff, 0x0b,0x0c, 0x0d, 0x0e, 0x0f</p>
<h2>Retour d'expérience</h2>
<p>Suite aux deux "programmes exemples" que je vous ai présenté, vous êtes capable de lire et d'écrire sur une carte RFID.</p>
<p>Dans mon expérience de l'utilisation de la carte RFID, j'ai rendu inutilisable une paire de cartes en voulant tester les différents exemples de la librairie.</p>
<p>Ce que j'ai constaté:</p>
<ul>
<li>Ne pas modifier le dernier block d'un secteur. Exemple: secteur 1 block 7, secteur 2 block 11 etc...</li>
<li>Ne pas tester n'importe quel code sans le comprendre .</li>
</ul>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Cet article <a href="https://plaisirarduino.fr/rfid-avec-arduino/">RFID avec Arduino</a> est apparu en premier sur <a href="https://plaisirarduino.fr">PlaisirArduino</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Shield ethernet</title>
		<link>https://plaisirarduino.fr/shield-ethernet/</link>
		
		<dc:creator><![CDATA[Eugénio DA-LUZ]]></dc:creator>
		<pubDate>Mon, 24 Jul 2017 21:18:20 +0000</pubDate>
				<category><![CDATA[Projet]]></category>
		<guid isPermaLink="false">https://plaisirarduino.fr/?p=2780</guid>

					<description><![CDATA[<p>Je vous présente le Shield Ethernet. L'objectif de ce cours va être de présenter la commande de diode rouge, verte et bleu grâce à un navigateur Internet. Présentation du shield ethernet. Le Shield Ethernet utilise la broche 4 pour faire appel à la carte SD et les broches 10/11/12/13 pour &#8230;</p>
<p>Cet article <a href="https://plaisirarduino.fr/shield-ethernet/">Shield ethernet</a> est apparu en premier sur <a href="https://plaisirarduino.fr">PlaisirArduino</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Je vous présente le Shield Ethernet.</p>
<p><iframe loading="lazy" src="https://www.youtube.com/embed/aAD9afA24qY" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<p>L'objectif de ce cours va être de présenter la commande de diode rouge, verte et bleu grâce à un navigateur Internet.</p>
<h2><span style="text-decoration: underline;">Présentation du shield ethernet.</span></h2>
<p><figure id="attachment_2783" aria-describedby="caption-attachment-2783" style="width: 660px" class="wp-caption alignnone"><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2017/07/Key-ehernet-mod.001.jpeg"><img loading="lazy" decoding="async" class="size-large wp-image-2783" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2017/07/Key-ehernet-mod.001-1024x576.jpeg" alt="Schema du shield ethernet" width="660" height="371" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2017/07/Key-ehernet-mod.001-1024x576.jpeg 1024w, https://plaisirarduino.fr/arduino/wp-content/uploads/2017/07/Key-ehernet-mod.001-300x169.jpeg 300w, https://plaisirarduino.fr/arduino/wp-content/uploads/2017/07/Key-ehernet-mod.001-768x432.jpeg 768w, https://plaisirarduino.fr/arduino/wp-content/uploads/2017/07/Key-ehernet-mod.001-700x393.jpeg 700w, https://plaisirarduino.fr/arduino/wp-content/uploads/2017/07/Key-ehernet-mod.001.jpeg 1920w" sizes="auto, (max-width: 660px) 100vw, 660px" /></a><figcaption id="caption-attachment-2783" class="wp-caption-text">Schéma du shield ethernet</figcaption></figure></p>
<p>Le Shield Ethernet utilise la broche 4 pour faire appel à la carte SD et les broches 10/11/12/13 pour l’usage du shield.</p>
<h2><span style="text-decoration: underline;">La Carte SD</span></h2>
<p>La carte SD contient la page HTML que nous avons nommé "pagehtml.txt".  Vous avez le code complet en téléchargement.</p>
<h2><span style="text-decoration: underline;">Partie 1</span></h2>
<p>Le programme se compose de deux parties, la phase d'initialisation qui comprend les librairies, les variables, l’instanciation ethernet et le setup.</p>
<p><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2017/07/setup.jpg"><img loading="lazy" decoding="async" class="size-full wp-image-2781" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2017/07/setup.jpg" alt="Setup ethernet" width="490" height="714" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2017/07/setup.jpg 490w, https://plaisirarduino.fr/arduino/wp-content/uploads/2017/07/setup-206x300.jpg 206w" sizes="auto, (max-width: 490px) 100vw, 490px" /></a></p>
<h2><span style="text-decoration: underline;">Partie 2</span></h2>
<p>La deuxième partie comprend la fonction loop qui englobe les quatre fonctions suivantes: MonURL, traitementurl,  ecritureSD et MonHTML.</p>
<p><figure id="attachment_2782" aria-describedby="caption-attachment-2782" style="width: 495px" class="wp-caption alignnone"><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2017/07/loop.png"><img loading="lazy" decoding="async" class="size-full wp-image-2782" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2017/07/loop.png" alt="loop ethernet" width="495" height="280" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2017/07/loop.png 495w, https://plaisirarduino.fr/arduino/wp-content/uploads/2017/07/loop-300x170.png 300w" sizes="auto, (max-width: 495px) 100vw, 495px" /></a><figcaption id="caption-attachment-2782" class="wp-caption-text">Contient le loop ethernet</figcaption></figure></p>
<p>&nbsp;</p>
<h3><span style="text-decoration: underline;">MonURL</span></h3>
<p>Le rôle de "monURL", est de créer une chaîne de caractères avec la variable "Mydata".  Afin qu'à chaque connexion d'un client, nous captions ses informations URL.</p>
<p><figure id="attachment_2784" aria-describedby="caption-attachment-2784" style="width: 484px" class="wp-caption aligncenter"><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2017/07/monurl.png"><img loading="lazy" decoding="async" class="size-full wp-image-2784" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2017/07/monurl.png" alt="url shield ethernet " width="484" height="258" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2017/07/monurl.png 484w, https://plaisirarduino.fr/arduino/wp-content/uploads/2017/07/monurl-300x160.png 300w" sizes="auto, (max-width: 484px) 100vw, 484px" /></a><figcaption id="caption-attachment-2784" class="wp-caption-text">Récupérer l'url de la carte ethernet</figcaption></figure></p>
<h3><span style="text-decoration: underline;">TraitementURL</span></h3>
<p>Maintenant  que avons l'url de l'utilisateur, nous vérifions que celle-ci contient B2=1, B3=1 etc... . Dans la mesure où il y a une correspondance, on agit sur la broche en question.</p>
<p><figure id="attachment_2785" aria-describedby="caption-attachment-2785" style="width: 459px" class="wp-caption aligncenter"><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2017/07/traitement-url.png"><img loading="lazy" decoding="async" class="size-full wp-image-2785" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2017/07/traitement-url.png" alt="traité url shields ethernet" width="459" height="766" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2017/07/traitement-url.png 459w, https://plaisirarduino.fr/arduino/wp-content/uploads/2017/07/traitement-url-180x300.png 180w" sizes="auto, (max-width: 459px) 100vw, 459px" /></a><figcaption id="caption-attachment-2785" class="wp-caption-text">Traite l'url de shields ethernet</figcaption></figure></p>
<h3><span style="text-decoration: underline;">EcritureSD</span></h3>
<p>La fonction ecritureSD, voit son utilité dans le fait de mémoriser l’état des valeurs pour les boutons radio.</p>
<p>A chaque fois où un utilisateur renvoie l’information d'allumer des diodes, cette information doit être mémorisée au niveau de la page html. Le but est donc de définir si la LED rouge est égale à 1, on inscrit  la valeur checked. Car comme vous le savez, les deux boutons radio ne peuvent être actifs en même temps.</p>
<p><figure id="attachment_2787" aria-describedby="caption-attachment-2787" style="width: 401px" class="wp-caption aligncenter"><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2017/07/ecrituresd.png"><img loading="lazy" decoding="async" class="size-full wp-image-2787" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2017/07/ecrituresd.png" alt="écrire dans la carte sd" width="401" height="803" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2017/07/ecrituresd.png 401w, https://plaisirarduino.fr/arduino/wp-content/uploads/2017/07/ecrituresd-150x300.png 150w" sizes="auto, (max-width: 401px) 100vw, 401px" /></a><figcaption id="caption-attachment-2787" class="wp-caption-text">Ecrire dans la carte SD</figcaption></figure></p>
<h3><span style="text-decoration: underline;">MonHTML</span></h3>
<p>Restitue le contenu du fichier "pagehtml.txt".</p>
<p><figure id="attachment_2788" aria-describedby="caption-attachment-2788" style="width: 489px" class="wp-caption aligncenter"><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2017/07/mon-html.png"><img loading="lazy" decoding="async" class="size-full wp-image-2788" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2017/07/mon-html.png" alt="permet de restitué la page HTML" width="489" height="183" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2017/07/mon-html.png 489w, https://plaisirarduino.fr/arduino/wp-content/uploads/2017/07/mon-html-300x112.png 300w" sizes="auto, (max-width: 489px) 100vw, 489px" /></a><figcaption id="caption-attachment-2788" class="wp-caption-text">Restitution de la page HTML</figcaption></figure></p>
<p>Cet article <a href="https://plaisirarduino.fr/shield-ethernet/">Shield ethernet</a> est apparu en premier sur <a href="https://plaisirarduino.fr">PlaisirArduino</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Processing et port série</title>
		<link>https://plaisirarduino.fr/processing-et-arduino/</link>
		
		<dc:creator><![CDATA[Eugénio DA-LUZ]]></dc:creator>
		<pubDate>Mon, 08 May 2017 17:02:58 +0000</pubDate>
				<category><![CDATA[Projet]]></category>
		<guid isPermaLink="false">https://plaisirarduino.fr/?p=2591</guid>

					<description><![CDATA[<p>Communiquer avec le port série Pour permettre l'interaction entre processing et arduino, il est nécessaire de connaître le port de communication. Pour l'arduino, il faut brancher la platine et repérer le port actif pour le téléversement. Pour processing, il faut afficher la liste des ports actifs sur l'ordinateur et affecter &#8230;</p>
<p>Cet article <a href="https://plaisirarduino.fr/processing-et-arduino/">Processing et port série</a> est apparu en premier sur <a href="https://plaisirarduino.fr">PlaisirArduino</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><iframe loading="lazy" src="https://www.youtube.com/embed/S3HpkjcoqCM" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<h2 style="text-align: left;"><span style="text-decoration: underline;">Communiquer avec le port série</span></h2>
<p>Pour permettre l'interaction entre processing et arduino, il est nécessaire de connaître le port de communication.</p>
<p>Pour l'arduino, il faut brancher la platine et repérer le port actif pour le téléversement.</p>
<p><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2017/05/processing.jpg"><img loading="lazy" decoding="async" class="size-full wp-image-2594 aligncenter" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2017/05/processing.jpg" alt="Port actif arduino" width="680" height="603" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2017/05/processing.jpg 680w, https://plaisirarduino.fr/arduino/wp-content/uploads/2017/05/processing-300x266.jpg 300w" sizes="auto, (max-width: 680px) 100vw, 680px" /></a></p>
<p>Pour processing, il faut afficher la liste des ports actifs sur l'ordinateur et affecter celui qui correspond à l'arduino.</p>
<p><img loading="lazy" decoding="async" class="size-full wp-image-2593 aligncenter" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2017/05/découverte-du-port-com.jpg" alt="Port com processing" width="707" height="604" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2017/05/découverte-du-port-com.jpg 707w, https://plaisirarduino.fr/arduino/wp-content/uploads/2017/05/découverte-du-port-com-300x256.jpg 300w, https://plaisirarduino.fr/arduino/wp-content/uploads/2017/05/découverte-du-port-com-700x598.jpg 700w" sizes="auto, (max-width: 707px) 100vw, 707px" /></p>
<p>Dans ce cas, c'est le port "COM 6" qui prend pour valeur 0.</p>
<h2><span style="text-decoration: underline;">Envoyer une donnée par l'arduino </span></h2>
<p>Deux instructions sont indispensables:</p>
<p style="text-align: center;"><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2017/05/setup.png"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2597" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2017/05/setup.png" alt="setup" width="500" height="600" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2017/05/setup.png 500w, https://plaisirarduino.fr/arduino/wp-content/uploads/2017/05/setup-250x300.png 250w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a></p>
<p>&nbsp;</p>
<p>Avec cette base le programme arduino est opérationnel, toutefois la donnée envoyée est toujours la même.</p>
<p>&nbsp;</p>
<h2><span style="text-decoration: underline;">Envoyer une donnée par Processing</span></h2>
<p><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2017/05/processing-envoi-1.png"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2599" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2017/05/processing-envoi-1.png" alt="envoie une donnée par processing" width="700" height="600" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2017/05/processing-envoi-1.png 700w, https://plaisirarduino.fr/arduino/wp-content/uploads/2017/05/processing-envoi-1-300x257.png 300w" sizes="auto, (max-width: 700px) 100vw, 700px" /></a></p>
<p>Voilà, la donnée 1 est envoyée par le port série à condition de bien mettre une valeur adaptée pour soi dans l'instruction "Serial.list[ ]". Dans mon cas,  c'est "Serial.list[0]".</p>
<h2><span style="text-decoration: underline;">Traiter la donnée avec Arduino</span></h2>
<p style="text-align: center;"><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2017/05/arduino-reception-1.png"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2602" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2017/05/arduino-reception-1.png" alt="arduino reception" width="500" height="600" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2017/05/arduino-reception-1.png 500w, https://plaisirarduino.fr/arduino/wp-content/uploads/2017/05/arduino-reception-1-250x300.png 250w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a></p>
<p>Les données séries sont stockées dans la variable "val". Il suffit de réceptionner la donnée val et de la traiter.</p>
<p>&nbsp;</p>
<h2><span style="text-decoration: underline;">Traiter la donnée avec Processing</span></h2>
<p><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2017/05/processing.png"><img loading="lazy" decoding="async" class="alignnone size-large wp-image-2614" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2017/05/processing-1024x546.png" alt="traitement données processing" width="660" height="352" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2017/05/processing-1024x546.png 1024w, https://plaisirarduino.fr/arduino/wp-content/uploads/2017/05/processing-300x160.png 300w, https://plaisirarduino.fr/arduino/wp-content/uploads/2017/05/processing-768x409.png 768w, https://plaisirarduino.fr/arduino/wp-content/uploads/2017/05/processing-700x373.png 700w, https://plaisirarduino.fr/arduino/wp-content/uploads/2017/05/processing.png 1366w" sizes="auto, (max-width: 660px) 100vw, 660px" /></a></p>
<p>La variable "sb" contient la chaîne de caractère à exploiter dans le programme. Dans ce cas précis, j'ai choisi de l'afficher dans un fond blanc.</p>
<p style="text-align: center;"><strong><span style="color: #000080;">FIN</span></strong></p>
<p>Si vous n'avez pas encore vu la vidéo de processing, je vous invite à la visionner. De plus, le code complet se trouve en téléchargement avec d'autres exemples .</p>
<p>Cet article <a href="https://plaisirarduino.fr/processing-et-arduino/">Processing et port série</a> est apparu en premier sur <a href="https://plaisirarduino.fr">PlaisirArduino</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>MAX 7219</title>
		<link>https://plaisirarduino.fr/max-7219/</link>
		
		<dc:creator><![CDATA[Eugénio DA-LUZ]]></dc:creator>
		<pubDate>Fri, 30 Dec 2016 19:06:53 +0000</pubDate>
				<category><![CDATA[Projet]]></category>
		<guid isPermaLink="false">https://plaisirarduino.fr/?p=1940</guid>

					<description><![CDATA[<p>Comprendre le MAX 7219 Le MAX 7219 est un circuit intégré permettant le contrôle d'afficheur sept segments jusqu'à huit digits et de matrices à leds. L’aspect le plus important du MAX 7219 est de pouvoir être contrôlé par un bus compatible SPI, QSPI et MICROWIRE. N'utilisant que trois fils pour &#8230;</p>
<p>Cet article <a href="https://plaisirarduino.fr/max-7219/">MAX 7219</a> est apparu en premier sur <a href="https://plaisirarduino.fr">PlaisirArduino</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2 style="text-align: center;"><span style="text-decoration: underline;"><span style="color: #3366ff; text-decoration: underline;"><strong>Comprendre le MAX 7219</strong></span></span></h2>
<p><span style="color: #000000;">Le MAX 7219 est <strong>un circuit intégré permettant le contrôle d'afficheur</strong> sept segments <strong>jusqu'à huit digits</strong> et de matrices à leds.</span></p>
<p><iframe loading="lazy" src="https://www.youtube.com/embed/mTJcrdIzBfs" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<p><span style="color: #000000;">L’aspect le plus important du <strong>MAX 7219</strong> est de pouvoir être <strong>contrôlé par un bus compatible SPI, QSPI et<u> </u>MICROWIRE</strong>. N'utilisant que trois fils pour la communication, il permet ainsi de <strong>libérer des sorties de la carte Arduino</strong> pour d'autres usages.</span></p>
<p>Tout d’abord, je commencerai par <strong>détailler le fonctionnement  du MAX 7219</strong>  <strong>à l’aide du "datasheet".</strong> Ensuite, je vous proposerai la librairie <strong>« <span style="color: #ffcc00;"><span style="color: #ff6600;">SPI</span> </span>.h »</strong> et <strong>« <span style="color: #ff6600;">LedControl</span>.h » </strong> pour l'exploiter dans vos programmes.</p>
<h3 style="text-align: center;"><span style="text-decoration: underline;"><strong>Exploiter le DATASHEET.</strong></span></h3>
<p><span style="color: #000000;">Le "<strong><a style="color: #000000;" href="https://datasheets.maximintegrated.com/en/ds/MAX7219-MAX7221.pdf">datasheet</a>"</strong> est un document (pdf) fourni par le fabriquant du composant dans lequel nous y trouverons <strong>toutes les explications nous permettant son exploitation</strong>. Nous nous appuierons donc sur ce document et <strong>les tableaux qui y sont représentés</strong>. Vous verrez par conséquent, comment lire un "datasheet".</span></p>
<h4><strong><span style="text-decoration: underline;">Le format de transmission des données série du MAX 7219</span></strong></h4>
<p>En premier lieu le <strong>MAX 7219 utilise un format de transmission sur 16Bits</strong>  de <strong>D0 à D15</strong> représenté par le tableau ci-dessous.<span style="color: #ff6600;"><span style="color: #0000ff;"><br />
</span></span></p>
<div class="page" title="Page 6">
<div class="section">
<div class="layoutArea">
<div class="column">
<p><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/format-de-donnée-2.png"><img loading="lazy" decoding="async" class="wp-image-1965 size-large aligncenter" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/format-de-donnée-2-1024x71.png" width="660" height="46" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/format-de-donnée-2-1024x71.png 1024w, https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/format-de-donnée-2-300x21.png 300w, https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/format-de-donnée-2-768x54.png 768w, https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/format-de-donnée-2-700x49.png 700w, https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/format-de-donnée-2.png 1233w" sizes="auto, (max-width: 660px) 100vw, 660px" /></a><span style="color: #000000;">Vous y observerez de gauche à droite:</span></p>
</div>
</div>
</div>
</div>
<ul>
<li><span style="color: #000000;">Les huit premiers bit de <strong>D0 à D7</strong> pour des données (data). <strong>D0</strong> étant le bit, dit de poids </span><span style="color: #000000;">faible (<strong>LSB</strong>) et <strong>D7</strong> le bit de poids fort (<strong>MSB</strong>).</span></li>
<li><span style="color: #000000;">Les quatre prochains bits de<strong> D8 à D11 </strong>sont utilisés pour les adresses (registre).</span></li>
<li><span style="color: #000000;">Les quatre bits de<strong> D12 à D15</strong> restent par contre inexploités.</span></li>
</ul>
<p><span style="color: #000000;">Ainsi, le <strong>MAX 7219</strong> utilise <strong>14 registres de 0xX0 à 0xXF représentés dans le tableau (N°)</strong> ci- dessous. Le registre <strong>OxXD</strong> <em>n’étant </em>pas exploité.</span></p>
<h3 style="text-align: left;"><span style="text-decoration: underline;"><strong>Tableau des adresses de registre</strong></span></h3>
<p><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/tableau-de-registre-1-2.png"><img loading="lazy" decoding="async" class="wp-image-1964 size-full aligncenter" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/tableau-de-registre-1-2.png" width="589" height="669" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/tableau-de-registre-1-2.png 589w, https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/tableau-de-registre-1-2-264x300.png 264w" sizes="auto, (max-width: 589px) 100vw, 589px" /></a><span style="color: #000000;">Commençons par examiner les registres «<strong> «DIGIT0 » à « DIGIT7 »</strong> représentés en hexadécimale de <strong>0xX1 à 0xX8</strong>. En fait, ces huit registres <strong>permettent</strong> <strong>d’affecter</strong> <strong>une donnée à</strong> <strong><span style="text-decoration: underline;">chaque</span> Digit. Vous observerez qu'il y a aussi des fonctions spécifiques.</strong></span></p>
<h2 style="text-align: center;"><strong><span style="text-decoration: underline;">Les fonctions du MAX 7219.</span></strong></h2>
<h4><span style="text-decoration: underline;"><strong>1) La fonction "decode mode" - "0xx9".</strong></span></h4>
<p><span style="color: #ff6600;"><span style="color: #000000;">Commençons par  le registre<strong> "decode Mode"</strong> <strong>"0xX9", </strong></span><span style="color: #0000ff;"><span style="color: #000000;"><strong>il permet d'activer le code</strong> "<strong>B</strong> <strong>font</strong>". Le code B s'active sur les digits de votre choix en y inscrivant un bit à 1. Le tableau 4 ci-dessous, nous donne quelques exemples d'activation du  "decode mode". </span><br />
</span></span></p>
<p><img loading="lazy" decoding="async" class="size-full wp-image-2096 aligncenter" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/002-MAX7219.png" alt="002-max7219" width="857" height="228" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/002-MAX7219.png 857w, https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/002-MAX7219-300x80.png 300w, https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/002-MAX7219-768x204.png 768w, https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/002-MAX7219-700x186.png 700w" sizes="auto, (max-width: 857px) 100vw, 857px" /></p>
<p><span style="color: #000000;">Il suffit de prendre pour exemple la deuxième ligne du tableau pour comprendre comment activer le code B. L'activation à 1 du digit 0 de l'afficheur par la donnée <strong>0x01</strong>(héxa.) implique que seul le digit 0 sera en code B. Les sept autres digits à 0 de l'affichage ne seront pas gérés par le code B.</span></p>
<p><span style="color: #000000;">Par exemple, si l'on souhaite activer le code B seulement au digit quatre (4), cela nous donnera en binaire et respectivement au tableau ceci: 0001 0000 soit en hexadécimale 0x10. Nous avons donc la donnée utile à renseigner au registre "decode mode" "<strong>0xX9</strong>" pour activer le code B au digit 4 "D4". Bien-sûr, vous remarquerez que cette donnée est la suivante après 0x0f.</span></p>
<h5><span style="color: #000000;"><strong><span style="text-decoration: underline;">Qu'est-ce que le "code B" ?</span></strong></span></h5>
<p>Pour comprendre <strong>le code B,</strong> il faut tout d’abord savoir que c'est <strong>une fonction interne au MAX 7219 </strong>qui décode les données d'affichage selon un tableau prédéfini et représenté ci-dessous.</p>
<p><img loading="lazy" decoding="async" class="size-full wp-image-2094 aligncenter" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/001-MAX7219.png" alt="001-max7219" width="854" height="501" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/001-MAX7219.png 854w, https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/001-MAX7219-300x176.png 300w, https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/001-MAX7219-768x451.png 768w, https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/001-MAX7219-700x411.png 700w" sizes="auto, (max-width: 854px) 100vw, 854px" /></p>
<p><span style="color: #000000;">Plus précisément ce tableau nous montre comment, en fonction du registre appelé correspondant à un caractère , le MAX 7219 va activer les segments pour afficher les chiffres et caractères inscrits dans le tableau du code B .</span></p>
<p><span style="color: #000000;">Ainsi, chaque donnée d'affichage d'un caractère présent dans ce tableau sera systématiquement décodé, si le mode code B est activé au digit piloté pour l'affichage de la donnée qu'il reçoit .</span></p>
<p style="text-align: left;"><span style="color: #000000;"><a style="color: #000000;" href="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/quatre.png"><img loading="lazy" decoding="async" class="size-full wp-image-2085 alignright" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/quatre.png" alt="chiffre quatre sept segment" width="117" height="183" /></a>Prenons le cas de l'envoi de la  donnée du chiffre quatre (4) "0x04" à afficher au <strong>digit 0 </strong>et activé en "<strong>decode</strong> <strong>Mode</strong>", tous les segments correspondant au registre du chiffre 4 seront activés pour afficher 4. Soit les segments B,C,F et G sur l'afficheur sept segments. Comme indiqué par le tableau 5.</span></p>
<p><span style="color: #000000;">A l'inverse, si "décode mode" n'est pas activé, seul le segment E de l'afficheur va s'allumer. Pourquoi ? Car la valeur "<strong>0x04</strong>" <strong>vaut en binaire 0000</strong> <strong>0100</strong> et que dans ce cas le MAX 7219 décode l'affichage suivant un mode binaire. On trouve ici un exemple important, à savoir que sans "decode mode" chaque segment est piloté individuellement en fonction du bit à 1. Le tableau 6 ci dessous représente la correspondance des huit segments via les huit bits.</span></p>
<p><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/convertion.png"><img loading="lazy" decoding="async" class="size-full wp-image-2084 aligncenter" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/convertion.png" alt="max 7219 sans décode mode" width="407" height="343" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/convertion.png 407w, https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/convertion-300x253.png 300w" sizes="auto, (max-width: 407px) 100vw, 407px" /></a>En fait "<strong>decode mode</strong>" <strong>nous simplifie la tâche</strong> de façon à ne pas traiter en binaire l'affichage d'un chiffre. Ce qui impliquerait l'envoi de huit données de huit bits les unes après les autres pour piloter chaque segment. Il faut reconnaître que cela serait fastidieux.<span style="color: #0000ff;"><br />
</span></p>
<p><span style="color: #000000;">En conclusion,  il est possible d'afficher des symboles ou caractères comme le moins "- "ou un "C" en désactivant "decode mode" au digit de notre choix.</span><span style="color: #0000ff;"><br />
</span></p>
<h4><span style="text-decoration: underline;"><strong><span style="color: #000000; text-decoration: underline;">2) LA FONCTION "intensity" - "0xXA"</span><br />
</strong></span></h4>
<p>Abordons à présent le registre "<strong>intensity</strong>" "<strong>0xXA</strong>". Il permet de <strong>définir l'intensité lumineuse de l'afficheur</strong>. En fonction du tableau  7, ci-dessous, il peut avoir seize (16) données, sur quatre (4) bits, possible de "0xX0" à "0xXF" (hexa.) allant du plus faible éclairage au plus fort.<span style="color: #ff6600;"><br />
</span></p>
<h4><img loading="lazy" decoding="async" class="size-full wp-image-2112 aligncenter" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/003-MAX7219.png" alt="003-max7219" width="857" height="484" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/003-MAX7219.png 857w, https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/003-MAX7219-300x169.png 300w, https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/003-MAX7219-768x434.png 768w, https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/003-MAX7219-700x395.png 700w" sizes="auto, (max-width: 857px) 100vw, 857px" /></h4>
<h4><span style="text-decoration: underline; color: #000000;"><strong>LA FONCTION "scan limit" - "OxXB"</strong></span></h4>
<p>Passons ensuite au registre "<strong>scan limit</strong>" "<strong>OxXB</strong>" Il a pour rôle de <strong>définir le nombre de digits que l'on souhaite exploiter de digit0 à digit8</strong>. En fonction du tableau 8 ci-dessous, il peut prendre huit (8) données sur trois (3) bits allant de 0xX0 à 0xX7 sélectionnant ainsi les digits de droite à gauche.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2114" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/004-MAX7219.png" alt="004-max7219" width="850" height="283" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/004-MAX7219.png 850w, https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/004-MAX7219-300x100.png 300w, https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/004-MAX7219-768x256.png 768w, https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/004-MAX7219-700x233.png 700w" sizes="auto, (max-width: 850px) 100vw, 850px" /></p>
<p>Il faut souligner que <strong>le digit 0 sera toujours le minimum configurable</strong> et à juste titre, car il ne serait pas logique d'utiliser cette fonction pour une extinction générale alors qu'une fonction de ce type existe.</p>
<h4><span style="color: #000000;"><strong><span style="text-decoration: underline;">3) LA FONCTION "shutdown" - "OxXC".</span></strong></span></h4>
<p>Le registre "<strong>shutdown</strong>" <strong>"OxXC".</strong>  Il permet d'<strong>allumer ou d’éteindre l'afficheur.</strong> Suivant le tableau trois (3) ci-dessous? il ne prend que deux (2) données sur un (1) bit soit "0xX0" ou "0xX1". A zéro (0) "0xX0" l'afficheur est éteint.</p>
<p><img loading="lazy" decoding="async" class="size-full wp-image-2117 aligncenter" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/005-MAX7219.png" alt="005-max7219" width="812" height="190" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/005-MAX7219.png 812w, https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/005-MAX7219-300x70.png 300w, https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/005-MAX7219-768x180.png 768w, https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/005-MAX7219-700x164.png 700w" sizes="auto, (max-width: 812px) 100vw, 812px" /></p>
<h4><span style="text-decoration: underline;"><strong>4) LA FONCTION "Display test" - "0xXF"</strong></span></h4>
<p>Et enfin, le registre <strong>"Display test" "0xXF",</strong> il permet de tester l'afficheur en activant toutes les leds de l'afficheur. En fonction du tableau dix (10)  comme "<strong>shutdown</strong>", il ne prend que deux (2) données sur un (1) bit soit "<strong>0xX0"</strong> ou <strong>"0xX1"</strong>. A un (1) le mode test de l'afficheur est activé.<span style="color: #ff6600;"><br />
</span></p>
<p><img loading="lazy" decoding="async" class=" wp-image-2119 aligncenter" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/006-MAX7219.png" alt="006-max7219" width="409" height="193" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/006-MAX7219.png 824w, https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/006-MAX7219-300x141.png 300w, https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/006-MAX7219-768x362.png 768w, https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/006-MAX7219-700x330.png 700w" sizes="auto, (max-width: 409px) 100vw, 409px" /></p>
<p>Cependant, il est à noter que le mode test reste activé tant qu'une do<strong>nnée de désactivation "0xX0" n'est pas renvoyé au registre "0xXF".</strong></p>
<p>Concrètement, nous venons de passer en revue les fonctions de registre ainsi que leurs données d'exploitation.</p>
<p>Mais nous ne savons toujours pas comment les transmettre au MAX.</p>
<h3 style="text-align: center;"><span style="text-decoration: underline;"><strong>L'ENVOI DES DONNÉES.</strong></span></h3>
<h4><span style="text-decoration: underline;"><strong>Avant propos: Les données transmises.</strong></span></h4>
<p>Dans nos programmes, il va falloir remplacer le "<strong>X</strong>" majuscule, dans les données des tableaux, par le chiffre ou la lettre correspondant à la bonne donnée hexadécimale.</p>
<p>Prenons le cas de la donnée "<strong>0xX6</strong>". En premier lieu, regardons <strong>les deux premiers "caractères"</strong> "<strong>0x</strong>", ils indiquent que la donnée et de <strong>type HEXADÉCIMALE</strong>. Voyons ensuite <strong>les deux prochain caractères "X6".</strong> Ces derniers sont la<strong> transcription hexadécimale d'une donnée en bits. </strong>Hors le<strong> format Hexadécimale n'accepte pas le terme "X</strong>" il va donc falloir le remplacer. Mais par quoi ?</p>
<p><img loading="lazy" decoding="async" class="alignright wp-image-2136 " src="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/007-MAX7219-e1478469602398.png" alt="007-max7219" width="254" height="218" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/007-MAX7219-e1478469602398.png 410w, https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/007-MAX7219-e1478469602398-300x258.png 300w" sizes="auto, (max-width: 254px) 100vw, 254px" /></p>
<p>Pour le savoir, il suffit d'<strong>utiliser la calculette du "PC" en mode programmeur</strong> sur "<strong>hexa</strong>" et "<strong>octet</strong>" et de reprendre les bits du tableau, en l’occurrence le sept (7), en cliquant sur les bits affichés en calculette. Avec 0000 0110 on trouve 6, ce qui nous fait "06" car ce format s'écrit sur deux caractères et le premier a par défaut 0, si il n'est pas affiché.</p>
<p>A partir de là "<strong>0xX6</strong>" devient "<strong>0x06"</strong>.</p>
<p>Toutefois, il sera possible de l'écrire simplement par zéro "0 ou un "1" lorsque la donnée n'est que sur un (1) bit.</p>
<h4><span style="text-decoration: underline;"><strong>Le format d'envoi.</strong></span></h4>
<p>Avant tout chose, elles doivent respecter ce que l'on appelle un format d'envoi. Et c'est donc dans vos programmes que ce format devra être respecté.</p>
<p>Nous venons de voir précédemment qu'il fallait renseigner<strong> une adresse et sa donnée</strong> pour activer la fonction d'un registre. Il nous faudra donc les envoyer toutes les deux.</p>
<p><span style="color: #0000ff;"><strong>Considérons une fonction de transfert de données constituée des deux paramètres utiles "adresse" et "data". </strong><em>(data = données en anglais).</em></span><strong><span style="color: #800080;"><br />
</span></strong></p>
<ul>
<li><span style="color: #0000ff;"><strong>void transfert(adresse, data);</strong></span></li>
</ul>
<p>Pour une compréhension aisée, prenons par exemple, la fonction "<strong>Display</strong> <strong>test</strong>" qui a pour adresse "<strong>0xXF</strong>",  si l'on souhaite l'activer, il faut donc  inscrire "<strong>0xX1</strong>" comme donnée.</p>
<p>En conclusion, cela nous donne en paramètre de fonction.</p>
<ul>
<li><strong><span style="color: #800080;"><span style="color: #33cccc;">void</span> </span>transfert(<span style="color: #ff0000;">0x0F</span>,<span style="color: #ff0000;"> 0x01</span>);<span style="color: #800080;"> //Transfert des données.</span></strong></li>
</ul>
<p><strong>La fonction transférera de notre carte Arduino vers le MAX7219, </strong> les données selon le <strong>protocole</strong> choisi via le port série. Dans notre cas, c'est le <strong>SPI</strong> que nous utiliserons.</p>
<h3 style="text-align: center;"><span style="text-decoration: underline;"><strong>LA COMMUNICATION</strong></span></h3>
<h4><span style="text-decoration: underline;"><strong>LE S.P.I.<br />
</strong></span></h4>
<p>Le Max 7219 peut fonctionner avec plusieurs<strong> protocoles de communication bus</strong>. Mais dans ce tutoriel, nous utiliserons et ne parlerons que du protocole de bus <strong>SPI</strong> qui transmet les données de la platine Arduino vers le MAX 7219.</p>
<p>Qu'est ce que le <strong>SPI </strong>"<em><strong>S</strong>erial <strong>P</strong>eripheral <strong>I</strong>nterface"</em> ? C'est une communication sur le <strong>principe du maître-esclave</strong>. Ce qui veut dire que la transmission des données ne se fait que dans<strong> un seul sens du maître vers l'esclave,</strong> donc la platine Arduino représente le maître et le MAX 7219 l'esclave.<strong> Plusieurs esclaves peuvent être reliés à ce bus</strong> série et seront <strong>sélectionnés</strong> pour réception de données <strong>via une ligne prévue à cet effet</strong>.</p>
<h4><span style="text-decoration: underline;"><strong>LA LIAISON SPI</strong></span></h4>
<p style="text-align: justify;">Ci-dessous,nous avons le schéma de câblage de la liaison série <strong>entre la platine Arduino et le MAX 7219.</strong></p>
<p style="text-align: justify;"><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/MOSI.png"><img loading="lazy" decoding="async" class="alignright" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/MOSI.png" alt="shéma MOSI" width="253" height="189" /></a>On observe trois liaisons:</p>
<ol>
<li style="list-style-type: none;">
<ol>
<li><strong>MOSI </strong>qui signifie "<strong>M</strong>aster<strong> O</strong>utput <strong>S</strong>lave <strong>I</strong>Nput" est une broche de sortie vers <strong>DIN </strong>qui est l'e<span id="result_box" lang="fr">ntrée de traitement des données série</span>.</li>
<li><strong>I/O</strong> est une sortie vers <strong>LOAD </strong>(CS) qui est l'entrée d'activation de chargement de données.</li>
</ol>
</li>
</ol>
<ol>
<li style="text-align: justify;"><strong>SCK </strong>est une sortie vers <strong>CLK</strong> qui est l'e<span id="result_box" class="short_text" lang="fr"><span class="">ntrée d' horloge série.</span></span></li>
</ol>
<p><strong>Le choix des différentes broches pour la liaison SPI ne s'est pas fait au hasard</strong>. Elles ont été définies par la configuration matérielle de la carte Arduino en fonction du mode SPI. Pour le savoir, il faut consulter la documentation de la carte Arduino pour le mode SPI.</p>
<p><img loading="lazy" decoding="async" class=" wp-image-2129 aligncenter" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/008-MAX7219.png" alt="008-max7219" width="473" height="382" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/008-MAX7219.png 614w, https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/008-MAX7219-300x242.png 300w" sizes="auto, (max-width: 473px) 100vw, 473px" /></p>
<p>Il existe d'autres broches, de type mâle, facilement reconnaissable pour installé cette liaison.</p>
<p><img loading="lazy" decoding="async" class="size-full wp-image-2131 aligncenter" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/009-MAX7219.png" alt="009-max7219" width="237" height="89" /></p>
<p>Premièrement la broche onze (11) <strong>MOSI</strong> configurée en mode sortie va envoyer les données sous forme de suite de bit zéro(0)-un(1).</p>
<p>Deuxièmement la broche dix (10) <strong>I/O</strong> configurée en mode sortie, activera le chargement des données dans le MAX.</p>
<p>Et troisièmement la broche treize (13) <strong>SCK</strong> configurée également en mode sortie, elle synchronisera et cadencera la transmission des données.</p>
<p>Voici la représentation schématique de la transmission au niveau du MAX7219..</p>
<p><img loading="lazy" decoding="async" class="size-full wp-image-2132 aligncenter" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/010-MAX7219.png" alt="010-max7219" width="805" height="311" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/010-MAX7219.png 805w, https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/010-MAX7219-300x116.png 300w, https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/010-MAX7219-768x297.png 768w, https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/010-MAX7219-700x270.png 700w" sizes="auto, (max-width: 805px) 100vw, 805px" /></p>
<p>C'est ainsi que se passe la transmission en fonction de l'état de chaque entrée du MAX. Vous constaterez qu'il y a aussi <strong>DOUT</strong> qui est une entrée<span id="result_box" class="" lang="fr"><span class=""> utilisée</span> p<span class="">our connecter en série plusieurs MAX7219 ou MAX7221 mais nous ne l'utiliserons pas.</span></span></p>
<p>En résumé, la condition de fonctionnement de ce circuit dépend de l'état bas <strong>LOAD</strong> (CS), de l'envoi des données par <strong>MOSI</strong> et de leur synchronisation par <strong>SCK</strong>. Ce schéma illustre bien la transmission des données <strong>du  bit de poids fort D15 vers le bit de poids faible D0.</strong></p>
<h4><span style="text-decoration: underline;"><strong>L'exploitation du bus SPI</strong></span></h4>
<p>Tout d’abord pour exploiter le MAX, il va nous falloir configurer notre port série SPI à l'aide de paramètres. Tout comme nous le faisons pour exploiter le port série du moniteur avec la fonction <strong><span style="color: #ff9900;">Serial</span>.<span style="color: #ff9900;">begin</span>();</strong>.</p>
<p>Sauf qu'à la différence du port série moniteur, cela va se faire au travers d'une <strong>librairie</strong> <strong>incluse dans l'IDE de Arduino</strong>. Cette librairie s'appelle <strong>&lt;<span style="color: #ff9900;">SPI</span>.h&gt;</strong></p>
<p>Dans le programme, interviennent plusieurs instructions qu'il va être nécessaire de comprendre.</p>
<h5><strong><span style="text-decoration: underline;">Les instructions à connaître</span></strong></h5>
<p><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/include.png"><img loading="lazy" decoding="async" class="size-full wp-image-1989" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/include.png" alt="include SPI" width="470" height="16" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/include.png 470w, https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/include-300x10.png 300w, https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/include-432x16.png 432w" sizes="auto, (max-width: 470px) 100vw, 470px" /></a></p>
<p>Cette instruction indique que nous incluons la librairie SPI.</p>
<p><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/SPI-Setting.png"><img loading="lazy" decoding="async" class="size-full wp-image-1990 alignnone" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/SPI-Setting.png" alt="SPI setting" width="419" height="17" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/SPI-Setting.png 419w, https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/SPI-Setting-300x12.png 300w" sizes="auto, (max-width: 419px) 100vw, 419px" /></a></p>
<p style="text-align: justify;"><strong><span class="wikiword">SPISettings</span> </strong>est utilisée pour configurer le port SPI, il prend successivement trois paramètres:</p>
<ul>
<li style="list-style-type: none;">
<ul>
<li style="text-align: justify;">La vitesse de transmission des données.</li>
</ul>
</li>
</ul>
<ul>
<li style="list-style-type: none;">
<ul>
<li style="text-align: justify;">L'ordre d'envoi des données.</li>
</ul>
</li>
</ul>
<ul>
<li style="text-align: justify;">Le mode d'envoi.</li>
</ul>
<p><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/begintransaction.png"><img loading="lazy" decoding="async" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/begintransaction.png" alt="spi begin transaction SPI" width="269" height="17" /></a></p>
<p>Initialise le bus SPI en utilisant les données  de <strong>SPISettings</strong> dans notre cas TransferMax7219 .</p>
<p><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/SPI-transfert-1.png"><img loading="lazy" decoding="async" class="alignnone wp-image-1996 size-full" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/SPI-transfert-1.png" alt="spi transfert" width="170" height="17" /></a></p>
<p>Transfert des données sous un format  de un (1) octet soit huit (8) bit.</p>
<h5><span style="text-decoration: underline;"><strong>La fonction de transfert de données</strong></span></h5>
<p>Cette tâche étant répétitive, nous avons du créer une fonction de transfert pour dialoguer aisément avec le MAX 7219 dont on fait abondamment usage dans le programme.</p>
<p><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/fonction-SPI.png"><img loading="lazy" decoding="async" class="alignnone wp-image-1998" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/fonction-SPI.png" alt="fonction de tranfert de données SPI" width="729" height="183" /></a></p>
<p>La fonction prend deux paramètres en considération: le registre auquel on souhaite s'adresser et  la valeur de la donnée.</p>
<p>Exemple:</p>
<p><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/appel-de-la-fonction.png"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2000" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/appel-de-la-fonction.png" alt="appel-de-la-fonction" width="608" height="19" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/appel-de-la-fonction.png 608w, https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/appel-de-la-fonction-300x9.png 300w" sizes="auto, (max-width: 608px) 100vw, 608px" /></a></p>
<p><span style="color: #000000;">Prenons le cas de l'exemple illustré ci-dessus. On fait appel à la fonction <strong>Trsf7219</strong> <strong>pour transmettre</strong> au registre <strong>0x0A</strong> « <strong>intensity </strong>» la donnée <strong>0x06</strong>, soit la valeur <strong>13/32.</strong> Ce qui a pour effet de modifier la luminosité de l’afficheur.</span></p>
<p>Vous savez à présent exploiter l'utilisation des données et leur transmission vers le MAX via la communication SPI. Néanmoins, il existe<strong> un moyen plus simple de transférer des données vers le MAX</strong>. Ce moyen est <strong>une librairie que l'on appe</strong>lle <strong>&lt;<span style="color: #ff9900;">LedControl</span>.h&gt;</strong></p>
<h2>Utilisation de LedControl</h2>
<p><strong><span style="color: #ff9900;">LedControl</span></strong>  est une librairie simple qui offre des <strong>fonctions simplifiées de transfert de données vers le MAX7219</strong> rendant ainsi la programmation d'un afficheur sept segments ou d'une matrice <strong>plus souple et conviviale</strong>. Elle utilise des <strong>fonctions sous forme de  texte</strong> bien documenté et qui  permettent de réaliser de nombreuses choses.</p>
<h3>Les fonctions de bases</h3>
<p>Après avoir téléchargé la librairie &lt;<span style="color: #ff9900;">ledcontrol</span>.h&gt;, il est nécessaire de l'inclure au programme.</p>
<p><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/include-led-controle.png"><img loading="lazy" decoding="async" class=" wp-image-2010 aligncenter" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/include-led-controle.png" alt="include led controle" width="316" height="57" /></a><span style="color: #ff9900;"><span style="color: #000000;"> Ci-dessous </span>LedControl</span> est <strong>déclaré par une instance d'un objet </strong>et appelé "<strong>septSegMax</strong>" dans notre programme. Cette fonction prend trois (3) paramètres, définis par le câblage de la platine Arduino et un (1), la dernière valeur correspond  au nombre de contrôleur présent sur le bus.</p>
<p><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/instance-led-controle.png"><img loading="lazy" decoding="async" class="wp-image-2011 aligncenter" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/instance-led-controle.png" alt="Instance LED Controle" width="538" height="50" /></a>L'objet "<strong>septSegMax</strong>" servira donc à faire appel aux fonctions fournies par &lt;<span style="color: #ff9900;">LedControl</span>.h&gt;.</p>
<ul>
<li>Le premier paramètre définit la <strong>broche 10</strong> de l'Arduino comme étant <strong>LOAD</strong> <strong>CS</strong></li>
<li>Le deuxième paramètre définit la <strong>broche 13</strong> de l'Arduino comme étant <strong>CLK</strong></li>
<li>Le troisième paramètre définit la <strong>broche 11</strong> de l'Arduino comme étant le <strong>MOSI</strong></li>
<li>Le dernier paramètre correspond au <strong>nombre de MAX7219</strong> utilisé. Ici un (1).</li>
</ul>
<p>Voyons enfin les fonctions de &lt;LedControl.h&gt;</p>
<h4><span style="text-decoration: underline;">La fonction<strong> shutdown();</strong></span></h4>
<p><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/shutdown-led-controle.png"><img loading="lazy" decoding="async" class=" wp-image-2012 aligncenter" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/shutdown-led-controle.png" alt="shutdown LED Controle" width="440" height="48" /></a>Cette fonction permet d'allumer ou d’éteindre le MAX 7219. Si la valeur est <strong><span style="color: #33cccc;">false</span></strong>, le circuit fonctionne normalement et à l'inverse, <strong><span style="color: #33cccc;">true</span> </strong>le circuit est éteint. Vous constatez de toute évidence que les registres précédemment utilisés ont été remplacés par des fonctions de sorte que leurs noms soient évocateurs à rôle. Dans notre cas, <strong><span style="color: #ff9900;">shutdown</span>(paramètre1, <span style="color: #33cccc;">paramètre2</span> );</strong> il faut reconnaître que cela est bien plus simple.</p>
<h4><span style="text-decoration: underline;">La fonction<strong> setIntensity();</strong></span></h4>
<p><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/Intensité-lumineuses-led-controle.png"><img loading="lazy" decoding="async" class="wp-image-2013 aligncenter" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/Intensité-lumineuses-led-controle.png" alt="Intensité lumineuse SetIntensity" width="426" height="57" /></a>Vous l'aurez deviné cette fonction permet de <strong>définir l'intensité lumineuse de l'afficheur</strong> en 16 valeurs différentes; 15 étant notamment  le maximum représentant le nombre de données possible que l'on a vu dans le tableau sept (7).</p>
<h4><span style="text-decoration: underline;">La fonction<strong> clearDisplay();</strong></span></h4>
<p><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/clear-display-Led-controle.png"><img loading="lazy" decoding="async" class="wp-image-2015 aligncenter" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/clear-display-Led-controle.png" alt="clearDisplay efface l'afficheur" width="401" height="69" /></a>Cette fonction éteint l'afficheur et supprime toutes les données précédentes.</p>
<div style="border-left: 1px solid blue; padding-left: 5px;">
<hr />
<p style="text-align: center;"><span style="color: #ff0000;"><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/500px-Icon_attention_blue-1.png"><img loading="lazy" decoding="async" class="alignnone wp-image-2051 " src="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/500px-Icon_attention_blue-1.png" width="95" height="83" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/500px-Icon_attention_blue-1.png 500w, https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/500px-Icon_attention_blue-1-300x260.png 300w" sizes="auto, (max-width: 95px) 100vw, 95px" /></a></span></p>
<p style="text-align: center;"><span style="color: #000080;">fonction AFFICHEUR SEPT SEGMENTS</span></p>
<p><span style="text-decoration: underline;">La fonction<strong> setDigit();</strong></span><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/setDigit-Led-controle.png"><img loading="lazy" decoding="async" class="wp-image-2017 aligncenter" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/setDigit-Led-controle.png" alt="instruction setDigit 4 paramettre" width="492" height="58" /></a>Elle prend quatre paramètres:</p>
<ul>
<li>le premier est l'adresse de l'afficheur par défaut toujours à 0.</li>
<li>le deuxième est le digit qui a une valeur de 0 à 7.</li>
<li>le troisième est la valeur de l'afficheur comprise de 0 à 15 en correspondance hexadécimal (afficher la lettre A vaut 10 et F vaut 15)</li>
<li> le quatrième permet d'afficher le point DP si la valeur est  "true".</li>
</ul>
<h4><span style="text-decoration: underline;">La fonction<strong> setRow</strong></span></h4>
<p><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/setRow-Led-controle.png"><img loading="lazy" decoding="async" class="wp-image-2018 aligncenter" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/10/setRow-Led-controle.png" alt="setrow-led-controle" width="488" height="60" /></a>Elle prend trois paramètres:</p>
<ul>
<li>le premier est l'adresse de l'afficheur par défaut toujours à 0.</li>
<li>le second est le <strong>digit</strong> en question qui prendre pour valeur de 0 à 7.</li>
<li>le troisième est une donnée en octet "<strong>B01110111</strong>" ou en hexadécimal "<strong>0x77"</strong>. Ce troisième paramètre a pour avantage d'afficher tous les segments que l'on souhaite sur un digit de manière distincte.</li>
</ul>
</div>
<div style="border-left: 1px solid red; padding-left: 5px;">
<p style="text-align: center;"><span style="color: #ff0000;"><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2015/09/500px-Icon_attention.png"><img loading="lazy" decoding="async" class="wp-image-397 aligncenter" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2015/09/500px-Icon_attention.png" alt="icone attention rouge" width="68" height="60" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2015/09/500px-Icon_attention.png 500w, https://plaisirarduino.fr/arduino/wp-content/uploads/2015/09/500px-Icon_attention-300x260.png 300w, https://plaisirarduino.fr/arduino/wp-content/uploads/2015/09/500px-Icon_attention-148x128.png 148w, https://plaisirarduino.fr/arduino/wp-content/uploads/2015/09/500px-Icon_attention-31x27.png 31w, https://plaisirarduino.fr/arduino/wp-content/uploads/2015/09/500px-Icon_attention-38x33.png 38w, https://plaisirarduino.fr/arduino/wp-content/uploads/2015/09/500px-Icon_attention-248x215.png 248w" sizes="auto, (max-width: 68px) 100vw, 68px" /></a></span></p>
<p style="text-align: center;"><span style="color: #ff0000;">fonction MATRICE 64 LED</span></p>
<p>LedControl ne s'aborde pas exactement de la même façon si on travaille en matrice ou en afficheur sept segments.</p>
<p><strong>Info:</strong> L'usage de la matrice 1588BS inverse mes colonnes et mes lignes.</p>
<h2>Les fonctions de base</h2>
<h4><span style="text-decoration: underline;">la fonction<strong> setLed</strong></span></h4>
<p style="text-align: center;"><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/setLed_ledcontrole.png"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2152" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/setLed_ledcontrole.png" alt="Fonction setled de led controle" width="427" height="54" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/setLed_ledcontrole.png 427w, https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/setLed_ledcontrole-300x38.png 300w" sizes="auto, (max-width: 427px) 100vw, 427px" /></a></p>
<p>Elle prend quatre paramètres:</p>
<ul>
<li>le premier est l'adresse de l'afficheur par défaut toujours à 0.</li>
<li>le second est la ligne de la matrice qui prendre pour valeur de 0 à 7.</li>
<li>le troisième est la colonne de la matrice qui prendre pour valeur de 0 à 7.</li>
<li>le quatrième si elle a pour paramètre " true" la diode est allumée, sinon elle a  "false" et la diode est éteinte.</li>
</ul>
<h4></h4>
<h4><span style="text-decoration: underline;">la fonction<strong> setRow</strong></span></h4>
<p><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/setrow-matmax.png"><img loading="lazy" decoding="async" class="wp-image-2090 aligncenter" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/setrow-matmax.png" alt="set row paramettre" width="429" height="55" /></a></p>
<p>Elle prend trois paramètres:</p>
<ul>
<li>le premier est l'adresse de l'afficheur par défaut toujours à 0.</li>
<li>le second est la ligne en question qui prend pour valeur de 0 à 7.</li>
<li>le troisième est une donnée en octet "<strong>B01110111</strong>" ou en hexadécimal "<strong>0x77"</strong>. Ce troisième paramètre a pour avantage d'afficher toutes les diodes que l'on souhaite sur la colonne de manière distincte.</li>
</ul>
<h4></h4>
<h4><span style="text-decoration: underline;">la fonction <strong>setColumn</strong></span></h4>
<p><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/setrow-matmax.png"><img loading="lazy" decoding="async" class="wp-image-2090 aligncenter" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/11/setrow-matmax.png" alt="set row paramettre" width="429" height="55" /></a></p>
<p>Elle prend trois paramètres:</p>
<ul>
<li>le premier est l'adresse de l'afficheur par défaut toujours à 0.</li>
<li>le second est la colonne en question qui prendre pour valeur de 0 à 7.</li>
<li>le troisième est une donnée en octet "<strong>B01110111</strong>" ou en hexadécimal "<strong>0x77"</strong>. Ce troisième paramètre a pour avantage d'afficher toutes les diodes que l'on souhaite sur la ligne de manière distincte.</li>
</ul>
</div>
<h2>Schéma de montage</h2>
<h3>Schéma Afficheur Sept Segments</h3>
<p>Maintenant pour utiliser le Max 7219, nous allons faire un montage type avec deux afficheurs 4 digits,  dont il est possible de câbler qu'un seul afficheur.</p>
<p>Vous trouverez un sketch pour 8 et 4 digits en téléchargement. .</p>
<p><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2019/04/4digits_7segments_MAX7219_ARDUINO_schéma.jpg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-3915" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2019/04/4digits_7segments_MAX7219_ARDUINO_schéma.jpg" alt="schema max 7219" width="2058" height="978" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2019/04/4digits_7segments_MAX7219_ARDUINO_schéma.jpg 2058w, https://plaisirarduino.fr/arduino/wp-content/uploads/2019/04/4digits_7segments_MAX7219_ARDUINO_schéma-300x143.jpg 300w, https://plaisirarduino.fr/arduino/wp-content/uploads/2019/04/4digits_7segments_MAX7219_ARDUINO_schéma-768x365.jpg 768w, https://plaisirarduino.fr/arduino/wp-content/uploads/2019/04/4digits_7segments_MAX7219_ARDUINO_schéma-1024x487.jpg 1024w, https://plaisirarduino.fr/arduino/wp-content/uploads/2019/04/4digits_7segments_MAX7219_ARDUINO_schéma-700x333.jpg 700w" sizes="auto, (max-width: 2058px) 100vw, 2058px" /></a></p>
<h2>Schéma Matrice 1588BS</h2>
<p>Constater que les digits de la matrice correspondent à la cathode commune et que les segments à l'anode commune, ceci inverse l'utilisation de la librairie LedControle où les colonnes correspondent aux segments et les digits aux lignes.  Après avoir tester plusieurs montages celui-ci a été le plus fonctionnel.</p>
<p><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2019/04/fritzing-Matrice-8x8_schéma.png"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-3918" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2019/04/fritzing-Matrice-8x8_schéma.png" alt="Matrice à led 8x8" width="1602" height="1029" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2019/04/fritzing-Matrice-8x8_schéma.png 1602w, https://plaisirarduino.fr/arduino/wp-content/uploads/2019/04/fritzing-Matrice-8x8_schéma-300x193.png 300w, https://plaisirarduino.fr/arduino/wp-content/uploads/2019/04/fritzing-Matrice-8x8_schéma-768x493.png 768w, https://plaisirarduino.fr/arduino/wp-content/uploads/2019/04/fritzing-Matrice-8x8_schéma-1024x658.png 1024w, https://plaisirarduino.fr/arduino/wp-content/uploads/2019/04/fritzing-Matrice-8x8_schéma-700x450.png 700w" sizes="auto, (max-width: 1602px) 100vw, 1602px" /></a></p>
<p>Cet article <a href="https://plaisirarduino.fr/max-7219/">MAX 7219</a> est apparu en premier sur <a href="https://plaisirarduino.fr">PlaisirArduino</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Matrice à LED</title>
		<link>https://plaisirarduino.fr/matrice-a-led/</link>
		
		<dc:creator><![CDATA[Eugénio DA-LUZ]]></dc:creator>
		<pubDate>Fri, 29 Jul 2016 13:13:12 +0000</pubDate>
				<category><![CDATA[Projet]]></category>
		<guid isPermaLink="false">https://plaisirarduino.fr/?p=1443</guid>

					<description><![CDATA[<p>Comment afficher des caractères avec une matrice à LED . SCHEMA</p>
<p>Cet article <a href="https://plaisirarduino.fr/matrice-a-led/">Matrice à LED</a> est apparu en premier sur <a href="https://plaisirarduino.fr">PlaisirArduino</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Comment afficher des caractères avec une matrice à LED .</p>
<p><iframe loading="lazy" width="560" height="315" src="https://www.youtube.com/embed/Gr44nn3gU2s" frameborder="0" allowfullscreen></iframe></p>
<p style="text-align: left;">
<h2 style="text-align: center;">SCHEMA</h2>
<p><a href="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/07/correction.001.jpeg"><img loading="lazy" decoding="async" class="size-large wp-image-1445" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/07/correction.001-1024x576.jpeg" alt="matrice arduino" width="660" height="371" srcset="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/07/correction.001-1024x576.jpeg 1024w, https://plaisirarduino.fr/arduino/wp-content/uploads/2016/07/correction.001-300x169.jpeg 300w, https://plaisirarduino.fr/arduino/wp-content/uploads/2016/07/correction.001-700x393.jpeg 700w, https://plaisirarduino.fr/arduino/wp-content/uploads/2016/07/correction.001.jpeg 1920w" sizes="auto, (max-width: 660px) 100vw, 660px" /></a></p>
<p>Cet article <a href="https://plaisirarduino.fr/matrice-a-led/">Matrice à LED</a> est apparu en premier sur <a href="https://plaisirarduino.fr">PlaisirArduino</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Les fonctions loop et setup Arduino</title>
		<link>https://plaisirarduino.fr/les-fonctions-loop-et-setup-arduino/</link>
		
		<dc:creator><![CDATA[Eugénio DA-LUZ]]></dc:creator>
		<pubDate>Thu, 03 Dec 2015 21:24:28 +0000</pubDate>
				<category><![CDATA[Débutant Arduino]]></category>
		<guid isPermaLink="false">https://plaisirarduino.fr/?p=540</guid>

					<description><![CDATA[<p>Les fonctions loop et setup Comment utiliser les fonctions loop et setup lorsqu' on est débutant ? Voici une vidéo qui vous guidera dans vos premiers pas dans l'univers de la programmation Arduino sur une base du langage C++. Résumé Je vous présente six sketchs pour vous parler des fonctions &#8230;</p>
<p>Cet article <a href="https://plaisirarduino.fr/les-fonctions-loop-et-setup-arduino/">Les fonctions loop et setup Arduino</a> est apparu en premier sur <a href="https://plaisirarduino.fr">PlaisirArduino</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1 style="text-align: center;"><strong><span style="text-decoration: underline; color: #0000ff;">Les fonctions </span><span style="text-decoration: underline;"><span style="color: #808000; text-decoration: underline;">loop</span><span style="color: #0000ff; text-decoration: underline;"> et </span><span style="color: #808000; text-decoration: underline;">setup</span></span><br />
</strong></h1>
<p>Comment utiliser les fonctions <strong><span style="color: #808000;">loop</span> </strong>et <strong><span style="color: #808000;">setup</span> </strong>lorsqu' on est débutant ? Voici une vidéo qui vous guidera dans vos premiers pas dans l'univers de la programmation Arduino sur une base du langage C++.</p>
<p><iframe loading="lazy" src="https://www.youtube.com/embed/gFedhBWfcw4" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<h2 style="text-align: center;"><span style="text-decoration: underline;">Résumé</span></h2>
<p>Je vous présente six sketchs pour vous parler des fonctions <strong><span style="color: #808000;">loop</span> </strong>et <strong><span style="color: #808000;">setup</span> </strong>.</p>
<p>Je présente dans les premiers sketchs le <a href="https://plaisirarduino.fr/le-moniteur-serie/"><strong><em><span style="color: #0000ff;">moniteur série</span></em></strong></a>, cela va permettre d’avoir un visuel du fonctionnement de <strong><span style="color: #808000;">loop</span> </strong>et <strong><span style="color: #808000;">setup</span> </strong>.</p>
<p>Le premier sketch est composé de deux lignes <strong><span style="color: #ff6600;">Serial</span>.<span style="color: #ff6600;">begin</span>();</strong> et<strong> <span style="color: #ff6600;">Serial</span>.<span style="color: #ff6600;">print</span>();</strong>.<br />
<strong><span style="color: #ff6600;">Serial</span>.<span style="color: #ff6600;">begin</span>();</strong> a pour utilité d’initialiser la vitesse de transmission des données série pour communiquer avec le <a href="https://plaisirarduino.fr/le-moniteur-serie/"><strong><em><span style="color: #0000ff;">moniteur série</span></em></strong></a>, il sera toujours déclaré dans la fonction <strong><span style="color: #808000;">setup</span></strong>.</p>
<p><strong> <span style="color: #ff6600;">Serial</span>.<span style="color: #ff6600;">print</span>(<span style="color: #33cccc;">"SALUT"</span>);</strong> est déclaré dans la fonction <strong><span style="color: #808000;">setup</span></strong>, regardons son comportement avec le <a href="https://plaisirarduino.fr/le-moniteur-serie/"><strong><em><span style="color: #0000ff;">moniteur série</span></em></strong></a>.</p>
<p>Celui-ci affiche simplement "<span style="color: #000000;"><strong>SALUT</strong></span>" parce que <strong><span style="color: #808000;">setup</span> </strong>n'a pour l’instant que deux instructions: utiliser le moniteur serie et afficher "<span style="color: #000000;"><strong>SALUT</strong></span>".</p>
<p>Passons à l’instruction <strong> <span style="color: #ff6600;">Serial</span>.<span style="color: #ff6600;">print</span>();</strong> "<span style="color: #000000;"><strong>SALUT</strong></span>" dans la fonction <strong><span style="color: #808000;">loop</span> </strong>et observons son comportement.</p>
<p>Celui-ci affiche "<span style="color: #000000;"><strong>SALUT</strong></span>"  à répétition parce que la fonction <strong><span style="color: #808000;">loop</span> </strong>n'a que cette instruction à exécuter. La fonction <strong><span style="color: #808000;">loop</span> </strong>se répète continuellement et chaque affichage correspond à un cycle de lecture programme.</p>
<p>—————————————————————————————————</p>
<p>Le prochain sketch consiste à vous montrer deux choses. le comportement de la fonction <strong><span style="color: #808000;">loop</span> </strong> et celui du <a href="https://plaisirarduino.fr/le-moniteur-serie/"><strong><em><span style="color: #0000ff;">moniteur série</span></em></strong></a>.</p>
<p>J’ ai intégré une variable "i" qui s’incrémente dans la boucle, on constate que cette variable progresse d'une unité à chaque fois.</p>
<p>Maintenant, le fait de relancer le <a href="https://plaisirarduino.fr/le-moniteur-serie/"><strong><em><span style="color: #0000ff;">moniteur série</span></em></strong></a>, la variable revient à sa valeur de départ.</p>
<p>Ce que  je veux vous montrer, c’est que le <a href="https://plaisirarduino.fr/le-moniteur-serie/"><strong><em><span style="color: #0000ff;">moniteur série</span></em></strong></a> effectue un re-set de la carte <strong>Arduino</strong> lorsque qu’il est lancé.</p>
<p>——————————————————————————————————</p>
<p>Dans le prochain sketch,</p>
<p>J’ai fait le montage d’une diode avec une résistance série de 220 ohm<br />
connectée sur la broche 12 pour observer le comportement de celle-ci.</p>
<p>Dans la fonction <strong><span style="color: #808000;">setup</span></strong>, j’ai mis une temporisation de 5 secondes avant de pouvoir voir la diode s’allumer une fois et ensuite s’éteindre.</p>
<p>C’est ce que fait ce programme .</p>
<p>Maintenant pour revoir cet événement se produire, je relance le <a href="https://plaisirarduino.fr/le-moniteur-serie/"><strong><em><span style="color: #0000ff;">moniteur série</span></em></strong></a>; et 5 secondes après la diode s’allume à nouveau, ce qui confirme que le moniteur effectue un re-set de la carte.</p>
<p>—————————————————————————————-</p>
<p>Dans le sketch 5,</p>
<p>Je reprends seulement les instructions <strong><span style="color: #ff6600;">digitalWrite</span>();</strong> pour les mettre dans la fonction loop, je téléverse et observe le comportement de la diode.</p>
<p>Celle-ci clignote à intervalle d’une seconde de manière permanente, tant qu’il n’y a pas une intervention de notre part.</p>
<p>Avant de passer au dernier sketch, je souhaite vous montrer le comportement de la diode si on retire le délai de 1 seconde à la fin de la boucle.</p>
<p>Voilà ce qui se passe: la diode ne s’éteint plus, en fait en réalité elle s’éteint mais en recommençant la boucle: la diode à l’instruction de se rallumer instantanément, ce qui est imperceptible à l’œil nu.</p>
<p>———————————————————————————————————-</p>
<p>Le but du dernier skectch, est de réaliser des instructions d’initialisation par la fonction <strong><span style="color: #808000;">setup</span> </strong> et ensuite de passer à la fonction <strong><span style="color: #808000;">loop</span> </strong>qui va exécuter en boucle les instructions demandées:  <strong><span style="color: #ff6600;">digitalWrite</span>(12,<span style="color: #33cccc;">HIGH</span>);</strong> broche 12 à l’état haut, ensuite attendre 1 seconde, puis <strong><span style="color: #ff6600;">digitalWrite</span>(12,<span style="color: #33cccc;">LOW</span>);</strong> broche 12 à l’état bas , attendre 1 seconde et cela en boucle jusqu'à ce que l’on intervienne par le bouton re-set, qu'on lance le <a href="https://plaisirarduino.fr/le-moniteur-serie/"><strong><em><span style="color: #0000ff;">moniteur série</span></em></strong></a> ou qu’on débranche la carte.</p>
<p>On a fait le tour de comment fonctionne les fonctions <strong><span style="color: #808000;">setup</span> </strong>et <strong><span style="color: #808000;">loop</span></strong>.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1738" src="https://plaisirarduino.fr/arduino/wp-content/uploads/2016/09/ARDUINO-min-e1474414115629.jpg" alt="arduino-min" width="624" height="468" /></p>
<h3 style="text-align: center;"><strong><span style="color: #0000ff;">FIN.</span></strong></h3>
<p><em>A travers l'Arduino vous touchez du bout des doigts à l'univers passionnant de l’électronique et de sa programmation. Découvrez et apprenez en explorant nos tutoriels et en <a href="https://plaisirarduino.fr/telechargement/"><span style="color: #0000ff;">téléchargeant</span> </a>les codes sources en exemple.</em></p>
<h4 style="text-align: center;"><em><strong><span style="color: #0000ff;">MERCI.</span></strong></em></h4>
<p>&nbsp;</p>
<p>Cet article <a href="https://plaisirarduino.fr/les-fonctions-loop-et-setup-arduino/">Les fonctions loop et setup Arduino</a> est apparu en premier sur <a href="https://plaisirarduino.fr">PlaisirArduino</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Mise en cache de page à l’aide de Disk: Enhanced 
Minified using Disk
Mise en cache de la base de données de 8/117 requêtes en 0.373 secondes utilisant Disk

Served from: plaisirarduino.fr @ 2026-02-07 11:23:11 by W3 Total Cache
-->