<?xml version="1.0" encoding="ISO-8859-1"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title>Forum du club des développeurs et IT Pro - Arduino</title>
		<link>https://www.developpez.net/forums/</link>
		<description><![CDATA[Forum d'entraide sur la programmation des cartes de développement dans l'environnement Arduino]]></description>
		<language>fr</language>
		<lastBuildDate>Mon, 07 Sep 2026 11:48:16 GMT</lastBuildDate>
		<generator>vBulletin</generator>
		<ttl>15</ttl>
		<image>
			<url>https://forum.developpez.be/images/misc/rss.png</url>
			<title>Forum du club des développeurs et IT Pro - Arduino</title>
			<link>https://www.developpez.net/forums/</link>
		</image>
		<item>
			<title><![CDATA[[Arduino ESP32] IDE arduino V2.3.10 Oublie des frappes]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2185019&amp;goto=newpost</link>
			<pubDate>Thu, 06 Aug 2026 07:59:09 GMT</pubDate>
			<description><![CDATA[Bonjour, 
 
J'ai fait la mise...]]></description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
J'ai fait la mise à jour de l'IDE Arduino.<br />
Depuis cette nouvelle version, j'ai de temps en temps de drôle de phénomènes...<br />
<br />
Lors de la modification, bien souvent modeste, par exemple changer un 'i=2' en 'i=3',<br />
L'IDE me sort des erreur de type <div class="bbcode_container">
	<div class="bbcode_description">Citation:</div>
	<div class="bbcode_quote printable">
		<hr />
		
			&quot;error: expected primary-expression before ';' token
			
		<hr />
	</div>
</div>malgré que sur mon écran je voie bien<div class="bbcode_container">
	<div class="bbcode_description">Citation:</div>
	<div class="bbcode_quote printable">
		<hr />
		
			i=3;
			
		<hr />
	</div>
</div>Il faut parfois faire deux trois corrections avant que l'IDE semble accepter la correction.<br />
<br />
Suis-je le seul à utiliser des moufle pour taper du code ??<br />
<br />
Michel</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f2094/general-developpement/programmation-systeme/embarque/arduino/">Arduino</category>
			<dc:creator>michel.semal</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2185019/general-developpement/programmation-systeme/embarque/arduino/ide-arduino-v2-3-10-oublie-frappes/</guid>
		</item>
		<item>
			<title><![CDATA[[Arduino ESP32] MCP9600 problème d'I2C]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2184955&amp;goto=newpost</link>
			<pubDate>Sun, 02 Aug 2026 19:17:48 GMT</pubDate>
			<description><![CDATA[Bonjour le Forum, 
 
J'ai...]]></description>
			<content:encoded><![CDATA[<div>Bonjour le Forum,<br />
<br />
J'ai acheter deux modules MCP9600 (ampli pour thermocouple) en I2C.<br />
<br />
Je n'arrive pas à faire fonctionner l'exemple de la bibliothèque de AdaFruit MCP9600.<br />
<br />
J'ai un sketch qui scan les adresse I2C branchées sur lI2C. Un scan se répète toutes les deux secondes<br />
<br />
Donc un module I2C branché , le programme donne l'adresse du module. SI il y a plusieurs modules, il scanne toutes les adresses disponible.<br />
C'est un truc qui me permet de vérifier l'adresse d'un module et son branchement.<br />
<br />
Hors, avec les module MCP9600, lorsque je branche le module, le scan trouve son adresse, puis au scan suivant, plus de module.<br />
Si je branche deux module (BMP280 par exemple), le premier scan scan trouve les deux adresse (le BMP280 et le MCP9600, puis au second scan, le module MCP9600 n'est plus trouvé, uniquement l'adresse du BMP280.<br />
<br />
Je coupe l'alimentation (3.3v) du module MCP9600, puis la rebranche, et le premier scan suivant le rebranchement trouve bien l'adresse du MCP9600, mais au second scan, plus rien (uniquement l'adresse du BMP9600).<br />
<br />
J'ai mis des résistances de pullup, mais rien n'y fait<br />
<br />
Si quelqu'un a déjà eu un problème similaire (et trouvé une solution.  ou une raison ...) <br />
<br />
Merci<br />
<br />
Michel</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f2094/general-developpement/programmation-systeme/embarque/arduino/">Arduino</category>
			<dc:creator>michel.semal</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2184955/general-developpement/programmation-systeme/embarque/arduino/mcp9600-probleme-d-i2c/</guid>
		</item>
		<item>
			<title><![CDATA[Problème de lecture d'un encodeur rotatif en liaison TX/RX]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2184756&amp;goto=newpost</link>
			<pubDate>Mon, 20 Jul 2026 17:33:15 GMT</pubDate>
			<description><![CDATA[bonjour,  
j'ai un carte...]]></description>
			<content:encoded><![CDATA[<div>bonjour, <br />
j'ai un carte arduino micro pro connectée à mon pc. via les pin rx et tx  elle est reliée à une carte arduino mega 2556 (sur pin 18 et 19).<br />
<br />
Le but est de créer un joystick plutôt boite à boutons pour jouer sur simulateur de vol (DCS World pour ceux qui connaissent).<br />
Il n'y a que des interrupteurs double ou triple position (on/off , on/off/on) et je souhaite aussi avoir de encodeur rotatifs KY-040<br />
<br />
Les 2 programmes fonctionnent avec des boutons simples. . pour le moment mon code est<br />
<br />
MEGA<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="40"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br />84<br />85<br />86<br />87<br />88<br />89<br />90<br />91<br />92<br />93<br />94<br />95<br />96<br />97<br />98<br />99<br />100<br />101<br />102<br />103<br />104<br />105<br />106<br />107<br />108<br />109<br />110<br />111<br />112<br />113<br />114<br />115<br />116<br />117<br />118<br />119<br />120<br />121<br />122<br />123<br />124<br />125<br />126<br />127<br />128<br />129<br />130<br />131<br />132<br />133<br />134<br />135<br />136<br />137<br />138<br />139<br />140<br />141<br />142<br />143<br />144<br />145<br />146<br />147<br />148<br />149<br />150<br />151<br />152<br />153<br />154<br />155<br />156<br />157<br />158<br />159<br />160<br />161<br />162<br />163<br />164<br />165<br />166<br />167<br />168<br />169<br />170<br />171<br />172<br />173<br />174<br />175<br />176<br />177<br />178<br />179<br />180<br />181<br />182<br />183<br />184<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #808080;">// =====================================================</span>
<span style="color: #808080;">// BOUTONS MEGA (50 boutons)</span>
<span style="color: #808080;">// =====================================================</span>
&nbsp;
<span style="color: #339933;">#define BUTTON1   2</span>
<span style="color: #339933;">#define BUTTON2   3</span>
<span style="color: #339933;">#define BUTTON3   4</span>
<span style="color: #339933;">#define BUTTON4   5</span>
<span style="color: #339933;">#define BUTTON5   6</span>
<span style="color: #339933;">#define BUTTON6   7</span>
<span style="color: #339933;">#define BUTTON7   8</span>
<span style="color: #339933;">#define BUTTON8   9</span>
<span style="color: #339933;">#define BUTTON9   10</span>
<span style="color: #339933;">#define BUTTON10  11</span>
<span style="color: #339933;">#define BUTTON11  12</span>
<span style="color: #339933;">#define BUTTON12  13</span>
&nbsp;
<span style="color: #339933;">#define BUTTON13  22</span>
<span style="color: #339933;">#define BUTTON14  23</span>
<span style="color: #339933;">#define BUTTON15  24</span>
<span style="color: #339933;">#define BUTTON16  25</span>
<span style="color: #339933;">#define BUTTON17  26</span>
<span style="color: #339933;">#define BUTTON18  27</span>
&nbsp;
<span style="color: #808080;">// 28 = ENCODEUR A</span>
<span style="color: #808080;">// 30 = ENCODEUR B</span>
&nbsp;
<span style="color: #339933;">#define BUTTON19  29</span>
<span style="color: #339933;">#define BUTTON20  31</span>
<span style="color: #339933;">#define BUTTON21  32</span>
<span style="color: #339933;">#define BUTTON22  33</span>
<span style="color: #339933;">#define BUTTON23  34</span>
<span style="color: #339933;">#define BUTTON24  35</span>
<span style="color: #339933;">#define BUTTON25  36</span>
<span style="color: #339933;">#define BUTTON26  37</span>
<span style="color: #339933;">#define BUTTON27  38</span>
<span style="color: #339933;">#define BUTTON28  39</span>
<span style="color: #339933;">#define BUTTON29  40</span>
<span style="color: #339933;">#define BUTTON30  41</span>
<span style="color: #339933;">#define BUTTON31  42</span>
<span style="color: #339933;">#define BUTTON32  43</span>
<span style="color: #339933;">#define BUTTON33  44</span>
<span style="color: #339933;">#define BUTTON34  45</span>
<span style="color: #339933;">#define BUTTON35  46</span>
<span style="color: #339933;">#define BUTTON36  47</span>
<span style="color: #339933;">#define BUTTON37  48</span>
<span style="color: #339933;">#define BUTTON38  49</span>
<span style="color: #339933;">#define BUTTON39  50</span>
<span style="color: #339933;">#define BUTTON40  51</span>
<span style="color: #339933;">#define BUTTON41  52</span>
<span style="color: #339933;">#define BUTTON42  53</span>
<span style="color: #339933;">#define BUTTON43  A0</span>
<span style="color: #339933;">#define BUTTON44  A1</span>
<span style="color: #339933;">#define BUTTON45  A2</span>
<span style="color: #339933;">#define BUTTON46  A3</span>
<span style="color: #339933;">#define BUTTON47  A4</span>
<span style="color: #339933;">#define BUTTON48  A5</span>
<span style="color: #339933;">#define BUTTON49  A6</span>
<span style="color: #339933;">#define BUTTON50  A7</span>
&nbsp;
<span style="color: #808080;">// =====================================================</span>
<span style="color: #808080;">// TABLEAU DES PINS BOUTONS</span>
<span style="color: #808080;">// =====================================================</span>
&nbsp;
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">byte</span> NUM_BUTTONS = <span style="color: #cc66cc;">50</span>;
&nbsp;
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">byte</span> buttonPins<span style="color: black;">&#91;</span>NUM_BUTTONS<span style="color: black;">&#93;</span> = <span style="color: black;">&#123;</span>
  BUTTON1,  BUTTON2,  BUTTON3,  BUTTON4,
  BUTTON5,  BUTTON6,  BUTTON7,  BUTTON8,
  BUTTON9,  BUTTON10, BUTTON11, BUTTON12,
&nbsp;
  BUTTON13, BUTTON14, BUTTON15, BUTTON16,
  BUTTON17, BUTTON18, BUTTON19, BUTTON20,
  BUTTON21, BUTTON22, BUTTON23, BUTTON24,
  BUTTON25, BUTTON26, BUTTON27, BUTTON28,
  BUTTON29, BUTTON30, BUTTON31, BUTTON32,
  BUTTON33, BUTTON34, BUTTON35, BUTTON36,
  BUTTON37, BUTTON38, BUTTON39, BUTTON40,
  BUTTON41, BUTTON42, BUTTON43, BUTTON44,
  BUTTON45, BUTTON46, BUTTON47, BUTTON48,
  BUTTON49, BUTTON50
<span style="color: black;">&#125;</span>;
&nbsp;
<span style="color: #808080;">// =====================================================</span>
<span style="color: #808080;">// ENCODEUR KY-040 (m&eacute;thode simple)</span>
<span style="color: #808080;">// =====================================================</span>
&nbsp;
<span style="color: #339933;">#define ENCODER_A 28</span>
<span style="color: #339933;">#define ENCODER_B 30</span>
&nbsp;
<span style="color: #0000ff;">int</span> lastCLK;
&nbsp;
<span style="color: #808080;">// =====================================================</span>
<span style="color: #808080;">// DONN&Eacute;ES DES BOUTONS</span>
<span style="color: #808080;">// =====================================================</span>
&nbsp;
<span style="color: #0000ff;">byte</span> buttons<span style="color: black;">&#91;</span><span style="color: #cc66cc;">7</span><span style="color: black;">&#93;</span> = <span style="color: black;">&#123;</span><span style="color: #cc66cc;">0</span><span style="color: black;">&#125;</span>;
&nbsp;
<span style="color: #808080;">// =====================================================</span>
<span style="color: #808080;">// SETUP</span>
<span style="color: #808080;">// =====================================================</span>
&nbsp;
<span style="color: #0000ff;">void</span> setup<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
&nbsp;
  <span style="color: #0080ff;">Serial</span>.begin<span style="color: black;">&#40;</span><span style="color: #cc66cc;">115200</span><span style="color: black;">&#41;</span>;     <span style="color: #808080;">// Debug</span>
  Serial1.begin<span style="color: black;">&#40;</span><span style="color: #cc66cc;">115200</span><span style="color: black;">&#41;</span>;    <span style="color: #808080;">// Vers Pro Micro</span>
&nbsp;
  <span style="color: #808080;">// Configuration des boutons</span>
  <span style="color: #0000ff;">for</span> <span style="color: black;">&#40;</span><span style="color: #0000ff;">byte</span> i = <span style="color: #cc66cc;">0</span>; i &lt; NUM_BUTTONS; i++<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
    <span style="color: #0080ff;">pinMode</span><span style="color: black;">&#40;</span>buttonPins<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span>, <span style="color: #0080ff;">INPUT_PULLUP</span><span style="color: black;">&#41;</span>;
  <span style="color: black;">&#125;</span>
&nbsp;
  <span style="color: #808080;">// Encodeur</span>
  <span style="color: #0080ff;">pinMode</span><span style="color: black;">&#40;</span>ENCODER_A, <span style="color: #0080ff;">INPUT_PULLUP</span><span style="color: black;">&#41;</span>;
  <span style="color: #0080ff;">pinMode</span><span style="color: black;">&#40;</span>ENCODER_B, <span style="color: #0080ff;">INPUT_PULLUP</span><span style="color: black;">&#41;</span>;
&nbsp;
  lastCLK = <span style="color: #0080ff;">digitalRead</span><span style="color: black;">&#40;</span>ENCODER_A<span style="color: black;">&#41;</span>;
&nbsp;
  <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;=== MEGA OK ===&quot;</span><span style="color: black;">&#41;</span>;
<span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #808080;">// =====================================================</span>
<span style="color: #808080;">// ENCODEUR SIMPLE</span>
<span style="color: #808080;">// =====================================================</span>
&nbsp;
<span style="color: #0000ff;">byte</span> readEncoderSimple<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
&nbsp;
  <span style="color: #0000ff;">int</span> currentCLK = <span style="color: #0080ff;">digitalRead</span><span style="color: black;">&#40;</span>ENCODER_A<span style="color: black;">&#41;</span>;
&nbsp;
  <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>currentCLK != lastCLK<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
&nbsp;
    <span style="color: #0000ff;">int</span> currentDT = <span style="color: #0080ff;">digitalRead</span><span style="color: black;">&#40;</span>ENCODER_B<span style="color: black;">&#41;</span>;
&nbsp;
    lastCLK = currentCLK;
&nbsp;
    <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>currentDT != currentCLK<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
      <span style="color: #0000ff;">return</span> <span style="color: #cc66cc;">1</span>;   <span style="color: #808080;">// droite</span>
    <span style="color: black;">&#125;</span> <span style="color: #0000ff;">else</span> <span style="color: black;">&#123;</span>
      <span style="color: #0000ff;">return</span> <span style="color: #cc66cc;">2</span>;   <span style="color: #808080;">// gauche</span>
    <span style="color: black;">&#125;</span>
  <span style="color: black;">&#125;</span>
&nbsp;
  <span style="color: #0000ff;">return</span> <span style="color: #cc66cc;">0</span>;
<span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #808080;">// =====================================================</span>
<span style="color: #808080;">// LOOP</span>
<span style="color: #808080;">// =====================================================</span>
&nbsp;
<span style="color: #0000ff;">void</span> loop<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
&nbsp;
  <span style="color: #808080;">// ---------------------------------------------------</span>
  <span style="color: #808080;">// Lecture des boutons</span>
  <span style="color: #808080;">// ---------------------------------------------------</span>
&nbsp;
  <span style="color: #0000ff;">for</span> <span style="color: black;">&#40;</span><span style="color: #0000ff;">byte</span> i = <span style="color: #cc66cc;">0</span>; i &lt; <span style="color: #cc66cc;">7</span>; i++<span style="color: black;">&#41;</span> buttons<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span> = <span style="color: #cc66cc;">0</span>;
&nbsp;
  <span style="color: #0000ff;">for</span> <span style="color: black;">&#40;</span><span style="color: #0000ff;">byte</span> i = <span style="color: #cc66cc;">0</span>; i &lt; NUM_BUTTONS; i++<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
    <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>!<span style="color: #0080ff;">digitalRead</span><span style="color: black;">&#40;</span>buttonPins<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
      buttons<span style="color: black;">&#91;</span>i / <span style="color: #cc66cc;">8</span><span style="color: black;">&#93;</span> |= <span style="color: black;">&#40;</span><span style="color: #cc66cc;">1</span> &lt;&lt; <span style="color: black;">&#40;</span>i % <span style="color: #cc66cc;">8</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>;
    <span style="color: black;">&#125;</span>
  <span style="color: black;">&#125;</span>
&nbsp;
  <span style="color: #808080;">// ---------------------------------------------------</span>
  <span style="color: #808080;">// Lecture encodeur</span>
  <span style="color: #808080;">// ---------------------------------------------------</span>
&nbsp;
  <span style="color: #0000ff;">byte</span> encoderEvent = readEncoderSimple<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
&nbsp;
  <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>encoderEvent != <span style="color: #cc66cc;">0</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
    <span style="color: #0080ff;">Serial</span>.print<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;ENCODEUR = &quot;</span><span style="color: black;">&#41;</span>;
    <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span>encoderEvent<span style="color: black;">&#41;</span>;
  <span style="color: black;">&#125;</span>
&nbsp;
  <span style="color: #808080;">// ---------------------------------------------------</span>
  <span style="color: #808080;">// Envoi du paquet</span>
  <span style="color: #808080;">// ---------------------------------------------------</span>
&nbsp;
  Serial1.write<span style="color: black;">&#40;</span><span style="color: #cc66cc;">0xAA</span><span style="color: black;">&#41;</span>;
  Serial1.write<span style="color: black;">&#40;</span>buttons, <span style="color: #cc66cc;">7</span><span style="color: black;">&#41;</span>;
  Serial1.write<span style="color: black;">&#40;</span>encoderEvent<span style="color: black;">&#41;</span>;
&nbsp;
  <span style="color: #0080ff;">delay</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: black;">&#41;</span>;
<span style="color: black;">&#125;</span></pre></td></tr></table></code><hr />
</div>MICRO PRO<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="40"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br />84<br />85<br />86<br />87<br />88<br />89<br />90<br />91<br />92<br />93<br />94<br />95<br />96<br />97<br />98<br />99<br />100<br />101<br />102<br />103<br />104<br />105<br />106<br />107<br />108<br />109<br />110<br />111<br />112<br />113<br />114<br />115<br />116<br />117<br />118<br />119<br />120<br />121<br />122<br />123<br />124<br />125<br />126<br />127<br />128<br />129<br />130<br />131<br />132<br />133<br />134<br />135<br />136<br />137<br />138<br />139<br />140<br />141<br />142<br />143<br />144<br />145<br />146<br />147<br />148<br />149<br />150<br />151<br />152<br />153<br />154<br />155<br />156<br />157<br />158<br />159<br />160<br />161<br />162<br />163<br />164<br />165<br />166<br />167<br />168<br />169<br />170<br />171<br />172<br />173<br />174<br />175<br />176<br />177<br />178<br />179<br />180<br />181<br />182<br />183<br />184<br />185<br />186<br />187<br />188<br />189<br />190<br />191<br />192<br />193<br />194<br />195<br />196<br />197<br />198<br />199<br />200<br />201<br />202<br />203<br />204<br />205<br />206<br />207<br />208<br />209<br />210<br />211<br />212<br />213<br />214<br />215<br />216<br />217<br />218<br />219<br />220<br />221<br />222<br />223<br />224<br />225<br />226<br />227<br />228<br />229<br />230<br />231<br />232<br />233<br />234<br />235<br />236<br />237<br />238<br />239<br />240<br />241<br />242<br />243<br />244<br />245<br />246<br />247<br />248<br />249<br />250<br />251<br />252<br />253<br />254<br />255<br />256<br />257<br />258<br />259<br />260<br />261<br />262<br />263<br />264<br />265<br />266<br />267<br />268<br />269<br />270<br />271<br />272<br />273<br />274<br />275<br />276<br />277<br />278<br />279<br />280<br />281<br />282<br />283<br />284<br />285<br />286<br />287<br />288<br />289<br />290<br />291<br />292<br />293<br />294<br />295<br />296<br />297<br />298<br />299<br />300<br />301<br />302<br />303<br />304<br />305<br />306<br />307<br />308<br />309<br />310<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #339933;">#include</span><span style="color: #FF0000;"> &quot;Joystick.h&quot;</span>
&nbsp;
<span style="color: #808080;">// =====================================================</span>
<span style="color: #808080;">// BOUTONS LOCAUX</span>
<span style="color: #808080;">// =====================================================</span>
&nbsp;
<span style="color: #339933;">#define joyButton1  2</span>
<span style="color: #339933;">#define joyButton2  3</span>
<span style="color: #339933;">#define joyButton3  4</span>
<span style="color: #339933;">#define joyButton4  5</span>
<span style="color: #339933;">#define joyButton5  6</span>
<span style="color: #339933;">#define joyButton6  7</span>
<span style="color: #339933;">#define joyButton7  8</span>
<span style="color: #339933;">#define joyButton8  9</span>
<span style="color: #339933;">#define joyButton9  A2</span>
<span style="color: #339933;">#define joyButton10 A1</span>
<span style="color: #339933;">#define joyButton11 A0</span>
<span style="color: #339933;">#define joyButton12 15</span>
&nbsp;
<span style="color: #808080;">// =====================================================</span>
<span style="color: #808080;">// AXES</span>
<span style="color: #808080;">// =====================================================</span>
&nbsp;
<span style="color: #339933;">#define joyRZ       A3</span>
<span style="color: #339933;">#define joyThrottle A3</span>
&nbsp;
<span style="color: #808080;">// =====================================================</span>
<span style="color: #808080;">// TABLEAU DES BOUTONS LOCAUX</span>
<span style="color: #808080;">// =====================================================</span>
&nbsp;
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">byte</span> unoButtonPins<span style="color: black;">&#91;</span><span style="color: #cc66cc;">12</span><span style="color: black;">&#93;</span> = <span style="color: black;">&#123;</span>
&nbsp;
joyButton1,
joyButton2,
joyButton3,
joyButton4,
joyButton5,
joyButton6,
joyButton7,
joyButton8,
joyButton9,
joyButton10,
joyButton11,
joyButton12
<span style="color: black;">&#125;</span>;
&nbsp;
<span style="color: #808080;">// =====================================================</span>
<span style="color: #808080;">// JOYSTICK USB</span>
<span style="color: #808080;">// =====================================================</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// 12 boutons locaux</span>
<span style="color: #808080;">// 50 boutons Mega</span>
<span style="color: #808080;">// 2 boutons encodeur</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// TOTAL = 64 boutons</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// 0 &agrave; 11  = boutons locaux</span>
<span style="color: #808080;">// 12 &agrave; 61 = boutons Mega</span>
<span style="color: #808080;">// 62      = encodeur droite</span>
<span style="color: #808080;">// 63      = encodeur gauche</span>
<span style="color: #808080;">// =====================================================</span>
&nbsp;
Joystick_ Joystick<span style="color: black;">&#40;</span>
  <span style="color: #cc66cc;">0x15</span>,
  JOYSTICK_TYPE_JOYSTICK,
  <span style="color: #cc66cc;">32</span>,
  <span style="color: #cc66cc;">0</span>,
  <span style="color: #0080ff;">true</span>, <span style="color: #0080ff;">true</span>, <span style="color: #0080ff;">false</span>, <span style="color: #0080ff;">false</span>, <span style="color: #0080ff;">false</span>, <span style="color: #0080ff;">true</span>,
  <span style="color: #0080ff;">false</span>, <span style="color: #0080ff;">true</span>, <span style="color: #0080ff;">false</span>, <span style="color: #0080ff;">false</span>, <span style="color: #0080ff;">false</span>
<span style="color: black;">&#41;</span>;
&nbsp;
&nbsp;
<span style="color: #808080;">// =====================================================</span>
<span style="color: #808080;">// DONN&Eacute;ES RE&Ccedil;UES DE LA MEGA</span>
<span style="color: #808080;">// =====================================================</span>
&nbsp;
<span style="color: #808080;">// 50 boutons = 7 octets</span>
&nbsp;
<span style="color: #0000ff;">byte</span> megaButtons<span style="color: black;">&#91;</span><span style="color: #cc66cc;">7</span><span style="color: black;">&#93;</span> = <span style="color: black;">&#123;</span>
<span style="color: #cc66cc;">0</span>
<span style="color: black;">&#125;</span>;
&nbsp;
<span style="color: #808080;">// =====================================================</span>
<span style="color: #808080;">// &Eacute;V&Eacute;NEMENT ENCODEUR</span>
<span style="color: #808080;">// =====================================================</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// 0 = aucun mouvement</span>
<span style="color: #808080;">// 1 = rotation droite</span>
<span style="color: #808080;">// 2 = rotation gauche</span>
<span style="color: #808080;">// =====================================================</span>
&nbsp;
<span style="color: #0000ff;">byte</span> megaEncoderEvent = <span style="color: #cc66cc;">0</span>;
&nbsp;
<span style="color: #808080;">// =====================================================</span>
<span style="color: #808080;">// R&Eacute;CEPTION DES DONN&Eacute;ES DE LA MEGA</span>
<span style="color: #808080;">// =====================================================</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Trame re&ccedil;ue :</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// 0xAA</span>
<span style="color: #808080;">// + 7 octets boutons</span>
<span style="color: #808080;">// + 1 octet encodeur</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// TOTAL = 9 octets</span>
<span style="color: #808080;">// =====================================================</span>
&nbsp;
<span style="color: #0000ff;">void</span> receiveMegaData<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
&nbsp;
<span style="color: #0000ff;">static</span> <span style="color: #0000ff;">byte</span> state = <span style="color: #cc66cc;">0</span>;
&nbsp;
<span style="color: #0000ff;">while</span> <span style="color: black;">&#40;</span>Serial1.available<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
&nbsp;
&nbsp;
<span style="color: #0000ff;">byte</span> data = Serial1.read<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
&nbsp;
&nbsp;
<span style="color: #808080;">// -------------------------------------------------</span>
<span style="color: #808080;">// ATTENTE DU HEADER</span>
<span style="color: #808080;">// -------------------------------------------------</span>
&nbsp;
<span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>state == <span style="color: #cc66cc;">0</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
&nbsp;
&nbsp;
  <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>data == <span style="color: #cc66cc;">0xAA</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
&nbsp;
    state = <span style="color: #cc66cc;">1</span>;
  <span style="color: black;">&#125;</span>
<span style="color: black;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #808080;">// -------------------------------------------------</span>
<span style="color: #808080;">// R&Eacute;CEPTION DES 7 OCTETS DE BOUTONS</span>
<span style="color: #808080;">// -------------------------------------------------</span>
&nbsp;
<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>state &gt;= <span style="color: #cc66cc;">1</span> &amp;&amp; state &lt;= <span style="color: #cc66cc;">7</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
&nbsp;
&nbsp;
  megaButtons<span style="color: black;">&#91;</span>state - <span style="color: #cc66cc;">1</span><span style="color: black;">&#93;</span> = data;
&nbsp;
  state++;
<span style="color: black;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #808080;">// -------------------------------------------------</span>
<span style="color: #808080;">// R&Eacute;CEPTION DE L'&Eacute;V&Eacute;NEMENT ENCODEUR</span>
<span style="color: #808080;">// -------------------------------------------------</span>
&nbsp;
<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>state == <span style="color: #cc66cc;">8</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
&nbsp;
&nbsp;
  megaEncoderEvent = data;
&nbsp;
  state = <span style="color: #cc66cc;">0</span>;
<span style="color: black;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: black;">&#125;</span>
<span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #808080;">// =====================================================</span>
<span style="color: #808080;">// SETUP</span>
<span style="color: #808080;">// =====================================================</span>
&nbsp;
<span style="color: #0000ff;">void</span> setup<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
&nbsp;
<span style="color: #808080;">// ---------------------------------------------------</span>
<span style="color: #808080;">// CONFIGURATION DES BOUTONS LOCAUX</span>
<span style="color: #808080;">// ---------------------------------------------------</span>
&nbsp;
<span style="color: #0000ff;">for</span> <span style="color: black;">&#40;</span><span style="color: #0000ff;">byte</span> i = <span style="color: #cc66cc;">0</span>; i &lt; <span style="color: #cc66cc;">12</span>; i++<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
&nbsp;
&nbsp;
<span style="color: #0080ff;">pinMode</span><span style="color: black;">&#40;</span>
&nbsp;
  unoButtonPins<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span>,
&nbsp;
  <span style="color: #0080ff;">INPUT_PULLUP</span>
<span style="color: black;">&#41;</span>;
&nbsp;
&nbsp;
<span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #808080;">// ---------------------------------------------------</span>
<span style="color: #808080;">// LIAISON S&Eacute;RIE AVEC LA MEGA</span>
<span style="color: #808080;">// ---------------------------------------------------</span>
&nbsp;
Serial1.begin<span style="color: black;">&#40;</span><span style="color: #cc66cc;">115200</span><span style="color: black;">&#41;</span>;
&nbsp;
<span style="color: #808080;">// ---------------------------------------------------</span>
<span style="color: #808080;">// INITIALISATION DU JOYSTICK USB</span>
<span style="color: #808080;">// ---------------------------------------------------</span>
&nbsp;
Joystick.begin<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
<span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #808080;">// =====================================================</span>
<span style="color: #808080;">// LOOP</span>
<span style="color: #808080;">// =====================================================</span>
&nbsp;
<span style="color: #0000ff;">void</span> loop<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
&nbsp;
<span style="color: #808080;">// ---------------------------------------------------</span>
<span style="color: #808080;">// R&Eacute;CEPTION DES DONN&Eacute;ES DE LA MEGA</span>
<span style="color: #808080;">// ---------------------------------------------------</span>
&nbsp;
receiveMegaData<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
&nbsp;
<span style="color: #808080;">// ---------------------------------------------------</span>
<span style="color: #808080;">// AXES</span>
<span style="color: #808080;">// ---------------------------------------------------</span>
&nbsp;
Joystick.setRzAxis<span style="color: black;">&#40;</span>
&nbsp;
&nbsp;
<span style="color: #0080ff;">analogRead</span><span style="color: black;">&#40;</span>joyRZ<span style="color: black;">&#41;</span>
&nbsp;
&nbsp;
<span style="color: black;">&#41;</span>;
&nbsp;
Joystick.setThrottle<span style="color: black;">&#40;</span>
&nbsp;
&nbsp;
<span style="color: #0080ff;">analogRead</span><span style="color: black;">&#40;</span>joyThrottle<span style="color: black;">&#41;</span>
&nbsp;
&nbsp;
<span style="color: black;">&#41;</span>;
&nbsp;
<span style="color: #808080;">// ---------------------------------------------------</span>
<span style="color: #808080;">// BOUTONS LOCAUX</span>
<span style="color: #808080;">// ---------------------------------------------------</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Boutons joystick 0 &agrave; 11</span>
<span style="color: #808080;">// ---------------------------------------------------</span>
&nbsp;
<span style="color: #0000ff;">for</span> <span style="color: black;">&#40;</span><span style="color: #0000ff;">byte</span> i = <span style="color: #cc66cc;">0</span>; i &lt; <span style="color: #cc66cc;">12</span>; i++<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
&nbsp;
&nbsp;
Joystick.setButton<span style="color: black;">&#40;</span>
&nbsp;
  i,
&nbsp;
  !<span style="color: #0080ff;">digitalRead</span><span style="color: black;">&#40;</span>unoButtonPins<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
<span style="color: black;">&#41;</span>;
&nbsp;
&nbsp;
<span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #808080;">// ---------------------------------------------------</span>
<span style="color: #808080;">// BOUTONS DE LA MEGA</span>
<span style="color: #808080;">// ---------------------------------------------------</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Boutons joystick 12 &agrave; 61</span>
<span style="color: #808080;">// ---------------------------------------------------</span>
&nbsp;
<span style="color: #0000ff;">for</span> <span style="color: black;">&#40;</span><span style="color: #0000ff;">byte</span> i = <span style="color: #cc66cc;">0</span>; i &lt; <span style="color: #cc66cc;">50</span>; i++<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
&nbsp;
&nbsp;
<span style="color: #0000ff;">byte</span> byteNumber = i / <span style="color: #cc66cc;">8</span>;
&nbsp;
&nbsp;
<span style="color: #0000ff;">byte</span> bitNumber = i % <span style="color: #cc66cc;">8</span>;
&nbsp;
&nbsp;
<span style="color: #0000ff;">bool</span> buttonState =
&nbsp;
  megaButtons<span style="color: black;">&#91;</span>byteNumber<span style="color: black;">&#93;</span>
  &amp;
  <span style="color: black;">&#40;</span><span style="color: #cc66cc;">1</span> &lt;&lt; bitNumber<span style="color: black;">&#41;</span>;
&nbsp;
&nbsp;
Joystick.setButton<span style="color: black;">&#40;</span>
&nbsp;
  <span style="color: #cc66cc;">12</span> + i,
&nbsp;
  buttonState
<span style="color: black;">&#41;</span>;
&nbsp;
&nbsp;
<span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #808080;">// ---------------------------------------------------</span>
<span style="color: #808080;">// ENCODEUR ROTATIF</span>
<span style="color: #808080;">// ---------------------------------------------------</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Bouton 62 = rotation droite</span>
<span style="color: #808080;">// Bouton 63 = rotation gauche</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Chaque rotation g&eacute;n&egrave;re une courte impulsion.</span>
<span style="color: #808080;">// ---------------------------------------------------</span>
&nbsp;
<span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>megaEncoderEvent == <span style="color: #cc66cc;">1</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
  Joystick.setButton<span style="color: black;">&#40;</span><span style="color: #cc66cc;">30</span>, <span style="color: #0080ff;">true</span><span style="color: black;">&#41;</span>;
  <span style="color: #0080ff;">delay</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">20</span><span style="color: black;">&#41;</span>;
  Joystick.setButton<span style="color: black;">&#40;</span><span style="color: #cc66cc;">30</span>, <span style="color: #0080ff;">false</span><span style="color: black;">&#41;</span>;
  megaEncoderEvent = <span style="color: #cc66cc;">0</span>;
<span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>megaEncoderEvent == <span style="color: #cc66cc;">2</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
  Joystick.setButton<span style="color: black;">&#40;</span><span style="color: #cc66cc;">31</span>, <span style="color: #0080ff;">true</span><span style="color: black;">&#41;</span>;
  <span style="color: #0080ff;">delay</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">20</span><span style="color: black;">&#41;</span>;
  Joystick.setButton<span style="color: black;">&#40;</span><span style="color: #cc66cc;">31</span>, <span style="color: #0080ff;">false</span><span style="color: black;">&#41;</span>;
  megaEncoderEvent = <span style="color: #cc66cc;">0</span>;
<span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #808080;">// ---------------------------------------------------</span>
<span style="color: #808080;">// PETITE PAUSE</span>
<span style="color: #808080;">// ---------------------------------------------------</span>
&nbsp;
<span style="color: #0080ff;">delay</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">5</span><span style="color: black;">&#41;</span>;
<span style="color: black;">&#125;</span></pre></td></tr></table></code><hr />
</div>sur le moniteur série de la MEGA, j'ai bien les bonnes infos. Je vois bien la LED TX qui s'affiche à chaque changement de cran du rotateur.<br />
sur le moniteur série de la MICRO, rien. Il semblerait que ça ne code pas comme il faut de la mega vers micro. <br />
<br />
Merci par avance pour votre aide.</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f2094/general-developpement/programmation-systeme/embarque/arduino/">Arduino</category>
			<dc:creator>hugobeauce</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2184756/general-developpement/programmation-systeme/embarque/arduino/probleme-lecture-d-encodeur-rotatif-liaison-tx-rx/</guid>
		</item>
		<item>
			<title><![CDATA[Forcer l'install d'un driver ancien sous W11]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2184339&amp;goto=newpost</link>
			<pubDate>Tue, 23 Jun 2026 12:23:26 GMT</pubDate>
			<description>Bonjour, 
 
Me revoici pour...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
Me revoici pour le bien connu problème des cartes Arduino (clones chinois) non reconnues sous W11.<br />
<br />
J'avais donné une solution complète pour W11 ici:<br />
<b><a href="https://www.developpez.net/forums/d2179700-2/general-developpement/programmation-systeme/embarque/arduino/port-grise-l-ide-arduino/" target="_blank">https://www.developpez.net/forums/d2...l-ide-arduino/</a></b><br />
<br />
qui a toujours marché jusqu'à présent, mais aujourd'hui (après plusieurs mois sans utilisation), W11 m'a supprimé mn driver (allez savoir pourquoi) et mes Nanos ne sont plus reconnues.<br />
<br />
J'ai donc refait ma procédure indiquée plus haut, mais après install de mon vieux driver (qui a toujours fonctionné sous W11), le CH340G n'est toujours pas reconnu (et donc transferts impossibles depuis l'IDE Arduino):<br />
<img src="https://www.developpez.net/forums/attachments/p677128d1782217288/general-developpement/programmation-systeme/embarque/arduino/forcer-l-install-d-driver-ancien-sous-w11/04b.-toujours-ch340g.jpg/" border="0" alt="Nom : 04b.Mais toujours pas de CH340G.jpg
Affichages : 121
Taille : 77,4 Ko"  style="float: CONFIG" /><br />
.<br />
Dans les propriétés du pilote (c'est le COM4 qui apparait à la connexion de la carte), aucune trace de CH340G puisqu'il affiche un FTDI de 2024 (qui n'a aucune chance de fonctionner évidemment):<br />
.<br />
.<br />
<br />
<img src="https://www.developpez.net/forums/attachments/p677129d1782217304/general-developpement/programmation-systeme/embarque/arduino/forcer-l-install-d-driver-ancien-sous-w11/04c.-toujours-ch340g.jpg/" border="0" alt="Nom : 04c.Mais toujours pas de CH340G.jpg
Affichages : 125
Taille : 121,8 Ko"  style="float: CONFIG" /><br />
<br />
<br />
<br />
<br />
Et si j'essaie de forcer le .INF qui se trouve dans le dossier de mon vieux driver qui marche, alors W11 reboote carrément le PC !<br />
<br />
Bref, avez-vous une idée pour réinstaller mon vieux driver qui a toujours marché sous W11...<br />
<br />
Mille mercis,</div>


	<div style="padding:10px">

	

	
		<fieldset class="fieldset">
			<legend>Images attachées</legend>
				<div style="padding:10px">
				<img class="attach" src="https://www.developpez.net/forums/attachments/p677128d1782217288/general-developpement/programmation-systeme/embarque/arduino/forcer-l-install-d-driver-ancien-sous-w11/04b.-toujours-ch340g.jpg/" alt="" />&nbsp;<img class="attach" src="https://www.developpez.net/forums/attachments/p677129d1782217304/general-developpement/programmation-systeme/embarque/arduino/forcer-l-install-d-driver-ancien-sous-w11/04c.-toujours-ch340g.jpg/" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f2094/general-developpement/programmation-systeme/embarque/arduino/">Arduino</category>
			<dc:creator>grizzli06</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2184339/general-developpement/programmation-systeme/embarque/arduino/forcer-l-install-d-driver-ancien-sous-w11/</guid>
		</item>
		<item>
			<title>sprintf sur écran lcd</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2184323&amp;goto=newpost</link>
			<pubDate>Mon, 22 Jun 2026 12:21:21 GMT</pubDate>
			<description><![CDATA[Bonjour à tous 
 
j'ai...]]></description>
			<content:encoded><![CDATA[<div>Bonjour à tous<br />
<br />
j'ai réalisé cette minuterie de jardin qui alimente une pompe via un émetteur RF MHz., çà fonctionne, à la fin de la tempo la pin 9 passe à LOW et coupe l'ensemble.<br />
<br />
J'ai remplacé les lignes 74 à 83 par les lignes 69 à 73. L'affichage est correct, les minutes défilent mais pas les secondes et la minuterie s'arrête à la durée de service affichée paramétrée par un potentiomètre<br />
<br />
je ne vois pas comment résoudre ce problème<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="40"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br />84<br />85<br />86<br />87<br />88<br />89<br />90<br />91<br />92<br />93<br />94<br />95<br />96<br />97<br />98<br />99<br />100<br />101<br />102<br />103<br />104<br />105<br />106<br />107<br />108<br />109<br />110<br />111<br />112<br />113<br />114<br />115<br />116<br />117<br />118<br />119<br />120<br />121<br />122<br />123<br />124<br />125<br />126<br />127<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;Adafruit_LiquidCrystal.h&gt;</span>
Adafruit_LiquidCrystal lcd<span style="color: black;">&#40;</span><span style="color: #cc66cc;">10</span>, <span style="color: #cc66cc;">11</span>, <span style="color: #cc66cc;">5</span> , <span style="color: #cc66cc;">4</span>, <span style="color: #cc66cc;">3</span>, <span style="color: #cc66cc;">2</span><span style="color: black;">&#41;</span>;  <span style="color: #808080;">//  sur lcd =&gt; RS, E, D4, D5, D6, D7</span>
&nbsp;
<span style="color: #0000ff;">int</span> bip = <span style="color: #cc66cc;">6</span>;
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">byte</span> mosfet = <span style="color: #cc66cc;">9</span>;
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">byte</span> led = <span style="color: #cc66cc;">13</span>;
&nbsp;
<span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">long</span> currentTime = <span style="color: #cc66cc;">0</span>;
<span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">long</span> previousTime = <span style="color: #cc66cc;">0</span>;
&nbsp;
<span style="color: #0000ff;">long</span> hh = <span style="color: #cc66cc;">0</span>, mm = <span style="color: #cc66cc;">0</span>, ss = <span style="color: #cc66cc;">0</span>;
<span style="color: #0000ff;">long</span> countdown_time = <span style="color: black;">&#40;</span>hh * <span style="color: #cc66cc;">3600</span><span style="color: black;">&#41;</span> + <span style="color: black;">&#40;</span>mm * <span style="color: #cc66cc;">60</span><span style="color: black;">&#41;</span> + ss;
&nbsp;
<span style="color: #339933;">#define batterie 0</span>
<span style="color: #0000ff;">int</span> tensionLue = <span style="color: #cc66cc;">0</span>;
<span style="color: #0000ff;">int</span> valeurLue = <span style="color: #cc66cc;">0</span>;
&nbsp;
<span style="color: #339933;">#define minuterie 1</span>
<span style="color: #0000ff;">int</span> chrono_lu = <span style="color: #cc66cc;">0</span>;
<span style="color: #0000ff;">int</span> valeur_chrono = <span style="color: #cc66cc;">0</span>;
&nbsp;
<span style="color: #0000ff;">void</span> setup<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
  lcd.begin<span style="color: black;">&#40;</span><span style="color: #cc66cc;">16</span>, <span style="color: #cc66cc;">2</span><span style="color: black;">&#41;</span>;
&nbsp;
  <span style="color: #0080ff;">analogReference</span><span style="color: black;">&#40;</span>INTERNAL<span style="color: black;">&#41;</span>;
&nbsp;
  <span style="color: #0080ff;">pinMode</span><span style="color: black;">&#40;</span>mosfet, <span style="color: #0080ff;">OUTPUT</span><span style="color: black;">&#41;</span>;
  <span style="color: #0080ff;">pinMode</span> <span style="color: black;">&#40;</span>bip, <span style="color: #0080ff;">OUTPUT</span><span style="color: black;">&#41;</span>;
  <span style="color: #0080ff;">pinMode</span> <span style="color: black;">&#40;</span>led, <span style="color: #0080ff;">OUTPUT</span><span style="color: black;">&#41;</span>;
&nbsp;
  <span style="color: #0080ff;">pinMode</span><span style="color: black;">&#40;</span>batterie, <span style="color: #0080ff;">INPUT</span><span style="color: black;">&#41;</span>;
  <span style="color: #0080ff;">digitalWrite</span> <span style="color: black;">&#40;</span>mosfet, <span style="color: #0080ff;">HIGH</span><span style="color: black;">&#41;</span>;
  <span style="color: #0080ff;">digitalWrite</span> <span style="color: black;">&#40;</span>led, <span style="color: #0080ff;">LOW</span><span style="color: black;">&#41;</span>;
&nbsp;
  lcd.setCursor<span style="color: black;">&#40;</span> <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span><span style="color: black;">&#41;</span>;
  lcd.print <span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Batterie&gt;&quot;</span><span style="color: black;">&#41;</span>;
  lcd.setCursor <span style="color: black;">&#40;</span><span style="color: #cc66cc;">15</span> , <span style="color: #cc66cc;">0</span><span style="color: black;">&#41;</span>;
  lcd.print <span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;V&quot;</span><span style="color: black;">&#41;</span>;
&nbsp;
  lcd.setCursor<span style="color: black;">&#40;</span> <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">1</span><span style="color: black;">&#41;</span>;
  lcd.print <span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Duree&quot;</span><span style="color: black;">&#41;</span>;
  lcd.setCursor <span style="color: black;">&#40;</span><span style="color: #cc66cc;">8</span>, <span style="color: #cc66cc;">1</span><span style="color: black;">&#41;</span>;
  lcd.print <span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;mn&quot;</span><span style="color: black;">&#41;</span>;
&nbsp;
  <span style="color: #0080ff;">tone</span><span style="color: black;">&#40;</span>bip, <span style="color: #cc66cc;">2000</span>, <span style="color: #cc66cc;">200</span><span style="color: black;">&#41;</span>;
  <span style="color: #0080ff;">delay</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">150</span><span style="color: black;">&#41;</span>;
  <span style="color: #0080ff;">tone</span><span style="color: black;">&#40;</span>bip, <span style="color: #cc66cc;">2800</span>, <span style="color: #cc66cc;">250</span><span style="color: black;">&#41;</span>;
<span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> loop<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
&nbsp;
&nbsp;
  <span style="color: #0000ff;">int</span> valeur_chrono = <span style="color: #0080ff;">analogRead</span><span style="color: black;">&#40;</span>minuterie<span style="color: black;">&#41;</span>;
  chrono_lu = <span style="color: black;">&#40;</span>valeur_chrono * <span style="color: #cc66cc;">31</span> / <span style="color: #cc66cc;">1023</span><span style="color: black;">&#41;</span>;
&nbsp;
  <span style="color: #0000ff;">long</span> countdowntime_ss = countdown_time + <span style="color: black;">&#40;</span><span style="color: #0080ff;">millis</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> / <span style="color: #cc66cc;">1000</span><span style="color: black;">&#41;</span>;
&nbsp;
  <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>countdowntime_ss &gt;= <span style="color: #cc66cc;">0</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
&nbsp;
    <span style="color: #0000ff;">long</span> countdown_hh = countdowntime_ss / <span style="color: #cc66cc;">3600</span>;
    <span style="color: #0000ff;">long</span> countdown_mm = <span style="color: black;">&#40;</span><span style="color: black;">&#40;</span>countdowntime_ss / <span style="color: #cc66cc;">60</span><span style="color: black;">&#41;</span> % <span style="color: #cc66cc;">60</span><span style="color: black;">&#41;</span>;
    <span style="color: #0000ff;">long</span> countdown_sec = countdowntime_ss % <span style="color: #cc66cc;">60</span>;
&nbsp;
    <span style="color: #0000ff;">char</span> buffer<span style="color: black;">&#91;</span><span style="color: #cc66cc;">3</span><span style="color: black;">&#93;</span>;
    sprintf<span style="color: black;">&#40;</span>buffer, <span style="color: #FF0000;">&quot;%2d&quot;</span>, chrono_lu<span style="color: black;">&#41;</span>;
    lcd.setCursor <span style="color: black;">&#40;</span><span style="color: #cc66cc;">6</span>, <span style="color: #cc66cc;">1</span><span style="color: black;">&#41;</span>;
    lcd.print <span style="color: black;">&#40;</span>buffer<span style="color: black;">&#41;</span>;   <span style="color: #808080;">//en minutes</span>
&nbsp;
    <span style="color: #808080;">/*char minuterie[6];</span>
<span style="color: #808080;">&nbsp;   sprintf(minuterie, &quot;%02d:%02d&quot;, countdown_mm, countdown_sec);</span>
<span style="color: #808080;">&nbsp;   lcd.setCursor (11, 1);</span>
<span style="color: #808080;">&nbsp;   lcd.print (minuterie);*/</span> 
&nbsp;
    sprintf<span style="color: black;">&#40;</span>buffer, <span style="color: #FF0000;">&quot;%02d&quot;</span>, countdown_sec<span style="color: black;">&#41;</span>;
      lcd.setCursor <span style="color: black;">&#40;</span><span style="color: #cc66cc;">14</span>, <span style="color: #cc66cc;">1</span><span style="color: black;">&#41;</span>;
      lcd.print <span style="color: black;">&#40;</span>buffer<span style="color: black;">&#41;</span>;
&nbsp;
      sprintf<span style="color: black;">&#40;</span>buffer, <span style="color: #FF0000;">&quot;%02d&quot;</span>, countdown_mm<span style="color: black;">&#41;</span>;
      lcd.setCursor <span style="color: black;">&#40;</span><span style="color: #cc66cc;">11</span>, <span style="color: #cc66cc;">1</span><span style="color: black;">&#41;</span>;
      lcd.print <span style="color: black;">&#40;</span>buffer<span style="color: black;">&#41;</span>;
&nbsp;
    lcd.setCursor <span style="color: black;">&#40;</span><span style="color: #cc66cc;">13</span>, <span style="color: #cc66cc;">1</span><span style="color: black;">&#41;</span>;
    lcd.print<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;:&quot;</span><span style="color: black;">&#41;</span>;
&nbsp;
    <span style="color: #0000ff;">int</span> valeurLue = <span style="color: #0080ff;">analogRead</span> <span style="color: black;">&#40;</span>batterie<span style="color: black;">&#41;</span>;
    <span style="color: #0000ff;">float</span> tensionLue = <span style="color: black;">&#40;</span>valeurLue * <span style="color: #cc66cc;">14.0</span> / <span style="color: #cc66cc;">10</span> * <span style="color: #cc66cc;">1.023</span><span style="color: black;">&#41;</span>;
    lcd.setCursor <span style="color: black;">&#40;</span><span style="color: #cc66cc;">11</span>, <span style="color: #cc66cc;">0</span><span style="color: black;">&#41;</span>;
    lcd.print <span style="color: black;">&#40;</span>tensionLue / <span style="color: #cc66cc;">100.0</span><span style="color: black;">&#41;</span>;
    <span style="color: #0080ff;">delay</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">50</span><span style="color: black;">&#41;</span>;
&nbsp;
    <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>countdown_mm == <span style="color: #cc66cc;">1</span> &amp;&amp; chrono_lu == <span style="color: #cc66cc;">1</span> || countdown_mm == <span style="color: #cc66cc;">2</span> &amp;&amp; chrono_lu  == <span style="color: #cc66cc;">2</span> || countdown_mm == <span style="color: #cc66cc;">3</span> &amp;&amp; chrono_lu == <span style="color: #cc66cc;">3</span> || countdown_mm == <span style="color: #cc66cc;">4</span> &amp;&amp; chrono_lu == <span style="color: #cc66cc;">4</span>
        || countdown_mm == <span style="color: #cc66cc;">5</span> &amp;&amp; chrono_lu == <span style="color: #cc66cc;">5</span> || countdown_mm == <span style="color: #cc66cc;">6</span> &amp;&amp; chrono_lu == <span style="color: #cc66cc;">6</span> || countdown_mm == <span style="color: #cc66cc;">7</span> &amp;&amp; chrono_lu == <span style="color: #cc66cc;">7</span> || countdown_mm == <span style="color: #cc66cc;">7</span> &amp;&amp; chrono_lu == <span style="color: #cc66cc;">7</span>
        || countdown_mm == <span style="color: #cc66cc;">8</span> &amp;&amp; chrono_lu == <span style="color: #cc66cc;">8</span> || countdown_mm == <span style="color: #cc66cc;">9</span> &amp;&amp; chrono_lu == <span style="color: #cc66cc;">9</span> || countdown_mm == <span style="color: #cc66cc;">10</span> &amp;&amp; chrono_lu == <span style="color: #cc66cc;">10</span> || countdown_mm == <span style="color: #cc66cc;">11</span> &amp;&amp; chrono_lu == <span style="color: #cc66cc;">11</span>
        || countdown_mm == <span style="color: #cc66cc;">12</span> &amp;&amp; chrono_lu == <span style="color: #cc66cc;">12</span> || countdown_mm == <span style="color: #cc66cc;">13</span> &amp;&amp; chrono_lu == <span style="color: #cc66cc;">13</span> || countdown_mm == <span style="color: #cc66cc;">14</span> &amp;&amp; chrono_lu == <span style="color: #cc66cc;">14</span> || countdown_mm == <span style="color: #cc66cc;">15</span> &amp;&amp; chrono_lu == <span style="color: #cc66cc;">15</span>
        || countdown_mm == <span style="color: #cc66cc;">16</span> &amp;&amp; chrono_lu == <span style="color: #cc66cc;">16</span> || countdown_mm == <span style="color: #cc66cc;">17</span> &amp;&amp; chrono_lu == <span style="color: #cc66cc;">17</span> || countdown_mm == <span style="color: #cc66cc;">18</span> &amp;&amp; chrono_lu == <span style="color: #cc66cc;">18</span> || countdown_mm == <span style="color: #cc66cc;">19</span> &amp;&amp; chrono_lu == <span style="color: #cc66cc;">19</span>
        || countdown_mm == <span style="color: #cc66cc;">20</span> &amp;&amp; chrono_lu == <span style="color: #cc66cc;">20</span> || countdown_mm == <span style="color: #cc66cc;">21</span> &amp;&amp; chrono_lu == <span style="color: #cc66cc;">21</span> || countdown_mm == <span style="color: #cc66cc;">22</span> &amp;&amp; chrono_lu == <span style="color: #cc66cc;">22</span> || countdown_mm == <span style="color: #cc66cc;">23</span> &amp;&amp; chrono_lu == <span style="color: #cc66cc;">23</span>
        || countdown_mm == <span style="color: #cc66cc;">24</span> &amp;&amp; chrono_lu == <span style="color: #cc66cc;">24</span> || countdown_mm == <span style="color: #cc66cc;">25</span> &amp;&amp; chrono_lu == <span style="color: #cc66cc;">25</span> || countdown_mm == <span style="color: #cc66cc;">26</span> &amp;&amp; chrono_lu == <span style="color: #cc66cc;">26</span> || countdown_mm == <span style="color: #cc66cc;">27</span> &amp;&amp; chrono_lu == <span style="color: #cc66cc;">27</span>
        || countdown_mm == <span style="color: #cc66cc;">28</span> &amp;&amp; chrono_lu == <span style="color: #cc66cc;">28</span> || countdown_mm == <span style="color: #cc66cc;">29</span> &amp;&amp; chrono_lu == <span style="color: #cc66cc;">29</span> || countdown_mm == <span style="color: #cc66cc;">30</span> &amp;&amp; chrono_lu == <span style="color: #cc66cc;">30</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
&nbsp;
      <span style="color: #0080ff;">tone</span><span style="color: black;">&#40;</span>bip, <span style="color: #cc66cc;">2800</span>, <span style="color: #cc66cc;">200</span><span style="color: black;">&#41;</span>;
      <span style="color: #0080ff;">delay</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">900</span><span style="color: black;">&#41;</span>;
      <span style="color: #0080ff;">tone</span><span style="color: black;">&#40;</span>bip, <span style="color: #cc66cc;">2800</span>, <span style="color: #cc66cc;">200</span><span style="color: black;">&#41;</span>;
      <span style="color: #0080ff;">delay</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">900</span><span style="color: black;">&#41;</span>;
      <span style="color: #0080ff;">tone</span><span style="color: black;">&#40;</span>bip, <span style="color: #cc66cc;">2800</span>, <span style="color: #cc66cc;">200</span><span style="color: black;">&#41;</span>;
      <span style="color: #0080ff;">delay</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">900</span><span style="color: black;">&#41;</span>;
      <span style="color: #0080ff;">tone</span><span style="color: black;">&#40;</span>bip, <span style="color: #cc66cc;">2800</span>, <span style="color: #cc66cc;">200</span><span style="color: black;">&#41;</span>;
      <span style="color: #0080ff;">delay</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">900</span><span style="color: black;">&#41;</span>;
      <span style="color: #0080ff;">tone</span><span style="color: black;">&#40;</span>bip, <span style="color: #cc66cc;">2800</span>, <span style="color: #cc66cc;">200</span><span style="color: black;">&#41;</span>;
      <span style="color: #0080ff;">delay</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">300</span><span style="color: black;">&#41;</span>;
      <span style="color: #0080ff;">tone</span><span style="color: black;">&#40;</span>bip, <span style="color: #cc66cc;">2800</span>, <span style="color: #cc66cc;">200</span><span style="color: black;">&#41;</span>;
      <span style="color: #0080ff;">delay</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">900</span><span style="color: black;">&#41;</span>;
      <span style="color: #0080ff;">tone</span><span style="color: black;">&#40;</span>bip, <span style="color: #cc66cc;">2800</span>, <span style="color: #cc66cc;">200</span><span style="color: black;">&#41;</span>;
      <span style="color: #0080ff;">delay</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">300</span><span style="color: black;">&#41;</span>;
      <span style="color: #0080ff;">tone</span><span style="color: black;">&#40;</span>bip, <span style="color: #cc66cc;">2800</span>, <span style="color: #cc66cc;">200</span><span style="color: black;">&#41;</span>;
      <span style="color: #0080ff;">delay</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">900</span><span style="color: black;">&#41;</span>;
      <span style="color: #0080ff;">tone</span><span style="color: black;">&#40;</span>bip, <span style="color: #cc66cc;">2800</span>, <span style="color: #cc66cc;">200</span><span style="color: black;">&#41;</span>;
      <span style="color: #0080ff;">delay</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">300</span><span style="color: black;">&#41;</span>;
      <span style="color: #0080ff;">tone</span><span style="color: black;">&#40;</span>bip, <span style="color: #cc66cc;">2800</span>, <span style="color: #cc66cc;">200</span><span style="color: black;">&#41;</span>;
      <span style="color: #0080ff;">delay</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">900</span><span style="color: black;">&#41;</span>;
      <span style="color: #0080ff;">tone</span><span style="color: black;">&#40;</span>bip, <span style="color: #cc66cc;">2000</span>, <span style="color: #cc66cc;">800</span><span style="color: black;">&#41;</span>;
      <span style="color: #0080ff;">delay</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">900</span><span style="color: black;">&#41;</span>;
      <span style="color: #0080ff;">digitalWrite</span> <span style="color: black;">&#40;</span>mosfet, <span style="color: #0080ff;">LOW</span><span style="color: black;">&#41;</span>;
      <span style="color: #0080ff;">digitalWrite</span> <span style="color: black;">&#40;</span>led, <span style="color: #0080ff;">HIGH</span><span style="color: black;">&#41;</span>;
&nbsp;
    <span style="color: black;">&#125;</span>
  <span style="color: black;">&#125;</span>
<span style="color: black;">&#125;</span></pre></td></tr></table></code><hr />
</div></div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f2094/general-developpement/programmation-systeme/embarque/arduino/">Arduino</category>
			<dc:creator>Fermor</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2184323/general-developpement/programmation-systeme/embarque/arduino/sprintf-ecran-lcd/</guid>
		</item>
		<item>
			<title><![CDATA[[Arduino ESP32] Probleme de Busy Timeout]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2184129&amp;goto=newpost</link>
			<pubDate>Mon, 08 Jun 2026 14:21:58 GMT</pubDate>
			<description><![CDATA[Bonjour à tous 
 
j'aurai...]]></description>
			<content:encoded><![CDATA[<div>Bonjour à tous<br />
<br />
j'aurai besoin de votre aide car je n'arrive à régler mon problème de &lt;&lt;Busy Timeout!&gt;&gt;<br />
<br />
mon projet se compose en autres  de 2 capteurs VL50L0x permettant de me donner une position &quot;ouverte&quot; &quot;fermée&quot; de 2 panneaux de toit distincts <br />
<br />
Panneau 1 =&gt; P1 = 0 panneau fermé et  P1 = 1 panneau ouvert <br />
panneau 2 =&gt; P2 = 0  panneau fermé et  P1 = 1 panneau ouvert <br />
<br />
un ESP32  Lilygo T5 E-paper me permet d'afficher la position des panneaux à chaque redémarrage du programme toutes les 5 secondes  <br />
le rafraichissement de l'ecran s'effectue que si les panneaux ont été préalablement deplacés <br />
 <br />
le programme me permet aussi de réveiller l'ESP32 ( GPIO_33 ) par une heure d'alarme journalière calculée à partir d'un éphéméride, <br />
cette alarme est active que si les panneaux sont ouverts<br />
en résumé, je reveille l'ESP32 :<br />
 - tous les jours par une interruption GPIO-33 si les panneaux sont ouverts <br />
 - toutes les 5 secondes donc par minuterie mais je ne rafraichis l'écran que si nécessaire<br />
le problème étant que je vois apparaitre &lt;&lt;Busy Timeout!&gt;&gt; toutes les 10 secondes sans que je puisse en déterminer la raison <br />
voici ci-dessous le resutat à la console <br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #cc66cc;">16</span>:<span style="color: #cc66cc;">11</span>:<span style="color: #cc66cc;">51.333</span> -&gt; Capteurs activ&eacute;es...
<span style="color: #cc66cc;">16</span>:<span style="color: #cc66cc;">11</span>:<span style="color: #cc66cc;">51.607</span> -&gt; VL53L0X <span style="color: #cc66cc;">1</span> = OK
<span style="color: #cc66cc;">16</span>:<span style="color: #cc66cc;">11</span>:<span style="color: #cc66cc;">52.170</span> -&gt; VL53L0X <span style="color: #cc66cc;">2</span> = OK
<span style="color: #cc66cc;">16</span>:<span style="color: #cc66cc;">11</span>:<span style="color: #cc66cc;">52.170</span> -&gt;  RTC = OK
<span style="color: #cc66cc;">16</span>:<span style="color: #cc66cc;">11</span>:<span style="color: #cc66cc;">52.170</span> -&gt; R&eacute;veil provoqu&eacute; par la minuterie
<span style="color: #cc66cc;">16</span>:<span style="color: #cc66cc;">11</span>:<span style="color: #cc66cc;">52.170</span> -&gt; <span style="color: #cc66cc;">08</span>/<span style="color: #cc66cc;">06</span>/<span style="color: #cc66cc;">2026</span>
<span style="color: #cc66cc;">16</span>:<span style="color: #cc66cc;">11</span>:<span style="color: #cc66cc;">52.208</span> -&gt; -----------
<span style="color: #cc66cc;">16</span>:<span style="color: #cc66cc;">11</span>:<span style="color: #cc66cc;">52.208</span> -&gt; <span style="color: #cc66cc;">16</span>:<span style="color: #cc66cc;">09</span>:<span style="color: #cc66cc;">56</span>
<span style="color: #cc66cc;">16</span>:<span style="color: #cc66cc;">11</span>:<span style="color: #cc66cc;">52.208</span> -&gt; -----------
<span style="color: #cc66cc;">16</span>:<span style="color: #cc66cc;">11</span>:<span style="color: #cc66cc;">52.208</span> -&gt; Panneau N&deg;<span style="color: #cc66cc;">1</span> =&gt; - Ouvert
<span style="color: #cc66cc;">16</span>:<span style="color: #cc66cc;">11</span>:<span style="color: #cc66cc;">52.208</span> -&gt; Panneau N&deg;<span style="color: #cc66cc;">2</span> =&gt; - Ferm&eacute;
<span style="color: #cc66cc;">16</span>:<span style="color: #cc66cc;">11</span>:<span style="color: #cc66cc;">52.254</span> -&gt; 
<span style="color: #cc66cc;">16</span>:<span style="color: #cc66cc;">11</span>:<span style="color: #cc66cc;">52.254</span> -&gt; -----------
<span style="color: #cc66cc;">16</span>:<span style="color: #cc66cc;">11</span>:<span style="color: #cc66cc;">52.254</span> -&gt; Pas de Changement
<span style="color: #cc66cc;">16</span>:<span style="color: #cc66cc;">11</span>:<span style="color: #cc66cc;">52.254</span> -&gt; -----------
<span style="color: #cc66cc;">16</span>:<span style="color: #cc66cc;">11</span>:<span style="color: #cc66cc;">52.432</span> -&gt; Voltage = <span style="color: #cc66cc;">4.02</span>
<span style="color: #cc66cc;">16</span>:<span style="color: #cc66cc;">11</span>:<span style="color: #cc66cc;">52.471</span> -&gt; Lever : <span style="color: #cc66cc;">03</span>:<span style="color: #cc66cc;">51</span>:<span style="color: #cc66cc;">34</span>
<span style="color: #cc66cc;">16</span>:<span style="color: #cc66cc;">11</span>:<span style="color: #cc66cc;">52.471</span> -&gt; Meridien : <span style="color: #cc66cc;">11</span>:<span style="color: #cc66cc;">37</span>:<span style="color: #cc66cc;">58</span>
<span style="color: #cc66cc;">16</span>:<span style="color: #cc66cc;">11</span>:<span style="color: #cc66cc;">52.471</span> -&gt; Coucher : <span style="color: #cc66cc;">19</span>:<span style="color: #cc66cc;">24</span>:<span style="color: #cc66cc;">42</span>
<span style="color: #cc66cc;">16</span>:<span style="color: #cc66cc;">12</span>:<span style="color: #cc66cc;">02.509</span> -&gt; Busy Timeout!  &lt;===================
<span style="color: #cc66cc;">16</span>:<span style="color: #cc66cc;">12</span>:<span style="color: #cc66cc;">12.484</span> -&gt; Busy Timeout!  &lt;===================
<span style="color: #cc66cc;">16</span>:<span style="color: #cc66cc;">12</span>:<span style="color: #cc66cc;">22.507</span> -&gt; Busy Timeout!  &lt;===================
<span style="color: #cc66cc;">16</span>:<span style="color: #cc66cc;">12</span>:<span style="color: #cc66cc;">32.487</span> -&gt; Busy Timeout!  &lt;===================
<span style="color: #cc66cc;">16</span>:<span style="color: #cc66cc;">12</span>:<span style="color: #cc66cc;">32.487</span> -&gt; <span style="color: black;">&#91;</span> Alarme <span style="color: #cc66cc;">1</span>: <span style="color: #cc66cc;">08</span> <span style="color: #cc66cc;">21</span>:<span style="color: #cc66cc;">24</span>:<span style="color: #cc66cc;">42</span>, Mode: Date <span style="color: black;">&#93;</span>
<span style="color: #cc66cc;">16</span>:<span style="color: #cc66cc;">12</span>:<span style="color: #cc66cc;">32.487</span> -&gt; --------------------
<span style="color: #cc66cc;">16</span>:<span style="color: #cc66cc;">12</span>:<span style="color: #cc66cc;">32.487</span> -&gt; Boot number: <span style="color: #cc66cc;">56</span>
<span style="color: #cc66cc;">16</span>:<span style="color: #cc66cc;">12</span>:<span style="color: #cc66cc;">32.532</span> -&gt; --------------------</pre></td></tr></table></code><hr />
</div>et le programme (sans les sous-prog affichage et epehemride ) :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="40"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br />84<br />85<br />86<br />87<br />88<br />89<br />90<br />91<br />92<br />93<br />94<br />95<br />96<br />97<br />98<br />99<br />100<br />101<br />102<br />103<br />104<br />105<br />106<br />107<br />108<br />109<br />110<br />111<br />112<br />113<br />114<br />115<br />116<br />117<br />118<br />119<br />120<br />121<br />122<br />123<br />124<br />125<br />126<br />127<br />128<br />129<br />130<br />131<br />132<br />133<br />134<br />135<br />136<br />137<br />138<br />139<br />140<br />141<br />142<br />143<br />144<br />145<br />146<br />147<br />148<br />149<br />150<br />151<br />152<br />153<br />154<br />155<br />156<br />157<br />158<br />159<br />160<br />161<br />162<br />163<br />164<br />165<br />166<br />167<br />168<br />169<br />170<br />171<br />172<br />173<br />174<br />175<br />176<br />177<br />178<br />179<br />180<br />181<br />182<br />183<br />184<br />185<br />186<br />187<br />188<br />189<br />190<br />191<br />192<br />193<br />194<br />195<br />196<br />197<br />198<br />199<br />200<br />201<br />202<br />203<br />204<br />205<br />206<br />207<br />208<br />209<br />210<br />211<br />212<br />213<br />214<br />215<br />216<br />217<br />218<br />219<br />220<br />221<br />222<br />223<br />224<br />225<br />226<br />227<br />228<br />229<br />230<br />231<br />232<br />233<br />234<br />235<br />236<br />237<br />238<br />239<br />240<br />241<br />242<br />243<br />244<br />245<br />246<br />247<br />248<br />249<br />250<br />251<br />252<br />253<br />254<br />255<br />256<br />257<br />258<br />259<br />260<br />261<br />262<br />263<br />264<br />265<br />266<br />267<br />268<br />269<br />270<br />271<br />272<br />273<br />274<br />275<br />276<br />277<br />278<br />279<br />280<br />281<br />282<br />283<br />284<br />285<br />286<br />287<br />288<br />289<br />290<br />291<br />292<br />293<br />294<br />295<br />296<br />297<br />298<br />299<br />300<br />301<br />302<br />303<br />304<br />305<br />306<br />307<br />308<br />309<br />310<br />311<br />312<br />313<br />314<br />315<br />316<br />317<br />318<br />319<br />320<br />321<br />322<br />323<br />324<br />325<br />326<br />327<br />328<br />329<br />330<br />331<br />332<br />333<br />334<br />335<br />336<br />337<br />338<br />339<br />340<br />341<br />342<br />343<br />344<br />345<br />346<br />347<br />348<br />349<br />350<br />351<br />352<br />353<br />354<br />355<br />356<br />357<br />358<br />359<br />360<br />361<br />362<br />363<br />364<br />365<br />366<br />367<br />368<br />369<br />370<br />371<br />372<br />373<br />374<br />375<br />376<br />377<br />378<br />379<br />380<br />381<br />382<br />383<br />384<br />385<br />386<br />387<br />388<br />389<br />390<br />391<br />392<br />393<br />394<br />395<br />396<br />397<br />398<br />399<br />400<br />401<br />402<br />403<br />404<br />405<br />406<br />407<br />408<br />409<br />410<br />411<br />412<br />413<br />414<br />415<br />416<br />417<br />418<br />419<br />420<br />421<br />422<br />423<br />424<br />425<br />426<br />427<br />428<br />429<br />430<br />431<br />432<br />433<br />434<br />435<br />436<br />437<br />438<br />439<br />440<br />441<br />442<br />443<br />444<br />445<br />446<br />447<br />448<br />449<br />450<br />451<br />452<br />453<br />454<br />455<br />456<br />457<br />458<br />459<br />460<br />461<br />462<br />463<br />464<br />465<br />466<br />467<br />468<br />469<br />470<br />471<br />472<br />473<br />474<br />475<br />476<br />477<br />478<br />479<br />480<br />481<br />482<br />483<br />484<br />485<br />486<br />487<br />488<br />489<br />490<br />491<br />492<br />493<br />494<br />495<br />496<br />497<br />498<br />499<br />500<br />501<br />502<br />503<br />504<br />505<br />506<br />507<br />508<br />509<br />510<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #808080;">//----------------------------------------------------------------------</span>
<span style="color: #808080;">//                        Lilygo T5 ESP32 E-paper</span>
<span style="color: #808080;">//  </span>
<span style="color: #808080;">//                        ===============    </span>
<span style="color: #808080;">//                  3.3V -|             |- </span>
<span style="color: #808080;">//                  GND -|             |- </span>
<span style="color: #808080;">//             SDA  21 -|             |- </span>
<span style="color: #808080;">//                         -|             |-</span>
<span style="color: #808080;">//                         -|             |- 3.3V</span>
<span style="color: #808080;">//             SCL  22 -|             |- 32  Alarme</span>
<span style="color: #808080;">//                         -|             |- 33  SQW DS3231</span>
<span style="color: #808080;">//  VL53L0X 1   14 -|             |- 25  Panneau 2</span>
<span style="color: #808080;">//                         -|             |- 26  Panneau 1</span>
<span style="color: #808080;">//  VL53L0X 2   15 -|             |- 27  LDR</span>
<span style="color: #808080;">//                         -|             |- </span>
<span style="color: #808080;">//                    5V -|             |- </span>
<span style="color: #808080;">//                VBAT -|             |- GND</span>
<span style="color: #808080;">//                        ===============</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// I2C device found at address 0x30  !</span>
<span style="color: #808080;">// I2C device found at address 0x31  !</span>
<span style="color: #808080;">// I2C device found at address 0x38  !</span>
<span style="color: #808080;">// I2C device found at address 0x57  !</span>
<span style="color: #808080;">// I2C device found at address 0x68  !</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">//   Tension VBAT   35</span>
<span style="color: #808080;">//   VERANDA_V260608a : </span>
<span style="color: #808080;">//-----------------------------------------------------------------------							</span>
&nbsp;
<span style="color: #808080; font-weight: bold;">/**** Branchements *****************************************************/</span> 
<span style="color: #339933;">#define pinAlarm             32                   //* Alarme */</span>
<span style="color: #339933;">#define pinP1                25                   //* Panneau 1 ouvert */</span>
<span style="color: #339933;">#define pinP2                26                   //* Panneau 2 ouvert /*</span>
&nbsp;
<span style="color: #808080; font-weight: bold;">/********************************************************************/</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;SPI.h&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &quot;RTClib.h&quot;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &quot;driver/rtc_io.h&quot;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;Wire.h&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;time.h&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;Adafruit_AHTX0.h&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;Adafruit_Sensor.h&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &quot;Adafruit_VL53L0X.h&quot;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;GxEPD2_BW.h&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;U8g2_for_Adafruit_GFX.h&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;Adafruit_NeoPixel.h&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &quot;ephemeride.h&quot;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &quot;affichage.h&quot;</span>
<span style="color: #808080; font-weight: bold;">/*********************************************************************/</span>
&nbsp;
<span style="color: #808080; font-weight: bold;">/******* Declarations ************************************************/</span>
&nbsp;
<span style="color: #808080;">//------------------ AHT10  ---------------------------</span>
Adafruit_AHTX0 aht; <span style="color: #808080;">// I2C device found at address 0x38</span>
<span style="color: #808080;">//------------------ NeoPixel  ---------------------------</span>
<span style="color: #339933;">#define NUMPIXELS 10 // Popular NeoPixel ring size</span>
<span style="color: #339933;">#define DELAYVAL 200 // Time (in milliseconds) to pause between pixels</span>
Adafruit_NeoPixel pixels<span style="color: black;">&#40;</span>NUMPIXELS, pinAlarm , NEO_GRB + NEO_KHZ800<span style="color: black;">&#41;</span>;
<span style="color: #808080;">// ------------Capteurs vl53l0x..............................</span>
<span style="color: #339933;">#define pinLOX1  14                  //* Capteur 1           */</span>
<span style="color: #339933;">#define pinLOX2  15                  //* Capteur 2           */</span>
<span style="color: #339933;">#define LOX1_ADDRESS         0x31               //* Adresse I2C : 0x31  */</span>
<span style="color: #339933;">#define LOX2_ADDRESS         0x30               //* Adresse I2C : 0x30  */</span>
<span style="color: #339933;">#define maxDistance          100                //* distance max 100 mm */</span>
Adafruit_VL53L0X LOX1      = Adafruit_VL53L0X<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
Adafruit_VL53L0X LOX2      = Adafruit_VL53L0X<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
VL53L0X_RangingMeasurementData_t measure1;
VL53L0X_RangingMeasurementData_t measure2;
<span style="color: #808080;">//-------------- Mesure Batterie...............................</span>
<span style="color: #339933;">#define pinVb                35                  //* mesure BATT                                </span>
<span style="color: #339933;">#define VccMin               3.2                 //* Niveau minimum attendu de BAT, en Volts    </span>
<span style="color: #339933;">#define VccMax               4.2                 //* Niveau maximum attendu de BAT, en Volts    </span>
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">float</span> voltage        = <span style="color: #cc66cc;">0.0</span> ;
<span style="color: #0000ff;">uint8_t</span> percentage         = <span style="color: #cc66cc;">0.0</span> ;
<span style="color: #808080;">//---------------- DS3231 ---------------------------------------</span>
<span style="color: #808080;">// D&eacute;finir la broche d'interruption du DS3231 (qui r&eacute;veillera l'ESP32)</span>
<span style="color: #339933;">#define CLOCK_INTERRUPT_PIN   GPIO_NUM_33 </span>
<span style="color: #808080;">// --------------sauvegarde variables --------------------------</span>
RTC_DATA_ATTR <span style="color: #0000ff;">bool</span> premier_demarrage = <span style="color: #0080ff;">true</span>;
RTC_DATA_ATTR <span style="color: #0000ff;">int</span> bootCount = <span style="color: #cc66cc;">0</span>;
RTC_DATA_ATTR <span style="color: #0000ff;">bool</span> exP1 = <span style="color: #cc66cc;">0</span>;
RTC_DATA_ATTR <span style="color: #0000ff;">bool</span> exP2 = <span style="color: #cc66cc;">0</span>;
<span style="color: #808080;">// -----Instance pour le RTC -----------------------------------</span>
RTC_DS3231 rtc;
DateTime alarm1Time = DateTime<span style="color: black;">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span><span style="color: black;">&#41;</span>;
<span style="color: #808080;">// -----Variables ----------------------------------------------</span>
<span style="color: #0000ff;">bool</span> P1                    = <span style="color: #cc66cc;">0</span>;  <span style="color: #808080;">// 0: ferme, 1: ouvert</span>
<span style="color: #0000ff;">bool</span> P2                    = <span style="color: #cc66cc;">0</span>;  <span style="color: #808080;">// 0: ferme, 1: ouvert</span>
<span style="color: #0000ff;">bool</span> change                = <span style="color: #cc66cc;">0</span>;
<span style="color: #0000ff;">int</span> pp                     = <span style="color: #cc66cc;">0</span>;
<span style="color: #0000ff;">int</span> tt                     = <span style="color: #cc66cc;">0</span>;
<span style="color: #0000ff;">int</span> hh                     = <span style="color: #cc66cc;">0</span>;
<span style="color: #0000ff;">bool</span> n1                    = <span style="color: #cc66cc;">0</span>;
<span style="color: #0000ff;">bool</span> n2                    = <span style="color: #cc66cc;">0</span>;
<span style="color: #0000ff;">int</span>  valarme               = <span style="color: #cc66cc;">0</span>;
<span style="color: #0000ff;">bool</span> vVCC                  = <span style="color: #0080ff;">false</span>;
&nbsp;
<span style="color: #0000ff;">float</span> AHT_Temp = <span style="color: #cc66cc;">0</span> ;
<span style="color: #0000ff;">float</span> AHT_Humidite = <span style="color: #cc66cc;">0</span>;
<span style="color: #0000ff;">int</span> jour;
<span style="color: #0000ff;">int</span> mois;
<span style="color: #0000ff;">int</span> annee;
<span style="color: #0000ff;">int</span> heure;
<span style="color: #0000ff;">int</span> minute;
<span style="color: #0000ff;">int</span> seconde;
<span style="color: #0000ff;">char</span> alarm1Date<span style="color: black;">&#91;</span><span style="color: #cc66cc;">12</span><span style="color: black;">&#93;</span> = <span style="color: #FF0000;">&quot;DD hh:mm:ss&quot;</span>;
<span style="color: #0000ff;">String</span><span style="color: black;">&#40;</span>affichalarme<span style="color: black;">&#41;</span>;
<span style="color: #0000ff;">String</span><span style="color: black;">&#40;</span>affichmode<span style="color: black;">&#41;</span>;
&nbsp;
<span style="color: #808080;">// ------- Donn&eacute;es G&eacute;ographiques --------------------------------</span>
<span style="color: #0000ff;">double</span> latitude_nord = <span style="color: #cc66cc;">45.6590039</span>;
<span style="color: #0000ff;">double</span> longitude_ouest = -<span style="color: #cc66cc;">5.278757777777778</span>;
<span style="color: #0000ff;">double</span> lever, meridien, coucher;
&nbsp;
<span style="color: #808080; font-weight: bold;">/*************************************************/</span>
<span style="color: #0000ff;">long</span> SleepDuration = <span style="color: #cc66cc;">10</span>; <span style="color: #808080;">// Temps de sommeil en minutes, align&eacute; sur la limite de la minute la plus proche, donc si 30, la mise &agrave; jour se fera toujours &agrave; 00 ou 30 heures pass&eacute;es.</span>
<span style="color: #0000ff;">int</span>  WakeupHour    = <span style="color: #cc66cc;">7</span>;  <span style="color: #808080;">// Ne pas se r&eacute;veiller avant 07h00 pour &eacute;conomiser la batterie</span>
<span style="color: #0000ff;">int</span>  SleepHour     = <span style="color: #cc66cc;">23</span>; <span style="color: #808080;">// Mise en veille apr&egrave;s (23+1) 00:00 pour &eacute;conomiser la batterie</span>
<span style="color: #0000ff;">int</span>  CurrentHour = <span style="color: #cc66cc;">0</span>, CurrentMin = <span style="color: #cc66cc;">0</span>, CurrentSec = <span style="color: #cc66cc;">0</span>;
<span style="color: #0000ff;">long</span> StartTime = <span style="color: #cc66cc;">0</span>;
<span style="color: #808080; font-weight: bold;">/*************************************************/</span>
&nbsp;
<span style="color: #808080; font-weight: bold;">/***************************************************************/</span>
<span style="color: #808080;">/*               SETUP                                         */</span>
<span style="color: #808080; font-weight: bold;">/***************************************************************/</span>
<span style="color: #0000ff;">void</span> setup<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> 
<span style="color: black;">&#123;</span>
   StartTime = <span style="color: #0080ff;">millis</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
   <span style="color: #0080ff;">Serial</span>.begin<span style="color: black;">&#40;</span><span style="color: #cc66cc;">115200</span><span style="color: black;">&#41;</span>;
   <span style="color: #0080ff;">delay</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">500</span><span style="color: black;">&#41;</span>;
   <span style="color: #0080ff;">pinMode</span><span style="color: black;">&#40;</span>pinAlarm, <span style="color: #0080ff;">OUTPUT</span><span style="color: black;">&#41;</span>;                    <span style="color: #808080;">// Sortie Alarme</span>
   <span style="color: #0080ff;">pinMode</span><span style="color: black;">&#40;</span>pinLOX1, <span style="color: #0080ff;">OUTPUT</span><span style="color: black;">&#41;</span>;                     <span style="color: #808080;">// Sortie LOX1  </span>
   <span style="color: #0080ff;">pinMode</span><span style="color: black;">&#40;</span>pinLOX2, <span style="color: #0080ff;">OUTPUT</span><span style="color: black;">&#41;</span>;                     <span style="color: #808080;">// Sortie LOX2</span>
   <span style="color: #0080ff;">pinMode</span><span style="color: black;">&#40;</span>pinP1, <span style="color: #0080ff;">OUTPUT</span><span style="color: black;">&#41;</span>;                       <span style="color: #808080;">// Sortie Panneau 1 Ouvert</span>
   <span style="color: #0080ff;">pinMode</span><span style="color: black;">&#40;</span>pinP2, <span style="color: #0080ff;">OUTPUT</span><span style="color: black;">&#41;</span>;                       <span style="color: #808080;">// Sortie Panneau 2 Ouvert</span>
&nbsp;
  <span style="color: #808080;">// Capteurs Proximit&eacute;s activ&eacute;s </span>
   <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span>F<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Capteurs activ&eacute;es...&quot;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>;
   <span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>pinLOX1, <span style="color: #0080ff;">LOW</span><span style="color: black;">&#41;</span>;
   <span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>pinLOX2, <span style="color: #0080ff;">LOW</span><span style="color: black;">&#41;</span>;
   setID<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
&nbsp;
  esp_sleep_enable_timer_wakeup<span style="color: black;">&#40;</span><span style="color: #cc66cc;">5000000</span>ULL<span style="color: black;">&#41;</span>; <span style="color: #808080;">// 5 secondes</span>
&nbsp;
  <span style="color: #808080;">// Initialiser le RTC</span>
  <span style="color: #0000ff;">if</span><span style="color: black;">&#40;</span>!rtc.begin<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
    <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Impossible de trouver RTC!&quot;</span><span style="color: black;">&#41;</span>;
    <span style="color: #0080ff;">Serial</span>.flush<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
    <span style="color: #0000ff;">while</span> <span style="color: black;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: black;">&#41;</span> <span style="color: #0080ff;">delay</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">10</span><span style="color: black;">&#41;</span>;
  <span style="color: black;">&#125;</span><span style="color: #0000ff;">else</span><span style="color: black;">&#123;</span>
      <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span>F<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot; RTC = OK&quot;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>;
  <span style="color: black;">&#125;</span>  
  <span style="color: #808080;">// Initialiser le AHT10</span>
  <span style="color: #808080;">/*</span>
<span style="color: #808080;">&nbsp; if (! aht.begin()) {</span>
<span style="color: #808080;">&nbsp;   Serial.println(&quot;Impossible de trouver l'AHT ? V&eacute;rifier le c&acirc;blage&quot;);</span>
<span style="color: #808080;">&nbsp;   while (1) delay(10);</span>
<span style="color: #808080;">&nbsp; }else{</span>
<span style="color: #808080;">&nbsp;   Serial.println(F(&quot; AHT10 = OK&quot;));</span>
<span style="color: #808080;">&nbsp; }	</span>
<span style="color: #808080;">&nbsp; */</span>
&nbsp;
   <span style="color: #0000ff;">char</span> texte<span style="color: black;">&#91;</span><span style="color: #cc66cc;">80</span><span style="color: black;">&#93;</span>;
   print_wakeup_reason<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>; <span style="color: #808080;">//Imprime le motif de r&eacute;veil de l'ESP32</span>
&nbsp;
  <span style="color: #808080;">// Clignotement de la LED lorsque l'ESP32 se r&eacute;veille</span>
  <span style="color: #808080;">//pinMode (pinAlarm, OUTPUT);</span>
  <span style="color: #808080;">//digitalWrite(pinAlarm, HIGH);</span>
  <span style="color: #808080;">//delay(1000);</span>
  <span style="color: #808080;">//digitalWrite(pinAlarm, LOW);</span>
&nbsp;
&nbsp;
&nbsp;
  <span style="color: #808080;">// Init Date -------------------------------  </span>
  DateTime maintenant = rtc.now<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;  <span style="color: #808080;">// on lit la date actuelle</span>
  <span style="color: #808080;">// s'il y a eu d&eacute;clenchement d'alarme on ajoute 1 jour &agrave; la date en cours et enl&egrave;ve l'alarme</span>
  <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>rtc.alarmFired<span style="color: black;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: black;">&#41;</span>==<span style="color: #0080ff;">true</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
    rtc.clearAlarm<span style="color: black;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: black;">&#41;</span>;
    maintenant = maintenant + TimeSpan<span style="color: black;">&#40;</span><span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">0</span><span style="color: black;">&#41;</span>; <span style="color: #808080;">// On ajoute 1 jour &agrave; la date en cours</span>
    <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot; -Alarme r&eacute;actualis&eacute;e-&quot;</span><span style="color: black;">&#41;</span>;
  <span style="color: black;">&#125;</span>
&nbsp;
  <span style="color: #808080;">// On calcule la Date du Jour -------------</span>
  <span style="color: #0000ff;">double</span> lever, meridien, coucher;
  jour = maintenant.day<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
  mois = maintenant.month<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
  annee = maintenant.year<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
  afficherDate<span style="color: black;">&#40;</span>jour,mois,annee<span style="color: black;">&#41;</span>;  
  <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;<span style="color: #800000;">\n</span>-----------&quot;</span><span style="color: black;">&#41;</span>;
   <span style="color: #808080;">// On calcule l'heure UTC </span>
  heure  = maintenant.hour<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
  minute = maintenant.minute<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
  seconde = maintenant.second<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">char</span> buf<span style="color: black;">&#91;</span><span style="color: #cc66cc;">9</span><span style="color: black;">&#93;</span>;
  sprintf<span style="color: black;">&#40;</span>buf, <span style="color: #FF0000;">&quot;%02d:%02d:%02d&quot;</span>, heure, minute,seconde <span style="color: black;">&#41;</span>;
  afficherHeure<span style="color: black;">&#40;</span>heure,minute,seconde<span style="color: black;">&#41;</span>;  <span style="color: #808080;">// affichage date du jour</span>
  <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;<span style="color: #800000;">\n</span>-----------&quot;</span><span style="color: black;">&#41;</span>;
&nbsp;
  <span style="color: #808080;">// Lecture Position des panneaux</span>
  ReadPanels<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
  change = premier_demarrage || <span style="color: black;">&#40;</span>P1 != exP1<span style="color: black;">&#41;</span> || <span style="color: black;">&#40;</span>P2!= exP2<span style="color: black;">&#41;</span>;
  <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;<span style="color: #800000;">\n</span>-----------&quot;</span><span style="color: black;">&#41;</span>;
     <span style="color: #0000ff;">if</span><span style="color: black;">&#40;</span>change<span style="color: black;">&#41;</span> <span style="color: #0080ff;">Serial</span>.print<span style="color: black;">&#40;</span>F<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Changement- OK! &quot;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>; <span style="color: #0000ff;">else</span> <span style="color: #0080ff;">Serial</span>.print<span style="color: black;">&#40;</span>F<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Pas de Changement&quot;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>;
  <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;<span style="color: #800000;">\n</span>-----------&quot;</span><span style="color: black;">&#41;</span>;
  <span style="color: #808080;">// Lecture Tension batterie</span>
  tensionbatterie<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
  <span style="color: #808080;">// Lecture AHT10</span>
  <span style="color: #808080;">//Temp_Hum_Section();</span>
&nbsp;
  <span style="color: #808080;">/* --- D&eacute;commenter si besoin de d&eacute;finir l'heure du RTC ----*/</span>
  <span style="color: #808080;">//rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));</span>
  <span style="color: #808080;">//rtc.adjust(DateTime(2026, 6, 8,13, 07, 00)); // Attention mettre &agrave; l'heure UTC</span>
  <span style="color: #808080;">/*-------------------------------------------------------------------*/</span>
&nbsp;
  rtc.disable32K<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;   <span style="color: #808080;">// D&eacute;sactiver la broche 32K</span>
  rtc.writeSqwPinMode<span style="color: black;">&#40;</span>DS3231_OFF<span style="color: black;">&#41;</span>;
  rtc.disableAlarm<span style="color: black;">&#40;</span><span style="color: #cc66cc;">2</span><span style="color: black;">&#41;</span>;
&nbsp;
   <span style="color: #808080;">// L'alarme d&eacute;clenche une interruption</span>
  <span style="color: #0080ff;">pinMode</span><span style="color: black;">&#40;</span>CLOCK_INTERRUPT_PIN, <span style="color: #0080ff;">INPUT_PULLUP</span><span style="color: black;">&#41;</span>;
  <span style="color: #0080ff;">attachInterrupt</span><span style="color: black;">&#40;</span>digitalPinToInterrupt<span style="color: black;">&#40;</span>CLOCK_INTERRUPT_PIN<span style="color: black;">&#41;</span>, onAlarm, FALLING<span style="color: black;">&#41;</span>;
&nbsp;
&nbsp;
&nbsp;
  <span style="color: #808080;">/* Mettre l'alarme 1 &agrave; jour en fonction de l'ephemeride */</span>
  <span style="color: #0000ff;">if</span><span style="color: black;">&#40;</span>!rtc.setAlarm1<span style="color: black;">&#40;</span>alarm1Time, DS3231_A1_Date<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>  <span style="color: #808080;">// ce mode d&eacute;clenche l'alarme lorsque la date et heure correspondantes</span>
        <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Erreur, l'alarme n'a pas &eacute;t&eacute; r&eacute;gl&eacute;e!&quot;</span><span style="color: black;">&#41;</span>;
  <span style="color: black;">&#125;</span><span style="color: #0000ff;">else</span> <span style="color: black;">&#123;</span>
      <span style="color: #808080;">//testerEphemeride(jour,mois,annee, 1, -5, 16, 43, 45, 39, 32); // Lat : 45.6590039 &amp; Long : 5.278757777777778  =&gt; Lat : N 45 39 32.414 &amp; Long : E 5 16 43</span>
      <span style="color: #808080;">//calculerEphemeride(jour,mois,annee, 1, -5, 16, 43, 45, 39, 32); // Lat : 45.6590039 &amp; Long : 5.278757777777778  =&gt; Lat : N 45 39 32.414 &amp; Long : E 5 16 43</span>
      calculerEphemeride<span style="color: black;">&#40;</span>jour, mois, annee, longitude_ouest, latitude_nord, &amp;lever, &amp;meridien, &amp;coucher<span style="color: black;">&#41;</span>;
      <span style="color: #0080ff;">Serial</span>.print<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Lever : &quot;</span><span style="color: black;">&#41;</span>;
      afficherHeureJulienne<span style="color: black;">&#40;</span>lever<span style="color: black;">&#41;</span>;
      <span style="color: #0080ff;">Serial</span>.print<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Meridien : &quot;</span><span style="color: black;">&#41;</span>;
      afficherHeureJulienne<span style="color: black;">&#40;</span>meridien<span style="color: black;">&#41;</span>;
      <span style="color: #0080ff;">Serial</span>.print<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Coucher : &quot;</span><span style="color: black;">&#41;</span>;
      afficherHeureJulienne<span style="color: black;">&#40;</span>coucher<span style="color: black;">&#41;</span>; 
      full_sreeen<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
      <span style="color: #808080;">//display.display(false); // Full screen update mode </span>
  <span style="color: black;">&#125;</span>
&nbsp;
  programmerAlarme<span style="color: black;">&#40;</span>annee, mois, jour, coucher<span style="color: black;">&#41;</span>; 
  checkDate<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>; 
&nbsp;
&nbsp;
  <span style="color: #808080;">// Affichage  </span>
  <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>change<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
    exP1 = P1;
    exP2 = P2;  
    premier_demarrage = <span style="color: #0080ff;">false</span>;
    InitialiseDisplay<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;  <span style="color: #808080;">//&lt;====</span>
    Draw_Heading_Section<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>; <span style="color: #808080;">// &lt;====== </span>
    DrawBattery<span style="color: black;">&#40;</span><span style="color: #cc66cc;">190</span>, <span style="color: #cc66cc;">12</span><span style="color: black;">&#41;</span>;  <span style="color: #808080;">//  &lt;====== </span>
    DrawPanneaux<span style="color: black;">&#40;</span><span style="color: #cc66cc;">5</span>, <span style="color: #cc66cc;">15</span><span style="color: black;">&#41;</span>;   <span style="color: #808080;">//  &lt;======</span>
    Draw_Temp_Hum_Section<span style="color: black;">&#40;</span><span style="color: #cc66cc;">192</span>,<span style="color: #cc66cc;">15</span><span style="color: black;">&#41;</span>; <span style="color: #808080;">// &lt;====== </span>
    DisplayAstronomySection<span style="color: black;">&#40;</span><span style="color: #cc66cc;">10</span>, <span style="color: #cc66cc;">10</span><span style="color: black;">&#41;</span>; <span style="color: #808080;">// affichage E-Paper</span>
  <span style="color: black;">&#125;</span>
&nbsp;
  <span style="color: #808080;">// Mettre l'alarme 1, 2 &agrave; false (donc l'alarme 1, 2 ne s'est pas produite jusqu'&agrave; pr&eacute;sent)</span>
  <span style="color: #808080;">// si ce n'est pas fait, cela conduit facilement &agrave; des probl&egrave;mes, car les deux registres ne sont pas r&eacute;initialis&eacute;s au red&eacute;marrage/recompilation.</span>
  rtc.clearAlarm<span style="color: black;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: black;">&#41;</span>;
  rtc.clearAlarm<span style="color: black;">&#40;</span><span style="color: #cc66cc;">2</span><span style="color: black;">&#41;</span>;
&nbsp;
  <span style="color: #808080;">// Incr&eacute;mente le num&eacute;ro de d&eacute;marrage et l'imprime &agrave; chaque red&eacute;marrage</span>
  ++bootCount;
  <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;--------------------&quot;</span><span style="color: black;">&#41;</span>;
  <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Boot number: &quot;</span> + <span style="color: #0000ff;">String</span><span style="color: black;">&#40;</span>bootCount<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>;
  <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;--------------------&quot;</span><span style="color: black;">&#41;</span>;
&nbsp;
  <span style="color: #808080;">// Configuration du r&eacute;veil externe</span>
  <span style="color: #808080;">// esp_sleep_enable_ext0_wakeup(CLOCK_INTERRUPT_PIN, 0);  //1 = Haut, 0 = Bas</span>
  <span style="color: #808080;">// Configurer le pullup/down via RTCIO pour lier les broches de r&eacute;veil &agrave; un niveau inactif pendant le sommeil profond.</span>
  <span style="color: #808080;">// La broche SQW du RTC est active &agrave; un niveau bas.</span>
  rtc_gpio_pulldown_dis<span style="color: black;">&#40;</span>CLOCK_INTERRUPT_PIN<span style="color: black;">&#41;</span>;
  rtc_gpio_pullup_en<span style="color: black;">&#40;</span>CLOCK_INTERRUPT_PIN<span style="color: black;">&#41;</span>; 
&nbsp;
  <span style="color: #808080;">//S'endormir maintenant jusqu'&agrave; ce qu'une alarme se d&eacute;clenche</span>
  <span style="color: #808080;">// Serial.println(&quot;Going to sleep now&quot;);</span>
  esp_deep_sleep_start<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;  
  <span style="color: #808080;">//BeginSleep();</span>
<span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #808080; font-weight: bold;">/***************************************************************/</span>
<span style="color: #808080;">/*               LOOP                                          */</span>
<span style="color: #808080; font-weight: bold;">/***************************************************************/</span>
<span style="color: #0000ff;">void</span> loop<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span><span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #808080;">//#########################################################################################</span>
<span style="color: #0000ff;">void</span> BeginSleep<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
  powerOff<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">long</span> SleepTimer = <span style="color: black;">&#40;</span>SleepDuration * <span style="color: #cc66cc;">60</span> - <span style="color: black;">&#40;</span><span style="color: black;">&#40;</span>CurrentMin % SleepDuration<span style="color: black;">&#41;</span> * <span style="color: #cc66cc;">60</span> + CurrentSec<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>; <span style="color: #808080;">//Certaines ESP32 sont trop rapides pour maintenir une heure pr&eacute;cise</span>
  esp_sleep_enable_timer_wakeup<span style="color: black;">&#40;</span><span style="color: black;">&#40;</span>SleepTimer + <span style="color: #cc66cc;">20</span><span style="color: black;">&#41;</span> * <span style="color: #cc66cc;">1000000</span>LL<span style="color: black;">&#41;</span>; <span style="color: #808080;">// Ajout de +20 secondes pour couvrir les impr&eacute;cisions de la source du timer RTC de l'ESP32</span>
&nbsp;
  <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Entering &quot;</span> + <span style="color: #0000ff;">String</span><span style="color: black;">&#40;</span>SleepTimer<span style="color: black;">&#41;</span> + <span style="color: #FF0000;">&quot;-secs of sleep time&quot;</span><span style="color: black;">&#41;</span>;
  <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Awake for : &quot;</span> + <span style="color: #0000ff;">String</span><span style="color: black;">&#40;</span><span style="color: black;">&#40;</span><span style="color: #0080ff;">millis</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> - StartTime<span style="color: black;">&#41;</span> / <span style="color: #cc66cc;">1000.0</span>, <span style="color: #cc66cc;">3</span><span style="color: black;">&#41;</span> + <span style="color: #FF0000;">&quot;-secs&quot;</span><span style="color: black;">&#41;</span>;
  <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Starting deep-sleep period...&quot;</span><span style="color: black;">&#41;</span>;
  esp_deep_sleep_start<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;  <span style="color: #808080;">// Sleep for e.g. 30 minutes</span>
<span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #808080;">//#########################################################################################</span>
<span style="color: #808080;">// M&eacute;thode permettant d'imprimer la raison pour laquelle l'ESP32 a &eacute;t&eacute; r&eacute;veill&eacute; de son sommeil</span>
<span style="color: #0000ff;">void</span> print_wakeup_reason<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
  esp_sleep_wakeup_cause_t wakeup_reason;
  wakeup_reason = esp_sleep_get_wakeup_cause<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">switch</span> <span style="color: black;">&#40;</span>wakeup_reason<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
    <span style="color: #0000ff;">case</span> ESP_SLEEP_WAKEUP_EXT0:     <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;R&eacute;veil caus&eacute; par un signal externe utilisant RTC_IO&quot;</span><span style="color: black;">&#41;</span>; <span style="color: #0000ff;">break</span>;
    <span style="color: #0000ff;">case</span> ESP_SLEEP_WAKEUP_EXT1:     <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;R&eacute;veil provoqu&eacute; par un signal externe utilisant RTC_CNTL&quot;</span><span style="color: black;">&#41;</span>; <span style="color: #0000ff;">break</span>;
    <span style="color: #0000ff;">case</span> ESP_SLEEP_WAKEUP_TIMER:    <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;R&eacute;veil provoqu&eacute; par la minuterie&quot;</span><span style="color: black;">&#41;</span>; <span style="color: #0000ff;">break</span>;
    <span style="color: #0000ff;">case</span> ESP_SLEEP_WAKEUP_TOUCHPAD: <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;R&eacute;veil provoqu&eacute; par le pav&eacute; tactile&quot;</span><span style="color: black;">&#41;</span>; <span style="color: #0000ff;">break</span>;
    <span style="color: #0000ff;">case</span> ESP_SLEEP_WAKEUP_ULP:      <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;R&eacute;veil caus&eacute; par le programme ULP&quot;</span><span style="color: black;">&#41;</span>; <span style="color: #0000ff;">break</span>;
    <span style="color: #0000ff;">default</span>:                        <span style="color: #0080ff;">Serial</span>.printf<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Le r&eacute;veil n'a pas &eacute;t&eacute; caus&eacute; par un sommeil profond : %d<span style="color: #800000;">\n</span>&quot;</span>, wakeup_reason<span style="color: black;">&#41;</span>; <span style="color: #0000ff;">break</span>;
  <span style="color: black;">&#125;</span>
<span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #808080;">//#########################################################################################</span>
<span style="color: #0000ff;">void</span> programmerAlarme<span style="color: black;">&#40;</span><span style="color: #0000ff;">int</span> annee, <span style="color: #0000ff;">int</span> mois, <span style="color: #0000ff;">int</span> jour, <span style="color: #0000ff;">double</span> heureJulienne<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
&nbsp;
  <span style="color: #808080;">// on calcule l'heure, minute et seconde comme dans le code de bricoleau</span>
  <span style="color: #808080;">// dans sa fonction afficherHeure() en modifiant &eacute;ventuellement le jour</span>
  <span style="color: #0000ff;">int</span> h, m, s;
  <span style="color: #0000ff;">double</span> d = heureJulienne + <span style="color: #cc66cc;">0.5</span>;
&nbsp;
  <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>d &lt; <span style="color: #cc66cc;">0.0</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
    jour -= <span style="color: #cc66cc;">1</span>;
    d += <span style="color: #cc66cc;">1.0</span>;
  <span style="color: black;">&#125;</span> <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>d &gt;= <span style="color: #cc66cc;">1.0</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
    jour += <span style="color: #cc66cc;">1</span>;
    d -= <span style="color: #cc66cc;">1.0</span>;
  <span style="color: black;">&#125;</span>
&nbsp;
  h = d * <span style="color: #cc66cc;">24.0</span>;
  d -= <span style="color: black;">&#40;</span><span style="color: #0000ff;">double</span><span style="color: black;">&#41;</span> h / <span style="color: #cc66cc;">24.0</span>;
  m = d * <span style="color: #cc66cc;">1440.0</span>;
  d -= <span style="color: black;">&#40;</span><span style="color: #0000ff;">double</span><span style="color: black;">&#41;</span> m / <span style="color: #cc66cc;">1440.0</span>;
  s = d * <span style="color: #cc66cc;">86400.0</span> + <span style="color: #cc66cc;">0.5</span>;
  h= h + <span style="color: #cc66cc;">2</span> ; <span style="color: #808080;">// &lt;=== correction UTC + 2</span>
&nbsp;
  DateTime alarme<span style="color: black;">&#40;</span>annee, mois, jour, h, m, s<span style="color: black;">&#41;</span>; <span style="color: #808080;">// puis on fabrique un DateTime avec ces infos</span>
  rtc.setAlarm1<span style="color: black;">&#40;</span>alarme, DS3231_A1_Date<span style="color: black;">&#41;</span>; <span style="color: #808080;">// qu'on utilise pour armer l'alarme1 du DS3231 en mode date+heure exacte</span>
  <span style="color: #808080;">//rtc.enableAlarm(DS3231_ALARM_1);</span>
<span style="color: black;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #808080;">//#########################################################################################</span>
<span style="color: #0000ff;">void</span> checkDate<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
<span style="color: black;">&#123;</span>
    DateTime alarm1Time = rtc.getAlarm1<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
    Ds3231Alarm1Mode alarm1mode = rtc.getAlarm1Mode<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
    <span style="color: #808080;">//char alarm1Date[12] = &quot;DD hh:mm:ss&quot;;</span>
    alarm1Time.toString<span style="color: black;">&#40;</span>alarm1Date<span style="color: black;">&#41;</span>;
    <span style="color: #0080ff;">Serial</span>.print<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;[ Alarme 1: &quot;</span><span style="color: black;">&#41;</span>;
    <span style="color: #0080ff;">Serial</span>.print<span style="color: black;">&#40;</span>alarm1Date<span style="color: black;">&#41;</span>;
    <span style="color: #0080ff;">Serial</span>.print<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;, Mode: &quot;</span><span style="color: black;">&#41;</span>;
    <span style="color: #0000ff;">switch</span> <span style="color: black;">&#40;</span>alarm1mode<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
      <span style="color: #0000ff;">case</span> DS3231_A1_PerSecond:
        <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;PerSecond ]&quot;</span><span style="color: black;">&#41;</span>;
        affichmode = <span style="color: #FF0000;">&quot;Par Seconde&quot;</span>;
        <span style="color: #0000ff;">break</span>;
      <span style="color: #0000ff;">case</span> DS3231_A1_Second:
        <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Second ]&quot;</span><span style="color: black;">&#41;</span>;
        affichmode = <span style="color: #FF0000;">&quot;Seconde&quot;</span>;
        <span style="color: #0000ff;">break</span>;
      <span style="color: #0000ff;">case</span> DS3231_A1_Minute:
        <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Minute ]&quot;</span><span style="color: black;">&#41;</span>;
        affichmode = <span style="color: #FF0000;">&quot;Minute&quot;</span>;
        <span style="color: #0000ff;">break</span>;
      <span style="color: #0000ff;">case</span> DS3231_A1_Hour:
        <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Hour ]&quot;</span><span style="color: black;">&#41;</span>;
         affichmode = <span style="color: #FF0000;">&quot;Heure&quot;</span>;
        <span style="color: #0000ff;">break</span>;
      <span style="color: #0000ff;">case</span> DS3231_A1_Date:
        <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Date ]&quot;</span><span style="color: black;">&#41;</span>;
         affichmode = <span style="color: #FF0000;">&quot;Date&quot;</span>;
        <span style="color: #0000ff;">break</span>;
      <span style="color: #0000ff;">case</span> DS3231_A1_Day:
        <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Day ]&quot;</span><span style="color: black;">&#41;</span>;
         affichmode = <span style="color: #FF0000;">&quot;Jour&quot;</span>;
        <span style="color: #0000ff;">break</span>;
    <span style="color: black;">&#125;</span>
    <span style="color: #808080;">//affichalarme = alarm1Date;</span>
    affichalarme = <span style="color: #FF0000;">&quot;Alarme =&gt; &quot;</span>;
    affichalarme += alarm1Date;
    affichalarme += <span style="color: #FF0000;">&quot; - En Mode: &quot;</span>;
    affichalarme += affichmode;
    affichalarme +=  <span style="color: #FF0000;">&quot; &quot;</span>;
    <span style="color: #0080ff;">Serial</span>.print<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;&quot;</span><span style="color: black;">&#41;</span>;
<span style="color: black;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #808080;">//#########################################################################################</span>
<span style="color: #0000ff;">void</span> onAlarm<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
  <span style="color: #0080ff;">Serial</span>.print<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Une alarme s'est produite!&quot;</span><span style="color: black;">&#41;</span>;
&nbsp;
<span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #808080; font-weight: bold;">/*****************************************************************/</span>
<span style="color: #0000ff;">void</span> tensionbatterie<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
  <span style="color: #0000ff;">float</span> v_mes = <span style="color: #0080ff;">analogRead</span><span style="color: black;">&#40;</span>pinVb<span style="color: black;">&#41;</span>;
  <span style="color: #0080ff;">delay</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">200</span><span style="color: black;">&#41;</span>;
  <span style="color: #808080;">//float voltage = 1.435*(v_mes/4095)*3.3;</span>
  <span style="color: #0000ff;">float</span> voltage = <span style="color: #cc66cc;">2</span>*<span style="color: black;">&#40;</span>v_mes/<span style="color: #cc66cc;">4095</span><span style="color: black;">&#41;</span>*<span style="color: #cc66cc;">3.3</span>;
  <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Voltage = &quot;</span> + <span style="color: #0000ff;">String</span><span style="color: black;">&#40;</span>voltage<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>;
  percentage = <span style="color: #cc66cc;">2836.9625</span> * <span style="color: #0080ff;">pow</span><span style="color: black;">&#40;</span>voltage, <span style="color: #cc66cc;">4</span><span style="color: black;">&#41;</span> - <span style="color: #cc66cc;">43987.4889</span> * <span style="color: #0080ff;">pow</span><span style="color: black;">&#40;</span>voltage, <span style="color: #cc66cc;">3</span><span style="color: black;">&#41;</span> + <span style="color: #cc66cc;">255233.8134</span> * <span style="color: #0080ff;">pow</span><span style="color: black;">&#40;</span>voltage, <span style="color: #cc66cc;">2</span><span style="color: black;">&#41;</span> - <span style="color: #cc66cc;">656689.7123</span> * voltage + <span style="color: #cc66cc;">632041.7303</span>;
  <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>voltage &gt;= <span style="color: #cc66cc;">4.20</span><span style="color: black;">&#41;</span> percentage = <span style="color: #cc66cc;">100</span>;
  <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>voltage &lt;= <span style="color: #cc66cc;">3.20</span><span style="color: black;">&#41;</span> percentage = <span style="color: #cc66cc;">0</span> ;
&nbsp;
<span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #808080; font-weight: bold;">/*******************************************************************/</span>
<span style="color: #0000ff;">void</span> Temp_Hum_Section<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
  sensors_event_t humidity, temp;
  aht.getEvent<span style="color: black;">&#40;</span>&amp;humidity, &amp;temp<span style="color: black;">&#41;</span>;<span style="color: #808080;">// populate temp and humidity objects with fresh data</span>
  AHT_Temp = temp.temperature;
  AHT_Humidite = humidity.relative_humidity;
  <span style="color: #0080ff;">Serial</span>.print<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Temperature: &quot;</span><span style="color: black;">&#41;</span>; <span style="color: #0080ff;">Serial</span>.print<span style="color: black;">&#40;</span>temp.temperature,<span style="color: #cc66cc;">1</span><span style="color: black;">&#41;</span>; <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot; degrees C&quot;</span><span style="color: black;">&#41;</span>;
  <span style="color: #0080ff;">Serial</span>.print<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Humidity: &quot;</span><span style="color: black;">&#41;</span>; <span style="color: #0080ff;">Serial</span>.print<span style="color: black;">&#40;</span>humidity.relative_humidity,<span style="color: #cc66cc;">0</span><span style="color: black;">&#41;</span>; <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;% rH&quot;</span><span style="color: black;">&#41;</span>;
&nbsp;
<span style="color: black;">&#125;</span> 
&nbsp;
<span style="color: #808080; font-weight: bold;">/*****Initialiser les capteurs VL53L0X *********************/</span>
<span style="color: #0000ff;">void</span> setID<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
  <span style="color: #808080;">// tout est remis &agrave; z&eacute;ro</span>
   <span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>pinLOX1, <span style="color: #0080ff;">LOW</span><span style="color: black;">&#41;</span>;                   
   <span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>pinLOX2, <span style="color: #0080ff;">LOW</span><span style="color: black;">&#41;</span>;
   <span style="color: #0080ff;">delay</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">20</span><span style="color: black;">&#41;</span>;
&nbsp;
   <span style="color: #808080;">// initialisation LOX1........................</span>
   <span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>pinLOX1, <span style="color: #0080ff;">HIGH</span><span style="color: black;">&#41;</span>;
   <span style="color: #0080ff;">delay</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">30</span><span style="color: black;">&#41;</span>;
   <span style="color: #0000ff;">if</span><span style="color: black;">&#40;</span>! LOX1.begin<span style="color: black;">&#40;</span>LOX1_ADDRESS<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
      <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span>F<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Echec init VL53L0X 1&quot;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>;
      <span style="color: #0000ff;">while</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: black;">&#41;</span>;
    <span style="color: black;">&#125;</span><span style="color: #0000ff;">else</span><span style="color: black;">&#123;</span>
      <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span>F<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;VL53L0X 1 = OK&quot;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>;
    <span style="color: black;">&#125;</span>
    <span style="color: #808080;">// initialisation LOX2........................</span>
   <span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>pinLOX2, <span style="color: #0080ff;">HIGH</span><span style="color: black;">&#41;</span>;
   <span style="color: #0080ff;">delay</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">30</span><span style="color: black;">&#41;</span>;
   <span style="color: #0000ff;">if</span><span style="color: black;">&#40;</span>! LOX2.begin<span style="color: black;">&#40;</span>LOX2_ADDRESS<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
      <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span>F<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Echec init VL53L0X 2&quot;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>;
      <span style="color: #0000ff;">while</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: black;">&#41;</span>;
   <span style="color: black;">&#125;</span><span style="color: #0000ff;">else</span><span style="color: black;">&#123;</span>
      <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span>F<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;VL53L0X 2 = OK&quot;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>;
   <span style="color: black;">&#125;</span>
<span style="color: black;">&#125;</span>
&nbsp;
&nbsp;
&nbsp;
<span style="color: #808080; font-weight: bold;">/***************** PANNEAUX ********************************/</span>
<span style="color: #0000ff;">void</span> ReadPanels<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>  
&nbsp;
   <span style="color: #808080;">// Capteur1 en lecture........P1 = 1 si panneau n&deg;1 ouvert................</span>
   <span style="color: #0080ff;">Serial</span>.print<span style="color: black;">&#40;</span>F<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Panneau N&deg;1 =&gt; &quot;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>;
   LOX1.rangingTest<span style="color: black;">&#40;</span>&amp;measure1, <span style="color: #0080ff;">false</span><span style="color: black;">&#41;</span>;    <span style="color: #808080;">// 'true' pour avoir les donn&eacute;es de d&eacute;bogage</span>
   P1 = <span style="color: black;">&#40;</span>measure1.RangeMilliMeter &gt;  maxDistance<span style="color: black;">&#41;</span>; 
   <span style="color: #808080;">//Serial.print(P1);</span>
   <span style="color: #0000ff;">if</span><span style="color: black;">&#40;</span>P1<span style="color: black;">&#41;</span> <span style="color: #0080ff;">Serial</span>.print<span style="color: black;">&#40;</span>F<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;- Ouvert&quot;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>; <span style="color: #0000ff;">else</span> <span style="color: #0080ff;">Serial</span>.print<span style="color: black;">&#40;</span>F<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;- Ferm&eacute;&quot;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>;
   <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
&nbsp;
   <span style="color: #808080;">// Capteur2 en lecture...P2 = 1 si panneau n&deg;2 ouvert.....................</span>
   <span style="color: #0080ff;">Serial</span>.print<span style="color: black;">&#40;</span>F<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Panneau N&deg;2 =&gt; &quot;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>;
   LOX2.rangingTest<span style="color: black;">&#40;</span>&amp;measure2, <span style="color: #0080ff;">false</span><span style="color: black;">&#41;</span>;  <span style="color: #808080;">// 'true' pour avoir les donn&eacute;es de d&eacute;bogage</span>
   P2 = <span style="color: black;">&#40;</span>measure2.RangeMilliMeter &gt;  maxDistance<span style="color: black;">&#41;</span>;
   <span style="color: #0000ff;">if</span><span style="color: black;">&#40;</span>P2<span style="color: black;">&#41;</span> <span style="color: #0080ff;">Serial</span>.print<span style="color: black;">&#40;</span>F<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;- Ouvert&quot;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>; <span style="color: #0000ff;">else</span> <span style="color: #0080ff;">Serial</span>.print<span style="color: black;">&#40;</span>F<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;- Ferm&eacute;&quot;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>;
   <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
&nbsp;
   <span style="color: #808080;">// Affichage LEDS </span>
     <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>P1 != <span style="color: #cc66cc;">0</span><span style="color: black;">&#41;</span> <span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>pinP1 , <span style="color: #0080ff;">HIGH</span><span style="color: black;">&#41;</span>; <span style="color: #0000ff;">else</span> <span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>pinP1 , <span style="color: #0080ff;">LOW</span><span style="color: black;">&#41;</span>;
     <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>P2 != <span style="color: #cc66cc;">0</span><span style="color: black;">&#41;</span> <span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>pinP2 , <span style="color: #0080ff;">HIGH</span><span style="color: black;">&#41;</span>; <span style="color: #0000ff;">else</span> <span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>pinP2 , <span style="color: #0080ff;">LOW</span><span style="color: black;">&#41;</span>;
&nbsp;
<span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #808080; font-weight: bold;">/******** Traitement Alarme ******************************/</span>
<span style="color: #0000ff;">void</span> alarme<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span> 
&nbsp;
   <span style="color: #0080ff;">Serial</span>.print<span style="color: black;">&#40;</span>F<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Alarme: &quot;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>;    <span style="color: #0080ff;">Serial</span>.print<span style="color: black;">&#40;</span>valarme<span style="color: black;">&#41;</span>;      <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
&nbsp;
   <span style="color: #808080;">/*</span>
<span style="color: #808080;">&nbsp;  for(int i=0; i&lt;NUMPIXELS; i++) </span>
<span style="color: #808080;">	 { // For each pixel...</span>
<span style="color: #808080;">&nbsp;      </span>
<span style="color: #808080;">&nbsp;      if (valarme==1){</span>
<span style="color: #808080;">&nbsp;         pixels.setPixelColor(i, pixels.Color(255, 0, 255)); // Sombre = VIOLET</span>
<span style="color: #808080;">&nbsp;      }</span>
<span style="color: #808080;">&nbsp;      if (valarme==2){</span>
<span style="color: #808080;">&nbsp;         pixels.setPixelColor(i, pixels.Color(255, 0, 0)); // Pluie = ROUGE</span>
<span style="color: #808080;">&nbsp;      }   </span>
<span style="color: #808080;">&nbsp;      if (valarme==3){</span>
<span style="color: #808080;">&nbsp;         pixels.setPixelColor(i, pixels.Color(0, 255, 0)); // Batterie = VERT</span>
<span style="color: #808080;">&nbsp;      }</span>
<span style="color: #808080;">&nbsp;       </span>
<span style="color: #808080;">&nbsp;       pixels.show();   // Envoyez les couleurs de pixel mises &agrave; jour au mat&eacute;riel.</span>
<span style="color: #808080;">&nbsp;       delay(DELAYVAL); // Pause avant le passage suivant dans la boucle</span>
<span style="color: #808080;">&nbsp;       pixels.setPixelColor(i, pixels.Color(0, 0, 0));</span>
<span style="color: #808080;">&nbsp;       pixels.show(); </span>
<span style="color: #808080;">&nbsp;  }</span>
<span style="color: #808080;">&nbsp;  */</span>
<span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #808080; font-weight: bold;">/*** Alarme OFF *****************************************/</span>
<span style="color: #0000ff;">void</span> alarmeOFF<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span> 
    <span style="color: #808080;">/*</span>
<span style="color: #808080;">&nbsp;   pixels.clear();</span>
<span style="color: #808080;">	  pixels.show(); </span>
<span style="color: #808080;">&nbsp;   digitalWrite(pinP1 , LOW);</span>
<span style="color: #808080;">&nbsp;   digitalWrite(pinP2 , LOW);</span>
<span style="color: #808080;">	  valarme = 0;</span>
<span style="color: #808080;">&nbsp;   */</span>
<span style="color: black;">&#125;</span></pre></td></tr></table></code><hr />
</div><br />
je precise que le choix de reveiller toutes 5 secondes l'ESP32 pour rafrachir si besoin l'ecran, a été fait car la gestion de l'interruption des capteurs  par le programme est très compliquéeà mettre en oeuvre <br />
pendant le sommeil les capteurs ne sont plus alimentés par le RTC , une bibliothèque spécale doit être utilsée et je n'y suis pas arrivé , j'ai donc choisi une autre approche peu gourmande en energie<br />
<br />
merci de m'avoir lu <br />
<br />
pascal</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f2094/general-developpement/programmation-systeme/embarque/arduino/">Arduino</category>
			<dc:creator>cobra38</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2184129/general-developpement/programmation-systeme/embarque/arduino/probleme-busy-timeout/</guid>
		</item>
		<item>
			<title>Programme Arduino - Thinkercad simulation volet roulant</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2183862&amp;goto=newpost</link>
			<pubDate>Sun, 24 May 2026 17:53:50 GMT</pubDate>
			<description>Bonjour, 
 
Je souhaite faire...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
Je souhaite faire une simulation pour un projet sur tinkercad d'un volet roulant equipé d'un capteur de luminosité .<br />
<br />
Le volet doit s'ouvrir et se fermer a partir d'un certain seuil lux (30 Lux par exemple) mais j'arrive pas a faire fonctionner le programme.<br />
<br />
J'etais partis sur un L293D  un moteur pour inversion de sens et 2 interrupteurs (fins de course point haut , point bas).<br />
<br />
Apres je voulais émuler les fins de course <br />
<br />
Avec quoi représenter au mieux cette simulation ? <br />
<br />
Merci Beaucoup</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f2094/general-developpement/programmation-systeme/embarque/arduino/">Arduino</category>
			<dc:creator>seb605151</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2183862/general-developpement/programmation-systeme/embarque/arduino/programme-arduino-thinkercad-simulation-volet-roulant/</guid>
		</item>
		<item>
			<title><![CDATA[[Arduino ESP32] ILI9341 affichage inversé]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2183809&amp;goto=newpost</link>
			<pubDate>Wed, 20 May 2026 16:13:10 GMT</pubDate>
			<description><![CDATA[Bonjour à tous , 
j'aurai...]]></description>
			<content:encoded><![CDATA[<div>Bonjour à tous ,<br />
j'aurai besoin de toute votre maestria pour me sortir de cette galère <br />
<br />
comme vous le voyez sur la photo jointe , l'affichage est inversé (en miroir) <br />
et je n'arrive pas à le remettre en paysage de la façon normale<br />
mon montage est le suivant :<br />
=&gt;&gt; un ESP32S3 et un écran ILI9341 avec SD <br />
<br />
le programme ci-dessous charge le croquis suivant pour initialiser l'écran <br />
j'y ai associé un extrait de la datasheet du ILI9341 <br />
<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="40"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br />84<br />85<br />86<br />87<br />88<br />89<br />90<br />91<br />92<br />93<br />94<br />95<br />96<br />97<br />98<br />99<br />100<br />101<br />102<br />103<br />104<br />105<br />106<br />107<br />108<br />109<br />110<br />111<br />112<br />113<br />114<br />115<br />116<br />117<br />118<br />119<br />120<br />121<br />122<br />123<br />124<br />125<br />126<br />127<br />128<br />129<br />130<br />131<br />132<br />133<br />134<br />135<br />136<br />137<br />138<br />139<br />140<br />141<br />142<br />143<br />144<br />145<br />146<br />147<br />148<br />149<br />150<br />151<br />152<br />153<br />154<br />155<br />156<br />157<br />158<br />159<br />160<br />161<br />162<br />163<br />164<br />165<br />166<br />167<br />168<br />169<br />170<br />171<br />172<br />173<br />174<br />175<br />176<br />177<br />178<br />179<br />180<br />181<br />182<br />183<br />184<br />185<br />186<br />187<br />188<br />189<br />190<br />191<br />192<br />193<br />194<br />195<br />196<br />197<br />198<br />199<br />200<br />201<br />202<br />203<br />204<br />205<br />206<br />207<br />208<br />209<br />210<br />211<br />212<br />213<br />214<br />215<br />216<br />217<br />218<br />219<br />220<br />221<br />222<br />223<br />224<br />225<br />226<br />227<br />228<br />229<br />230<br />231<br />232<br />233<br />234<br />235<br />236<br />237<br />238<br />239<br />240<br />241<br />242<br />243<br />244<br />245<br />246<br />247<br />248<br />249<br />250<br />251<br />252<br />253<br />254<br />255<br />256<br />257<br />258<br />259<br />260<br />261<br />262<br />263<br />264<br />265<br />266<br />267<br />268<br />269<br />270<br />271<br />272<br />273<br />274<br />275<br />276<br />277<br />278<br />279<br />280<br />281<br />282<br />283<br />284<br />285<br />286<br />287<br />288<br />289<br />290<br />291<br />292<br />293<br />294<br />295<br />296<br />297<br />298<br />299<br />300<br />301<br />302<br />303<br />304<br />305<br />306<br />307<br />308<br />309<br />310<br />311<br />312<br />313<br />314<br />315<br />316<br />317<br />318<br />319<br />320<br />321<br />322<br />323<br />324<br />325<br />326<br />327<br />328<br />329<br />330<br />331<br />332<br />333<br />334<br />335<br />336<br />337<br />338<br />339<br />340<br />341<br />342<br />343<br />344<br />345<br />346<br />347<br />348<br />349<br />350<br />351<br />352<br />353<br />354<br />355<br />356<br />357<br />358<br />359<br />360<br />361<br />362<br />363<br />364<br />365<br />366<br />367<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #339933;">#ifndef TFT_DRIVER_H</span>
<span style="color: #339933;">#define TFT_DRIVER_H</span>
&nbsp;
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;Arduino.h&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;SPI.h&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &quot;hw_config.h&quot;</span>
&nbsp;
<span style="color: #339933;">#define TFT_SWRESET   0x01</span>
<span style="color: #339933;">#define TFT_SLPOUT    0x11</span>
<span style="color: #339933;">#define TFT_COLMOD    0x3A</span>
<span style="color: #339933;">#define TFT_MADCTL    0x36</span>
<span style="color: #339933;">#define TFT_CASET     0x2A</span>
<span style="color: #339933;">#define TFT_RASET     0x2B</span>
<span style="color: #339933;">#define TFT_RAMWR     0x2C</span>
<span style="color: #339933;">#define TFT_DISPON    0x29</span>
<span style="color: #339933;">#define TFT_DISPOFF   0x28</span>
<span style="color: #339933;">#define TFT_INVON     0x21</span>
<span style="color: #339933;">#define TFT_INVOFF    0x20</span>
&nbsp;
<span style="color: #339933;">#define DISPLAY_WIDTH  280  </span>
<span style="color: #339933;">#define DISPLAY_HEIGHT 240</span>
&nbsp;
<span style="color: #339933;">#define ST7789_COL_OFFSET 20  &lt;====( affichage pr&eacute;vu initialement pour un ST7789 )</span>
&nbsp;
<span style="color: #339933;">#define TFT_BLACK   0x0000</span>
<span style="color: #339933;">#define TFT_WHITE   0xFFFF</span>
<span style="color: #339933;">#define TFT_RED     0xF800</span>
<span style="color: #339933;">#define TFT_GREEN   0x07E0</span>
<span style="color: #339933;">#define TFT_BLUE    0x001F</span>
&nbsp;
<span style="color: #0000ff;">static</span> <span style="color: #0000ff;">const</span> <span style="color: #0000ff;">uint8_t</span> font_5x7<span style="color: black;">&#91;</span><span style="color: black;">&#93;</span> <span style="color: #0080ff;">PROGMEM</span> = <span style="color: black;">&#123;</span>
    <span style="color: #cc66cc;">0x00</span>, <span style="color: #cc66cc;">0x00</span>, <span style="color: #cc66cc;">0x00</span>, <span style="color: #cc66cc;">0x00</span>, <span style="color: #cc66cc;">0x00</span>, <span style="color: #808080;">// 0x20 ' '</span>
    <span style="color: #cc66cc;">0x00</span>, <span style="color: #cc66cc;">0x00</span>, <span style="color: #cc66cc;">0x5F</span>, <span style="color: #cc66cc;">0x00</span>, <span style="color: #cc66cc;">0x00</span>, <span style="color: #808080;">// 0x21 '!'</span>
    <span style="color: #cc66cc;">0x00</span>, <span style="color: #cc66cc;">0x07</span>, <span style="color: #cc66cc;">0x00</span>, <span style="color: #cc66cc;">0x07</span>, <span style="color: #cc66cc;">0x00</span>, <span style="color: #808080;">// 0x22 '&quot;'</span>
    <span style="color: #cc66cc;">0x14</span>, <span style="color: #cc66cc;">0x7F</span>, <span style="color: #cc66cc;">0x14</span>, <span style="color: #cc66cc;">0x7F</span>, <span style="color: #cc66cc;">0x14</span>, <span style="color: #808080;">// 0x23 '#'</span>
    <span style="color: #cc66cc;">0x24</span>, <span style="color: #cc66cc;">0x2A</span>, <span style="color: #cc66cc;">0x7F</span>, <span style="color: #cc66cc;">0x2A</span>, <span style="color: #cc66cc;">0x12</span>, <span style="color: #808080;">// 0x24 '$'</span>
    <span style="color: #cc66cc;">0x23</span>, <span style="color: #cc66cc;">0x13</span>, <span style="color: #cc66cc;">0x08</span>, <span style="color: #cc66cc;">0x64</span>, <span style="color: #cc66cc;">0x62</span>, <span style="color: #808080;">// 0x25 '%'</span>
    <span style="color: #cc66cc;">0x36</span>, <span style="color: #cc66cc;">0x49</span>, <span style="color: #cc66cc;">0x55</span>, <span style="color: #cc66cc;">0x22</span>, <span style="color: #cc66cc;">0x50</span>, <span style="color: #808080;">// 0x26 '&amp;'</span>
    <span style="color: #cc66cc;">0x00</span>, <span style="color: #cc66cc;">0x05</span>, <span style="color: #cc66cc;">0x03</span>, <span style="color: #cc66cc;">0x00</span>, <span style="color: #cc66cc;">0x00</span>, <span style="color: #808080;">// 0x27 '''</span>
    <span style="color: #cc66cc;">0x00</span>, <span style="color: #cc66cc;">0x1C</span>, <span style="color: #cc66cc;">0x22</span>, <span style="color: #cc66cc;">0x41</span>, <span style="color: #cc66cc;">0x00</span>, <span style="color: #808080;">// 0x28 '('</span>
    <span style="color: #cc66cc;">0x00</span>, <span style="color: #cc66cc;">0x41</span>, <span style="color: #cc66cc;">0x22</span>, <span style="color: #cc66cc;">0x1C</span>, <span style="color: #cc66cc;">0x00</span>, <span style="color: #808080;">// 0x29 ')'</span>
    <span style="color: #cc66cc;">0x14</span>, <span style="color: #cc66cc;">0x08</span>, <span style="color: #cc66cc;">0x3E</span>, <span style="color: #cc66cc;">0x08</span>, <span style="color: #cc66cc;">0x14</span>, <span style="color: #808080;">// 0x2A '*'</span>
    <span style="color: #cc66cc;">0x08</span>, <span style="color: #cc66cc;">0x08</span>, <span style="color: #cc66cc;">0x3E</span>, <span style="color: #cc66cc;">0x08</span>, <span style="color: #cc66cc;">0x08</span>, <span style="color: #808080;">// 0x2B '+'</span>
    <span style="color: #cc66cc;">0x00</span>, <span style="color: #cc66cc;">0x50</span>, <span style="color: #cc66cc;">0x30</span>, <span style="color: #cc66cc;">0x00</span>, <span style="color: #cc66cc;">0x00</span>, <span style="color: #808080;">// 0x2C ','</span>
    <span style="color: #cc66cc;">0x08</span>, <span style="color: #cc66cc;">0x08</span>, <span style="color: #cc66cc;">0x08</span>, <span style="color: #cc66cc;">0x08</span>, <span style="color: #cc66cc;">0x08</span>, <span style="color: #808080;">// 0x2D '-'</span>
    <span style="color: #cc66cc;">0x00</span>, <span style="color: #cc66cc;">0x60</span>, <span style="color: #cc66cc;">0x60</span>, <span style="color: #cc66cc;">0x00</span>, <span style="color: #cc66cc;">0x00</span>, <span style="color: #808080;">// 0x2E '.'</span>
    <span style="color: #cc66cc;">0x20</span>, <span style="color: #cc66cc;">0x10</span>, <span style="color: #cc66cc;">0x08</span>, <span style="color: #cc66cc;">0x04</span>, <span style="color: #cc66cc;">0x02</span>, <span style="color: #808080;">// 0x2F '/'</span>
    <span style="color: #cc66cc;">0x3E</span>, <span style="color: #cc66cc;">0x51</span>, <span style="color: #cc66cc;">0x49</span>, <span style="color: #cc66cc;">0x45</span>, <span style="color: #cc66cc;">0x3E</span>, <span style="color: #808080;">// 0x30 '0'</span>
    <span style="color: #cc66cc;">0x00</span>, <span style="color: #cc66cc;">0x42</span>, <span style="color: #cc66cc;">0x7F</span>, <span style="color: #cc66cc;">0x40</span>, <span style="color: #cc66cc;">0x00</span>, <span style="color: #808080;">// 0x31 '1'</span>
    <span style="color: #cc66cc;">0x42</span>, <span style="color: #cc66cc;">0x61</span>, <span style="color: #cc66cc;">0x51</span>, <span style="color: #cc66cc;">0x49</span>, <span style="color: #cc66cc;">0x46</span>, <span style="color: #808080;">// 0x32 '2'</span>
    <span style="color: #cc66cc;">0x21</span>, <span style="color: #cc66cc;">0x41</span>, <span style="color: #cc66cc;">0x45</span>, <span style="color: #cc66cc;">0x4B</span>, <span style="color: #cc66cc;">0x31</span>, <span style="color: #808080;">// 0x33 '3'</span>
    <span style="color: #cc66cc;">0x18</span>, <span style="color: #cc66cc;">0x14</span>, <span style="color: #cc66cc;">0x12</span>, <span style="color: #cc66cc;">0x7F</span>, <span style="color: #cc66cc;">0x10</span>, <span style="color: #808080;">// 0x34 '4'</span>
    <span style="color: #cc66cc;">0x27</span>, <span style="color: #cc66cc;">0x45</span>, <span style="color: #cc66cc;">0x45</span>, <span style="color: #cc66cc;">0x45</span>, <span style="color: #cc66cc;">0x39</span>, <span style="color: #808080;">// 0x35 '5'</span>
    <span style="color: #cc66cc;">0x3C</span>, <span style="color: #cc66cc;">0x4A</span>, <span style="color: #cc66cc;">0x49</span>, <span style="color: #cc66cc;">0x49</span>, <span style="color: #cc66cc;">0x30</span>, <span style="color: #808080;">// 0x36 '6'</span>
    <span style="color: #cc66cc;">0x01</span>, <span style="color: #cc66cc;">0x71</span>, <span style="color: #cc66cc;">0x09</span>, <span style="color: #cc66cc;">0x05</span>, <span style="color: #cc66cc;">0x03</span>, <span style="color: #808080;">// 0x37 '7'</span>
    <span style="color: #cc66cc;">0x36</span>, <span style="color: #cc66cc;">0x49</span>, <span style="color: #cc66cc;">0x49</span>, <span style="color: #cc66cc;">0x49</span>, <span style="color: #cc66cc;">0x36</span>, <span style="color: #808080;">// 0x38 '8'</span>
    <span style="color: #cc66cc;">0x06</span>, <span style="color: #cc66cc;">0x49</span>, <span style="color: #cc66cc;">0x49</span>, <span style="color: #cc66cc;">0x29</span>, <span style="color: #cc66cc;">0x1E</span>, <span style="color: #808080;">// 0x39 '9'</span>
    <span style="color: #cc66cc;">0x00</span>, <span style="color: #cc66cc;">0x36</span>, <span style="color: #cc66cc;">0x36</span>, <span style="color: #cc66cc;">0x00</span>, <span style="color: #cc66cc;">0x00</span>, <span style="color: #808080;">// 0x3A ':'</span>
    <span style="color: #cc66cc;">0x00</span>, <span style="color: #cc66cc;">0x56</span>, <span style="color: #cc66cc;">0x36</span>, <span style="color: #cc66cc;">0x00</span>, <span style="color: #cc66cc;">0x00</span>, <span style="color: #808080;">// 0x3B ';'</span>
    <span style="color: #cc66cc;">0x08</span>, <span style="color: #cc66cc;">0x14</span>, <span style="color: #cc66cc;">0x22</span>, <span style="color: #cc66cc;">0x41</span>, <span style="color: #cc66cc;">0x00</span>, <span style="color: #808080;">// 0x3C '&lt;'</span>
    <span style="color: #cc66cc;">0x14</span>, <span style="color: #cc66cc;">0x14</span>, <span style="color: #cc66cc;">0x14</span>, <span style="color: #cc66cc;">0x14</span>, <span style="color: #cc66cc;">0x14</span>, <span style="color: #808080;">// 0x3D '='</span>
    <span style="color: #cc66cc;">0x00</span>, <span style="color: #cc66cc;">0x41</span>, <span style="color: #cc66cc;">0x22</span>, <span style="color: #cc66cc;">0x14</span>, <span style="color: #cc66cc;">0x08</span>, <span style="color: #808080;">// 0x3E '&gt;'</span>
    <span style="color: #cc66cc;">0x02</span>, <span style="color: #cc66cc;">0x01</span>, <span style="color: #cc66cc;">0x51</span>, <span style="color: #cc66cc;">0x09</span>, <span style="color: #cc66cc;">0x06</span>, <span style="color: #808080;">// 0x3F '?'</span>
    <span style="color: #cc66cc;">0x32</span>, <span style="color: #cc66cc;">0x49</span>, <span style="color: #cc66cc;">0x79</span>, <span style="color: #cc66cc;">0x41</span>, <span style="color: #cc66cc;">0x3E</span>, <span style="color: #808080;">// 0x40 '@'</span>
    <span style="color: #cc66cc;">0x7E</span>, <span style="color: #cc66cc;">0x11</span>, <span style="color: #cc66cc;">0x11</span>, <span style="color: #cc66cc;">0x11</span>, <span style="color: #cc66cc;">0x7E</span>, <span style="color: #808080;">// 0x41 'A'</span>
    <span style="color: #cc66cc;">0x7F</span>, <span style="color: #cc66cc;">0x49</span>, <span style="color: #cc66cc;">0x49</span>, <span style="color: #cc66cc;">0x49</span>, <span style="color: #cc66cc;">0x36</span>, <span style="color: #808080;">// 0x42 'B'</span>
    <span style="color: #cc66cc;">0x3E</span>, <span style="color: #cc66cc;">0x41</span>, <span style="color: #cc66cc;">0x41</span>, <span style="color: #cc66cc;">0x41</span>, <span style="color: #cc66cc;">0x22</span>, <span style="color: #808080;">// 0x43 'C'</span>
    <span style="color: #cc66cc;">0x7F</span>, <span style="color: #cc66cc;">0x41</span>, <span style="color: #cc66cc;">0x41</span>, <span style="color: #cc66cc;">0x22</span>, <span style="color: #cc66cc;">0x1C</span>, <span style="color: #808080;">// 0x44 'D'</span>
    <span style="color: #cc66cc;">0x7F</span>, <span style="color: #cc66cc;">0x49</span>, <span style="color: #cc66cc;">0x49</span>, <span style="color: #cc66cc;">0x49</span>, <span style="color: #cc66cc;">0x41</span>, <span style="color: #808080;">// 0x45 'E'</span>
    <span style="color: #cc66cc;">0x7F</span>, <span style="color: #cc66cc;">0x09</span>, <span style="color: #cc66cc;">0x09</span>, <span style="color: #cc66cc;">0x09</span>, <span style="color: #cc66cc;">0x01</span>, <span style="color: #808080;">// 0x46 'F'</span>
    <span style="color: #cc66cc;">0x3E</span>, <span style="color: #cc66cc;">0x41</span>, <span style="color: #cc66cc;">0x49</span>, <span style="color: #cc66cc;">0x49</span>, <span style="color: #cc66cc;">0x7A</span>, <span style="color: #808080;">// 0x47 'G'</span>
    <span style="color: #cc66cc;">0x7F</span>, <span style="color: #cc66cc;">0x08</span>, <span style="color: #cc66cc;">0x08</span>, <span style="color: #cc66cc;">0x08</span>, <span style="color: #cc66cc;">0x7F</span>, <span style="color: #808080;">// 0x48 'H'</span>
    <span style="color: #cc66cc;">0x00</span>, <span style="color: #cc66cc;">0x41</span>, <span style="color: #cc66cc;">0x7F</span>, <span style="color: #cc66cc;">0x41</span>, <span style="color: #cc66cc;">0x00</span>, <span style="color: #808080;">// 0x49 'I'</span>
    <span style="color: #cc66cc;">0x20</span>, <span style="color: #cc66cc;">0x40</span>, <span style="color: #cc66cc;">0x41</span>, <span style="color: #cc66cc;">0x3F</span>, <span style="color: #cc66cc;">0x01</span>, <span style="color: #808080;">// 0x4A 'J'</span>
    <span style="color: #cc66cc;">0x7F</span>, <span style="color: #cc66cc;">0x08</span>, <span style="color: #cc66cc;">0x14</span>, <span style="color: #cc66cc;">0x22</span>, <span style="color: #cc66cc;">0x41</span>, <span style="color: #808080;">// 0x4B 'K'</span>
    <span style="color: #cc66cc;">0x7F</span>, <span style="color: #cc66cc;">0x40</span>, <span style="color: #cc66cc;">0x40</span>, <span style="color: #cc66cc;">0x40</span>, <span style="color: #cc66cc;">0x40</span>, <span style="color: #808080;">// 0x4C 'L'</span>
    <span style="color: #cc66cc;">0x7F</span>, <span style="color: #cc66cc;">0x02</span>, <span style="color: #cc66cc;">0x0C</span>, <span style="color: #cc66cc;">0x02</span>, <span style="color: #cc66cc;">0x7F</span>, <span style="color: #808080;">// 0x4D 'M'</span>
    <span style="color: #cc66cc;">0x7F</span>, <span style="color: #cc66cc;">0x04</span>, <span style="color: #cc66cc;">0x08</span>, <span style="color: #cc66cc;">0x10</span>, <span style="color: #cc66cc;">0x7F</span>, <span style="color: #808080;">// 0x4E 'N'</span>
    <span style="color: #cc66cc;">0x3E</span>, <span style="color: #cc66cc;">0x41</span>, <span style="color: #cc66cc;">0x41</span>, <span style="color: #cc66cc;">0x41</span>, <span style="color: #cc66cc;">0x3E</span>, <span style="color: #808080;">// 0x4F 'O'</span>
    <span style="color: #cc66cc;">0x7F</span>, <span style="color: #cc66cc;">0x09</span>, <span style="color: #cc66cc;">0x09</span>, <span style="color: #cc66cc;">0x09</span>, <span style="color: #cc66cc;">0x06</span>, <span style="color: #808080;">// 0x50 'P'</span>
    <span style="color: #cc66cc;">0x3E</span>, <span style="color: #cc66cc;">0x41</span>, <span style="color: #cc66cc;">0x51</span>, <span style="color: #cc66cc;">0x21</span>, <span style="color: #cc66cc;">0x5E</span>, <span style="color: #808080;">// 0x51 'Q'</span>
    <span style="color: #cc66cc;">0x7F</span>, <span style="color: #cc66cc;">0x09</span>, <span style="color: #cc66cc;">0x19</span>, <span style="color: #cc66cc;">0x29</span>, <span style="color: #cc66cc;">0x46</span>, <span style="color: #808080;">// 0x52 'R'</span>
    <span style="color: #cc66cc;">0x46</span>, <span style="color: #cc66cc;">0x49</span>, <span style="color: #cc66cc;">0x49</span>, <span style="color: #cc66cc;">0x49</span>, <span style="color: #cc66cc;">0x31</span>, <span style="color: #808080;">// 0x53 'S'</span>
    <span style="color: #cc66cc;">0x01</span>, <span style="color: #cc66cc;">0x01</span>, <span style="color: #cc66cc;">0x7F</span>, <span style="color: #cc66cc;">0x01</span>, <span style="color: #cc66cc;">0x01</span>, <span style="color: #808080;">// 0x54 'T'</span>
    <span style="color: #cc66cc;">0x3F</span>, <span style="color: #cc66cc;">0x40</span>, <span style="color: #cc66cc;">0x40</span>, <span style="color: #cc66cc;">0x40</span>, <span style="color: #cc66cc;">0x3F</span>, <span style="color: #808080;">// 0x55 'U'</span>
    <span style="color: #cc66cc;">0x1F</span>, <span style="color: #cc66cc;">0x20</span>, <span style="color: #cc66cc;">0x40</span>, <span style="color: #cc66cc;">0x20</span>, <span style="color: #cc66cc;">0x1F</span>, <span style="color: #808080;">// 0x56 'V'</span>
    <span style="color: #cc66cc;">0x7F</span>, <span style="color: #cc66cc;">0x20</span>, <span style="color: #cc66cc;">0x18</span>, <span style="color: #cc66cc;">0x20</span>, <span style="color: #cc66cc;">0x7F</span>, <span style="color: #808080;">// 0x57 'W'</span>
    <span style="color: #cc66cc;">0x63</span>, <span style="color: #cc66cc;">0x14</span>, <span style="color: #cc66cc;">0x08</span>, <span style="color: #cc66cc;">0x14</span>, <span style="color: #cc66cc;">0x63</span>, <span style="color: #808080;">// 0x58 'X'</span>
    <span style="color: #cc66cc;">0x03</span>, <span style="color: #cc66cc;">0x04</span>, <span style="color: #cc66cc;">0x78</span>, <span style="color: #cc66cc;">0x04</span>, <span style="color: #cc66cc;">0x03</span>, <span style="color: #808080;">// 0x59 'Y'</span>
    <span style="color: #cc66cc;">0x61</span>, <span style="color: #cc66cc;">0x51</span>, <span style="color: #cc66cc;">0x49</span>, <span style="color: #cc66cc;">0x45</span>, <span style="color: #cc66cc;">0x43</span>, <span style="color: #808080;">// 0x5A 'Z'</span>
    <span style="color: #cc66cc;">0x00</span>, <span style="color: #cc66cc;">0x7F</span>, <span style="color: #cc66cc;">0x41</span>, <span style="color: #cc66cc;">0x41</span>, <span style="color: #cc66cc;">0x00</span>, <span style="color: #808080;">// 0x5B '['</span>
    <span style="color: #cc66cc;">0x02</span>, <span style="color: #cc66cc;">0x04</span>, <span style="color: #cc66cc;">0x08</span>, <span style="color: #cc66cc;">0x10</span>, <span style="color: #cc66cc;">0x20</span>, <span style="color: #808080;">// 0x5C '\'</span>
    <span style="color: #cc66cc;">0x00</span>, <span style="color: #cc66cc;">0x41</span>, <span style="color: #cc66cc;">0x41</span>, <span style="color: #cc66cc;">0x7F</span>, <span style="color: #cc66cc;">0x00</span>, <span style="color: #808080;">// 0x5D ']'</span>
    <span style="color: #cc66cc;">0x04</span>, <span style="color: #cc66cc;">0x02</span>, <span style="color: #cc66cc;">0x01</span>, <span style="color: #cc66cc;">0x02</span>, <span style="color: #cc66cc;">0x04</span>, <span style="color: #808080;">// 0x5E '^'</span>
    <span style="color: #cc66cc;">0x40</span>, <span style="color: #cc66cc;">0x40</span>, <span style="color: #cc66cc;">0x40</span>, <span style="color: #cc66cc;">0x40</span>, <span style="color: #cc66cc;">0x40</span>, <span style="color: #808080;">// 0x5F '_'</span>
    <span style="color: #cc66cc;">0x00</span>, <span style="color: #cc66cc;">0x01</span>, <span style="color: #cc66cc;">0x02</span>, <span style="color: #cc66cc;">0x04</span>, <span style="color: #cc66cc;">0x00</span>, <span style="color: #808080;">// 0x60 '`'</span>
    <span style="color: #cc66cc;">0x20</span>, <span style="color: #cc66cc;">0x54</span>, <span style="color: #cc66cc;">0x54</span>, <span style="color: #cc66cc;">0x54</span>, <span style="color: #cc66cc;">0x78</span>, <span style="color: #808080;">// 0x61 'a'</span>
    <span style="color: #cc66cc;">0x7F</span>, <span style="color: #cc66cc;">0x48</span>, <span style="color: #cc66cc;">0x44</span>, <span style="color: #cc66cc;">0x44</span>, <span style="color: #cc66cc;">0x38</span>, <span style="color: #808080;">// 0x62 'b'</span>
    <span style="color: #cc66cc;">0x38</span>, <span style="color: #cc66cc;">0x44</span>, <span style="color: #cc66cc;">0x44</span>, <span style="color: #cc66cc;">0x44</span>, <span style="color: #cc66cc;">0x20</span>, <span style="color: #808080;">// 0x63 'c'</span>
    <span style="color: #cc66cc;">0x38</span>, <span style="color: #cc66cc;">0x44</span>, <span style="color: #cc66cc;">0x44</span>, <span style="color: #cc66cc;">0x48</span>, <span style="color: #cc66cc;">0x7F</span>, <span style="color: #808080;">// 0x64 'd'</span>
    <span style="color: #cc66cc;">0x38</span>, <span style="color: #cc66cc;">0x54</span>, <span style="color: #cc66cc;">0x54</span>, <span style="color: #cc66cc;">0x54</span>, <span style="color: #cc66cc;">0x18</span>, <span style="color: #808080;">// 0x65 'e'</span>
    <span style="color: #cc66cc;">0x08</span>, <span style="color: #cc66cc;">0x7E</span>, <span style="color: #cc66cc;">0x09</span>, <span style="color: #cc66cc;">0x01</span>, <span style="color: #cc66cc;">0x02</span>, <span style="color: #808080;">// 0x66 'f'</span>
    <span style="color: #cc66cc;">0x0C</span>, <span style="color: #cc66cc;">0x52</span>, <span style="color: #cc66cc;">0x52</span>, <span style="color: #cc66cc;">0x52</span>, <span style="color: #cc66cc;">0x3E</span>, <span style="color: #808080;">// 0x67 'g'</span>
    <span style="color: #cc66cc;">0x7F</span>, <span style="color: #cc66cc;">0x08</span>, <span style="color: #cc66cc;">0x04</span>, <span style="color: #cc66cc;">0x04</span>, <span style="color: #cc66cc;">0x78</span>, <span style="color: #808080;">// 0x68 'h'</span>
    <span style="color: #cc66cc;">0x00</span>, <span style="color: #cc66cc;">0x44</span>, <span style="color: #cc66cc;">0x7D</span>, <span style="color: #cc66cc;">0x40</span>, <span style="color: #cc66cc;">0x00</span>, <span style="color: #808080;">// 0x69 'i'</span>
    <span style="color: #cc66cc;">0x20</span>, <span style="color: #cc66cc;">0x40</span>, <span style="color: #cc66cc;">0x44</span>, <span style="color: #cc66cc;">0x3D</span>, <span style="color: #cc66cc;">0x00</span>, <span style="color: #808080;">// 0x6A 'j'</span>
    <span style="color: #cc66cc;">0x7F</span>, <span style="color: #cc66cc;">0x10</span>, <span style="color: #cc66cc;">0x28</span>, <span style="color: #cc66cc;">0x44</span>, <span style="color: #cc66cc;">0x00</span>, <span style="color: #808080;">// 0x6B 'k'</span>
    <span style="color: #cc66cc;">0x00</span>, <span style="color: #cc66cc;">0x41</span>, <span style="color: #cc66cc;">0x7F</span>, <span style="color: #cc66cc;">0x40</span>, <span style="color: #cc66cc;">0x00</span>, <span style="color: #808080;">// 0x6C 'l'</span>
    <span style="color: #cc66cc;">0x7C</span>, <span style="color: #cc66cc;">0x04</span>, <span style="color: #cc66cc;">0x18</span>, <span style="color: #cc66cc;">0x04</span>, <span style="color: #cc66cc;">0x78</span>, <span style="color: #808080;">// 0x6D 'm'</span>
    <span style="color: #cc66cc;">0x7C</span>, <span style="color: #cc66cc;">0x08</span>, <span style="color: #cc66cc;">0x04</span>, <span style="color: #cc66cc;">0x04</span>, <span style="color: #cc66cc;">0x78</span>, <span style="color: #808080;">// 0x6E 'n'</span>
    <span style="color: #cc66cc;">0x38</span>, <span style="color: #cc66cc;">0x44</span>, <span style="color: #cc66cc;">0x44</span>, <span style="color: #cc66cc;">0x44</span>, <span style="color: #cc66cc;">0x38</span>, <span style="color: #808080;">// 0x6F 'o'</span>
    <span style="color: #cc66cc;">0x7C</span>, <span style="color: #cc66cc;">0x14</span>, <span style="color: #cc66cc;">0x14</span>, <span style="color: #cc66cc;">0x14</span>, <span style="color: #cc66cc;">0x08</span>, <span style="color: #808080;">// 0x70 'p'</span>
    <span style="color: #cc66cc;">0x08</span>, <span style="color: #cc66cc;">0x14</span>, <span style="color: #cc66cc;">0x14</span>, <span style="color: #cc66cc;">0x18</span>, <span style="color: #cc66cc;">0x7C</span>, <span style="color: #808080;">// 0x71 'q'</span>
    <span style="color: #cc66cc;">0x7C</span>, <span style="color: #cc66cc;">0x08</span>, <span style="color: #cc66cc;">0x04</span>, <span style="color: #cc66cc;">0x04</span>, <span style="color: #cc66cc;">0x08</span>, <span style="color: #808080;">// 0x72 'r'</span>
    <span style="color: #cc66cc;">0x48</span>, <span style="color: #cc66cc;">0x54</span>, <span style="color: #cc66cc;">0x54</span>, <span style="color: #cc66cc;">0x54</span>, <span style="color: #cc66cc;">0x20</span>, <span style="color: #808080;">// 0x73 's'</span>
    <span style="color: #cc66cc;">0x04</span>, <span style="color: #cc66cc;">0x3F</span>, <span style="color: #cc66cc;">0x44</span>, <span style="color: #cc66cc;">0x40</span>, <span style="color: #cc66cc;">0x20</span>, <span style="color: #808080;">// 0x74 't'</span>
    <span style="color: #cc66cc;">0x3C</span>, <span style="color: #cc66cc;">0x40</span>, <span style="color: #cc66cc;">0x40</span>, <span style="color: #cc66cc;">0x20</span>, <span style="color: #cc66cc;">0x7C</span>, <span style="color: #808080;">// 0x75 'u'</span>
    <span style="color: #cc66cc;">0x1C</span>, <span style="color: #cc66cc;">0x20</span>, <span style="color: #cc66cc;">0x40</span>, <span style="color: #cc66cc;">0x20</span>, <span style="color: #cc66cc;">0x1C</span>, <span style="color: #808080;">// 0x76 'v'</span>
    <span style="color: #cc66cc;">0x3C</span>, <span style="color: #cc66cc;">0x40</span>, <span style="color: #cc66cc;">0x30</span>, <span style="color: #cc66cc;">0x40</span>, <span style="color: #cc66cc;">0x3C</span>, <span style="color: #808080;">// 0x77 'w'</span>
    <span style="color: #cc66cc;">0x44</span>, <span style="color: #cc66cc;">0x28</span>, <span style="color: #cc66cc;">0x10</span>, <span style="color: #cc66cc;">0x28</span>, <span style="color: #cc66cc;">0x44</span>, <span style="color: #808080;">// 0x78 'x'</span>
    <span style="color: #cc66cc;">0x0C</span>, <span style="color: #cc66cc;">0x50</span>, <span style="color: #cc66cc;">0x50</span>, <span style="color: #cc66cc;">0x50</span>, <span style="color: #cc66cc;">0x3C</span>, <span style="color: #808080;">// 0x79 'y'</span>
    <span style="color: #cc66cc;">0x44</span>, <span style="color: #cc66cc;">0x64</span>, <span style="color: #cc66cc;">0x54</span>, <span style="color: #cc66cc;">0x4C</span>, <span style="color: #cc66cc;">0x44</span>, <span style="color: #808080;">// 0x7A 'z'</span>
    <span style="color: #cc66cc;">0x00</span>, <span style="color: #cc66cc;">0x08</span>, <span style="color: #cc66cc;">0x36</span>, <span style="color: #cc66cc;">0x41</span>, <span style="color: #cc66cc;">0x00</span>, <span style="color: #808080;">// 0x7B '{'</span>
    <span style="color: #cc66cc;">0x00</span>, <span style="color: #cc66cc;">0x00</span>, <span style="color: #cc66cc;">0x7F</span>, <span style="color: #cc66cc;">0x00</span>, <span style="color: #cc66cc;">0x00</span>, <span style="color: #808080;">// 0x7C '|'</span>
    <span style="color: #cc66cc;">0x00</span>, <span style="color: #cc66cc;">0x41</span>, <span style="color: #cc66cc;">0x36</span>, <span style="color: #cc66cc;">0x08</span>, <span style="color: #cc66cc;">0x00</span>, <span style="color: #808080;">// 0x7D '}'</span>
    <span style="color: #cc66cc;">0x10</span>, <span style="color: #cc66cc;">0x08</span>, <span style="color: #cc66cc;">0x08</span>, <span style="color: #cc66cc;">0x10</span>, <span style="color: #cc66cc;">0x08</span>, <span style="color: #808080;">// 0x7E '~'</span>
    <span style="color: #cc66cc;">0x00</span>, <span style="color: #cc66cc;">0x00</span>, <span style="color: #cc66cc;">0x00</span>, <span style="color: #cc66cc;">0x00</span>, <span style="color: #cc66cc;">0x00</span>  <span style="color: #808080;">// 0x7F DEL</span>
<span style="color: black;">&#125;</span>;
&nbsp;
<span style="color: #0000ff;">class</span> TFTDriver <span style="color: black;">&#123;</span>
<span style="color: #0000ff;">private</span>:
    <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">constexpr</span> <span style="color: #0000ff;">int</span> TFT_DC = <span style="color: #cc66cc;">15</span>;
    <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">constexpr</span> <span style="color: #0000ff;">int</span> TFT_RST = <span style="color: #cc66cc;">9</span>;
    <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">constexpr</span> <span style="color: #0000ff;">int</span> TFT_CS = <span style="color: #cc66cc;">10</span>;
    <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">constexpr</span> <span style="color: #0000ff;">int</span> TFT_SCK = <span style="color: #cc66cc;">12</span>;
    <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">constexpr</span> <span style="color: #0000ff;">int</span> TFT_MOSI = <span style="color: #cc66cc;">11</span>;
    <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">constexpr</span> <span style="color: #0000ff;">int</span> TFT_MISO = -<span style="color: #cc66cc;">1</span>;
&nbsp;
    <span style="color: #0000ff;">void</span> spi_write_cmd<span style="color: black;">&#40;</span><span style="color: #0000ff;">uint8_t</span> cmd<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
        <span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>TFT_CS, <span style="color: #0080ff;">LOW</span><span style="color: black;">&#41;</span>;
        <span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>TFT_DC, <span style="color: #0080ff;">LOW</span><span style="color: black;">&#41;</span>;  
        SPI.write<span style="color: black;">&#40;</span>cmd<span style="color: black;">&#41;</span>;
        <span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>TFT_DC, <span style="color: #0080ff;">HIGH</span><span style="color: black;">&#41;</span>;
        <span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>TFT_CS, <span style="color: #0080ff;">HIGH</span><span style="color: black;">&#41;</span>;
    <span style="color: black;">&#125;</span>
&nbsp;
    <span style="color: #0000ff;">void</span> spi_write_byte<span style="color: black;">&#40;</span><span style="color: #0000ff;">uint8_t</span> data<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
        <span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>TFT_CS, <span style="color: #0080ff;">LOW</span><span style="color: black;">&#41;</span>;
        <span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>TFT_DC, <span style="color: #0080ff;">HIGH</span><span style="color: black;">&#41;</span>;  
        SPI.write<span style="color: black;">&#40;</span>data<span style="color: black;">&#41;</span>;
        <span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>TFT_CS, <span style="color: #0080ff;">HIGH</span><span style="color: black;">&#41;</span>;
    <span style="color: black;">&#125;</span>
&nbsp;
    <span style="color: #0000ff;">void</span> spi_write_word<span style="color: black;">&#40;</span><span style="color: #0000ff;">uint16_t</span> data<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
        <span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>TFT_CS, <span style="color: #0080ff;">LOW</span><span style="color: black;">&#41;</span>;
        <span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>TFT_DC, <span style="color: #0080ff;">HIGH</span><span style="color: black;">&#41;</span>; 
        SPI.write16<span style="color: black;">&#40;</span>data<span style="color: black;">&#41;</span>;
        <span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>TFT_CS, <span style="color: #0080ff;">HIGH</span><span style="color: black;">&#41;</span>;
    <span style="color: black;">&#125;</span>
  <span style="color: #0000ff;">public</span>:
    TFTDriver<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span><span style="color: black;">&#125;</span>
&nbsp;
    <span style="color: #0000ff;">void</span> init<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
        <span style="color: #0080ff;">pinMode</span><span style="color: black;">&#40;</span>TFT_DC, <span style="color: #0080ff;">OUTPUT</span><span style="color: black;">&#41;</span>;
        <span style="color: #0080ff;">pinMode</span><span style="color: black;">&#40;</span>TFT_RST, <span style="color: #0080ff;">OUTPUT</span><span style="color: black;">&#41;</span>;
        <span style="color: #0080ff;">pinMode</span><span style="color: black;">&#40;</span>TFT_CS, <span style="color: #0080ff;">OUTPUT</span><span style="color: black;">&#41;</span>;
&nbsp;
        <span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>TFT_CS, <span style="color: #0080ff;">HIGH</span><span style="color: black;">&#41;</span>;
        <span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>TFT_DC, <span style="color: #0080ff;">HIGH</span><span style="color: black;">&#41;</span>;
&nbsp;
        SPI.begin<span style="color: black;">&#40;</span>TFT_SCK, TFT_MISO, TFT_MOSI, TFT_CS<span style="color: black;">&#41;</span>;
        SPI.setFrequency<span style="color: black;">&#40;</span><span style="color: #cc66cc;">80000000</span><span style="color: black;">&#41;</span>;
	<span style="color: #808080;">//SPI.setFrequency(40000000);</span>
        SPI.setDataMode<span style="color: black;">&#40;</span>SPI_MODE0<span style="color: black;">&#41;</span>;
        SPI.setBitOrder<span style="color: black;">&#40;</span>MSBFIRST<span style="color: black;">&#41;</span>;
&nbsp;
        <span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>TFT_RST, <span style="color: #0080ff;">HIGH</span><span style="color: black;">&#41;</span>;
        <span style="color: #0080ff;">delay</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">30</span><span style="color: black;">&#41;</span>;
        <span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>TFT_RST, <span style="color: #0080ff;">LOW</span><span style="color: black;">&#41;</span>;
        <span style="color: #0080ff;">delay</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">30</span><span style="color: black;">&#41;</span>;
        <span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>TFT_RST, <span style="color: #0080ff;">HIGH</span><span style="color: black;">&#41;</span>;
        <span style="color: #0080ff;">delay</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">30</span><span style="color: black;">&#41;</span>;
&nbsp;
        spi_write_cmd<span style="color: black;">&#40;</span>TFT_SWRESET<span style="color: black;">&#41;</span>;
        <span style="color: #0080ff;">delay</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">30</span><span style="color: black;">&#41;</span>;
&nbsp;
        spi_write_cmd<span style="color: black;">&#40;</span>TFT_SLPOUT<span style="color: black;">&#41;</span>;
        <span style="color: #0080ff;">delay</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">50</span><span style="color: black;">&#41;</span>;
&nbsp;
        spi_write_cmd<span style="color: black;">&#40;</span>TFT_COLMOD<span style="color: black;">&#41;</span>;
        spi_write_byte<span style="color: black;">&#40;</span><span style="color: #cc66cc;">0x55</span><span style="color: black;">&#41;</span>;  
&nbsp;
        <span style="color: #0080ff;">delay</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">5</span><span style="color: black;">&#41;</span>;
&nbsp;
        spi_write_cmd<span style="color: black;">&#40;</span>TFT_MADCTL<span style="color: black;">&#41;</span>;
        <span style="color: #808080;">//spi_write_byte(0x60);  // Landscape: rotate 90&deg;        &lt;====== valeur d'origine </span>
	spi_write_byte<span style="color: black;">&#40;</span><span style="color: #cc66cc;">0x70</span><span style="color: black;">&#41;</span>;  <span style="color: #808080;">// &lt;==== test </span>
        <span style="color: #0080ff;">delay</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">5</span><span style="color: black;">&#41;</span>;
&nbsp;
        spi_write_cmd<span style="color: black;">&#40;</span>TFT_CASET<span style="color: black;">&#41;</span>;
        spi_write_cmd<span style="color: black;">&#40;</span>TFT_RASET<span style="color: black;">&#41;</span>;
        <span style="color: #0080ff;">delay</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">5</span><span style="color: black;">&#41;</span>;
&nbsp;
        fillScreen<span style="color: black;">&#40;</span>TFT_BLACK<span style="color: black;">&#41;</span>;
        <span style="color: #0080ff;">delay</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">20</span><span style="color: black;">&#41;</span>;
&nbsp;
        spi_write_cmd<span style="color: black;">&#40;</span>TFT_DISPON<span style="color: black;">&#41;</span>;
        <span style="color: #0080ff;">delay</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">50</span><span style="color: black;">&#41;</span>;
&nbsp;
        spi_write_cmd<span style="color: black;">&#40;</span>TFT_INVOFF<span style="color: black;">&#41;</span>;
        <span style="color: #0080ff;">delay</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">10</span><span style="color: black;">&#41;</span>;
&nbsp;
    <span style="color: black;">&#125;</span>
&nbsp;
    <span style="color: #0000ff;">void</span> fillScreen<span style="color: black;">&#40;</span><span style="color: #0000ff;">uint16_t</span> color<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
        spi_write_cmd<span style="color: black;">&#40;</span>TFT_CASET<span style="color: black;">&#41;</span>;
        spi_write_word<span style="color: black;">&#40;</span>ST7789_COL_OFFSET<span style="color: black;">&#41;</span>;
        spi_write_word<span style="color: black;">&#40;</span>ST7789_COL_OFFSET + DISPLAY_WIDTH - <span style="color: #cc66cc;">1</span><span style="color: black;">&#41;</span>;
&nbsp;
        spi_write_cmd<span style="color: black;">&#40;</span>TFT_RASET<span style="color: black;">&#41;</span>;
        spi_write_word<span style="color: black;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: black;">&#41;</span>;
        spi_write_word<span style="color: black;">&#40;</span>DISPLAY_HEIGHT - <span style="color: #cc66cc;">1</span><span style="color: black;">&#41;</span>;
&nbsp;
        spi_write_cmd<span style="color: black;">&#40;</span>TFT_RAMWR<span style="color: black;">&#41;</span>;
&nbsp;
        <span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>TFT_CS, <span style="color: #0080ff;">LOW</span><span style="color: black;">&#41;</span>;
        <span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>TFT_DC, <span style="color: #0080ff;">HIGH</span><span style="color: black;">&#41;</span>;  
&nbsp;
        <span style="color: #0000ff;">uint32_t</span> pixel_count = <span style="color: black;">&#40;</span><span style="color: #0000ff;">uint32_t</span><span style="color: black;">&#41;</span>DISPLAY_WIDTH * DISPLAY_HEIGHT;
        <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">uint8_t</span> buffer<span style="color: black;">&#91;</span><span style="color: #cc66cc;">512</span><span style="color: black;">&#93;</span>;  
&nbsp;
        <span style="color: #0000ff;">uint8_t</span> high = color &gt;&gt; <span style="color: #cc66cc;">8</span>;
        <span style="color: #0000ff;">uint8_t</span> low = color &amp; <span style="color: #cc66cc;">0xFF</span>;
        <span style="color: #0000ff;">for</span> <span style="color: black;">&#40;</span><span style="color: #0000ff;">int</span> i = <span style="color: #cc66cc;">0</span>; i &lt; <span style="color: #cc66cc;">512</span>; i += <span style="color: #cc66cc;">2</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
            buffer<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span> = high;
            buffer<span style="color: black;">&#91;</span>i + <span style="color: #cc66cc;">1</span><span style="color: black;">&#93;</span> = low;
        <span style="color: black;">&#125;</span>
&nbsp;
        <span style="color: #0000ff;">for</span> <span style="color: black;">&#40;</span><span style="color: #0000ff;">uint32_t</span> i = <span style="color: #cc66cc;">0</span>; i &lt; pixel_count; i += <span style="color: #cc66cc;">256</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
            <span style="color: #0000ff;">uint32_t</span> chunk_size = <span style="color: black;">&#40;</span>pixel_count - i &gt; <span style="color: #cc66cc;">256</span><span style="color: black;">&#41;</span> ? <span style="color: #cc66cc;">256</span> : <span style="color: black;">&#40;</span>pixel_count - i<span style="color: black;">&#41;</span>;
            SPI.writeBytes<span style="color: black;">&#40;</span>buffer, chunk_size * <span style="color: #cc66cc;">2</span><span style="color: black;">&#41;</span>;
        <span style="color: black;">&#125;</span>
&nbsp;
        <span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>TFT_CS, <span style="color: #0080ff;">HIGH</span><span style="color: black;">&#41;</span>;
    <span style="color: black;">&#125;</span>
&nbsp;
    <span style="color: #0000ff;">void</span> pushImage<span style="color: black;">&#40;</span><span style="color: #0000ff;">int</span> x, <span style="color: #0000ff;">int</span> y, <span style="color: #0000ff;">int</span> w, <span style="color: #0000ff;">int</span> h, <span style="color: #0000ff;">const</span> <span style="color: #0000ff;">uint16_t</span> *data, <span style="color: #0000ff;">bool</span> preswapped = <span style="color: #0080ff;">false</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
&nbsp;
        spi_write_cmd<span style="color: black;">&#40;</span>TFT_CASET<span style="color: black;">&#41;</span>;
        spi_write_word<span style="color: black;">&#40;</span>x + ST7789_COL_OFFSET<span style="color: black;">&#41;</span>;
        spi_write_word<span style="color: black;">&#40;</span>x + w - <span style="color: #cc66cc;">1</span> + ST7789_COL_OFFSET<span style="color: black;">&#41;</span>;
&nbsp;
        spi_write_cmd<span style="color: black;">&#40;</span>TFT_RASET<span style="color: black;">&#41;</span>;
        spi_write_word<span style="color: black;">&#40;</span>y<span style="color: black;">&#41;</span>;
        spi_write_word<span style="color: black;">&#40;</span>y + h - <span style="color: #cc66cc;">1</span><span style="color: black;">&#41;</span>;
&nbsp;
        spi_write_cmd<span style="color: black;">&#40;</span>TFT_RAMWR<span style="color: black;">&#41;</span>;
&nbsp;
        <span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>TFT_CS, <span style="color: #0080ff;">LOW</span><span style="color: black;">&#41;</span>;
        <span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>TFT_DC, <span style="color: #0080ff;">HIGH</span><span style="color: black;">&#41;</span>;  
&nbsp;
        <span style="color: #0000ff;">uint32_t</span> pixel_count = <span style="color: black;">&#40;</span><span style="color: #0000ff;">uint32_t</span><span style="color: black;">&#41;</span>w * h;
&nbsp;
        <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">uint8_t</span> buffer<span style="color: black;">&#91;</span><span style="color: #cc66cc;">1024</span><span style="color: black;">&#93;</span>;  
&nbsp;
        <span style="color: #0000ff;">for</span> <span style="color: black;">&#40;</span><span style="color: #0000ff;">uint32_t</span> i = <span style="color: #cc66cc;">0</span>; i &lt; pixel_count; i += <span style="color: #cc66cc;">512</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
            <span style="color: #0000ff;">uint32_t</span> chunk_size = <span style="color: black;">&#40;</span>pixel_count - i &gt; <span style="color: #cc66cc;">512</span><span style="color: black;">&#41;</span> ? <span style="color: #cc66cc;">512</span> : <span style="color: black;">&#40;</span>pixel_count - i<span style="color: black;">&#41;</span>;
            <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>preswapped<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span> 
                SPI.writeBytes<span style="color: black;">&#40;</span><span style="color: black;">&#40;</span><span style="color: #0000ff;">const</span> <span style="color: #0000ff;">uint8_t</span> *<span style="color: black;">&#41;</span>&amp;data<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span>, chunk_size * <span style="color: #cc66cc;">2</span><span style="color: black;">&#41;</span>;
            <span style="color: black;">&#125;</span> <span style="color: #0000ff;">else</span> <span style="color: black;">&#123;</span>
                <span style="color: #0000ff;">for</span> <span style="color: black;">&#40;</span><span style="color: #0000ff;">uint32_t</span> j = <span style="color: #cc66cc;">0</span>; j &lt; chunk_size; j++<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
                    <span style="color: #0000ff;">uint16_t</span> pixel = data<span style="color: black;">&#91;</span>i + j<span style="color: black;">&#93;</span>;
                    buffer<span style="color: black;">&#91;</span>j * <span style="color: #cc66cc;">2</span><span style="color: black;">&#93;</span> = pixel &gt;&gt; <span style="color: #cc66cc;">8</span>;      
                    buffer<span style="color: black;">&#91;</span>j * <span style="color: #cc66cc;">2</span> + <span style="color: #cc66cc;">1</span><span style="color: black;">&#93;</span> = pixel &amp; <span style="color: #cc66cc;">0xFF</span>;  
                <span style="color: black;">&#125;</span>
                SPI.writeBytes<span style="color: black;">&#40;</span>buffer, chunk_size * <span style="color: #cc66cc;">2</span><span style="color: black;">&#41;</span>;
            <span style="color: black;">&#125;</span>
        <span style="color: black;">&#125;</span>
&nbsp;
        <span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>TFT_CS, <span style="color: #0080ff;">HIGH</span><span style="color: black;">&#41;</span>;
    <span style="color: black;">&#125;</span> 
    <span style="color: #0000ff;">void</span> drawChar<span style="color: black;">&#40;</span><span style="color: #0000ff;">int</span> x, <span style="color: #0000ff;">int</span> y, <span style="color: #0000ff;">char</span> c, <span style="color: #0000ff;">uint16_t</span> fg, <span style="color: #0000ff;">uint16_t</span> bg, <span style="color: #0000ff;">int</span> scale = <span style="color: #cc66cc;">1</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
        <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>scale &lt; <span style="color: #cc66cc;">1</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
            scale = <span style="color: #cc66cc;">1</span>;
        <span style="color: black;">&#125;</span>
&nbsp;
        <span style="color: #0000ff;">uint8_t</span> idx = <span style="color: black;">&#40;</span>c &gt;= <span style="color: #cc66cc;">0x20</span> &amp;&amp; c &lt;= <span style="color: #cc66cc;">0x7F</span><span style="color: black;">&#41;</span> ? <span style="color: #0000ff;">static_cast</span>&lt;<span style="color: #0000ff;">uint8_t</span>&gt;<span style="color: black;">&#40;</span>c - <span style="color: #cc66cc;">0x20</span><span style="color: black;">&#41;</span> : <span style="color: #0000ff;">static_cast</span>&lt;<span style="color: #0000ff;">uint8_t</span>&gt;<span style="color: black;">&#40;</span><span style="color: #FF0000;">'?'</span> - <span style="color: #cc66cc;">0x20</span><span style="color: black;">&#41;</span>;
        <span style="color: #0000ff;">const</span> <span style="color: #0000ff;">uint8_t</span> *glyph = &amp;font_5x7<span style="color: black;">&#91;</span>idx * <span style="color: #cc66cc;">5</span><span style="color: black;">&#93;</span>;
&nbsp;
        <span style="color: #0000ff;">for</span> <span style="color: black;">&#40;</span><span style="color: #0000ff;">int</span> cy = <span style="color: #cc66cc;">0</span>; cy &lt; <span style="color: #cc66cc;">7</span>; cy++<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
            <span style="color: #0000ff;">for</span> <span style="color: black;">&#40;</span><span style="color: #0000ff;">int</span> cx = <span style="color: #cc66cc;">0</span>; cx &lt; <span style="color: #cc66cc;">5</span>; cx++<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
                <span style="color: #0000ff;">uint8_t</span> line = pgm_read_byte<span style="color: black;">&#40;</span>&amp;glyph<span style="color: black;">&#91;</span>cx<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>;
                <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>line &amp; <span style="color: black;">&#40;</span><span style="color: #cc66cc;">1</span> &lt;&lt; cy<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
                    drawFilledRect<span style="color: black;">&#40;</span>x + cx * scale, y + cy * scale, scale, scale, fg<span style="color: black;">&#41;</span>;
                <span style="color: black;">&#125;</span> <span style="color: #0000ff;">else</span> <span style="color: black;">&#123;</span>
                    drawFilledRect<span style="color: black;">&#40;</span>x + cx * scale, y + cy * scale, scale, scale, bg<span style="color: black;">&#41;</span>;
                <span style="color: black;">&#125;</span>
            <span style="color: black;">&#125;</span>
        <span style="color: black;">&#125;</span>
    <span style="color: black;">&#125;</span>
&nbsp;
    <span style="color: #0000ff;">void</span> drawFilledRect<span style="color: black;">&#40;</span><span style="color: #0000ff;">int</span> x, <span style="color: #0000ff;">int</span> y, <span style="color: #0000ff;">int</span> w, <span style="color: #0000ff;">int</span> h, <span style="color: #0000ff;">uint16_t</span> color<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
        <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>w &lt;= <span style="color: #cc66cc;">0</span> || h &lt;= <span style="color: #cc66cc;">0</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
            <span style="color: #0000ff;">return</span>;
        <span style="color: black;">&#125;</span>
&nbsp;
        <span style="color: #0000ff;">int</span> x0 = <span style="color: #0080ff;">max</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">0</span>, x<span style="color: black;">&#41;</span>;
        <span style="color: #0000ff;">int</span> y0 = <span style="color: #0080ff;">max</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">0</span>, y<span style="color: black;">&#41;</span>;
        <span style="color: #0000ff;">int</span> x1 = <span style="color: #0080ff;">min</span><span style="color: black;">&#40;</span>DISPLAY_WIDTH - <span style="color: #cc66cc;">1</span>, x + w - <span style="color: #cc66cc;">1</span><span style="color: black;">&#41;</span>;
        <span style="color: #0000ff;">int</span> y1 = <span style="color: #0080ff;">min</span><span style="color: black;">&#40;</span>DISPLAY_HEIGHT - <span style="color: #cc66cc;">1</span>, y + h - <span style="color: #cc66cc;">1</span><span style="color: black;">&#41;</span>;
&nbsp;
        <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>x1 &lt; x0 || y1 &lt; y0<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
            <span style="color: #0000ff;">return</span>;
        <span style="color: black;">&#125;</span>
&nbsp;
        <span style="color: #0000ff;">int</span> clipped_w = x1 - x0 + <span style="color: #cc66cc;">1</span>;
        <span style="color: #0000ff;">int</span> clipped_h = y1 - y0 + <span style="color: #cc66cc;">1</span>;
&nbsp;
        spi_write_cmd<span style="color: black;">&#40;</span>TFT_CASET<span style="color: black;">&#41;</span>;
        spi_write_word<span style="color: black;">&#40;</span>x0 + ST7789_COL_OFFSET<span style="color: black;">&#41;</span>;
        spi_write_word<span style="color: black;">&#40;</span>x1 + ST7789_COL_OFFSET<span style="color: black;">&#41;</span>;
&nbsp;
        spi_write_cmd<span style="color: black;">&#40;</span>TFT_RASET<span style="color: black;">&#41;</span>;
&nbsp;
        spi_write_word<span style="color: black;">&#40;</span>y0<span style="color: black;">&#41;</span>;
        spi_write_word<span style="color: black;">&#40;</span>y1<span style="color: black;">&#41;</span>;
&nbsp;
        spi_write_cmd<span style="color: black;">&#40;</span>TFT_RAMWR<span style="color: black;">&#41;</span>;
&nbsp;
        <span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>TFT_CS, <span style="color: #0080ff;">LOW</span><span style="color: black;">&#41;</span>;
        <span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>TFT_DC, <span style="color: #0080ff;">HIGH</span><span style="color: black;">&#41;</span>;
&nbsp;
        <span style="color: #0000ff;">uint32_t</span> pixels = <span style="color: black;">&#40;</span><span style="color: #0000ff;">uint32_t</span><span style="color: black;">&#41;</span>clipped_w * clipped_h;
&nbsp;
        <span style="color: #0000ff;">for</span> <span style="color: black;">&#40;</span><span style="color: #0000ff;">uint32_t</span> i = <span style="color: #cc66cc;">0</span>; i &lt; pixels; i++<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
             SPI.write16<span style="color: black;">&#40;</span>color<span style="color: black;">&#41;</span>;
        <span style="color: black;">&#125;</span>
&nbsp;
         <span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>TFT_CS, <span style="color: #0080ff;">HIGH</span><span style="color: black;">&#41;</span>;
    <span style="color: black;">&#125;</span>
&nbsp;
    <span style="color: #0000ff;">void</span> drawNumber<span style="color: black;">&#40;</span><span style="color: #0000ff;">int</span> x, <span style="color: #0000ff;">int</span> y, <span style="color: #0000ff;">int</span> num, <span style="color: #0000ff;">uint16_t</span> fg, <span style="color: #0000ff;">uint16_t</span> bg, <span style="color: #0000ff;">int</span> scale = <span style="color: #cc66cc;">1</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
        <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>num &lt; <span style="color: #cc66cc;">0</span><span style="color: black;">&#41;</span> num = <span style="color: #cc66cc;">0</span>;
        <span style="color: #0000ff;">char</span> buf<span style="color: black;">&#91;</span><span style="color: #cc66cc;">10</span><span style="color: black;">&#93;</span>;
        sprintf<span style="color: black;">&#40;</span>buf, <span style="color: #FF0000;">&quot;%d&quot;</span>, num<span style="color: black;">&#41;</span>;
&nbsp;
        <span style="color: #0000ff;">int</span> px = x;
        <span style="color: #0000ff;">for</span> <span style="color: black;">&#40;</span><span style="color: #0000ff;">int</span> i = <span style="color: #cc66cc;">0</span>; buf<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span> != <span style="color: #FF0000;">'</span><span style="color: #800000;">\0</span><span style="color: #FF0000;">'</span>; i++<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
            drawChar<span style="color: black;">&#40;</span>px, y, buf<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span>, fg, bg, scale<span style="color: black;">&#41;</span>;
            px += <span style="color: black;">&#40;</span><span style="color: #cc66cc;">5</span> + <span style="color: #cc66cc;">1</span><span style="color: black;">&#41;</span> * scale; 
        <span style="color: black;">&#125;</span>
    <span style="color: black;">&#125;</span>
&nbsp;
    <span style="color: #0000ff;">void</span> drawString<span style="color: black;">&#40;</span><span style="color: #0000ff;">int</span> x, <span style="color: #0000ff;">int</span> y, <span style="color: #0000ff;">const</span> <span style="color: #0000ff;">char</span> *str, <span style="color: #0000ff;">uint16_t</span> fg, <span style="color: #0000ff;">uint16_t</span> bg, <span style="color: #0000ff;">int</span> scale = <span style="color: #cc66cc;">1</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
        <span style="color: #0000ff;">int</span> px = x;
        <span style="color: #0000ff;">for</span> <span style="color: black;">&#40;</span><span style="color: #0000ff;">int</span> i = <span style="color: #cc66cc;">0</span>; str<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span> != <span style="color: #FF0000;">'</span><span style="color: #800000;">\0</span><span style="color: #FF0000;">'</span>; i++<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
            drawChar<span style="color: black;">&#40;</span>px, y, str<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span>, fg, bg, scale<span style="color: black;">&#41;</span>;
            px += <span style="color: black;">&#40;</span><span style="color: #cc66cc;">5</span> + <span style="color: #cc66cc;">1</span><span style="color: black;">&#41;</span> * scale;  
            <span style="color: black;">&#125;</span>
        <span style="color: black;">&#125;</span>
&nbsp;
        <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">uint16_t</span> color565<span style="color: black;">&#40;</span><span style="color: #0000ff;">uint8_t</span> r, <span style="color: #0000ff;">uint8_t</span> g, <span style="color: #0000ff;">uint8_t</span> b<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
        <span style="color: #0000ff;">return</span> <span style="color: black;">&#40;</span><span style="color: black;">&#40;</span>r &amp; <span style="color: #cc66cc;">0xF8</span><span style="color: black;">&#41;</span> &lt;&lt; <span style="color: #cc66cc;">8</span><span style="color: black;">&#41;</span> | <span style="color: black;">&#40;</span><span style="color: black;">&#40;</span>g &amp; <span style="color: #cc66cc;">0xFC</span><span style="color: black;">&#41;</span> &lt;&lt; <span style="color: #cc66cc;">3</span><span style="color: black;">&#41;</span> | <span style="color: black;">&#40;</span>b &gt;&gt; <span style="color: #cc66cc;">3</span><span style="color: black;">&#41;</span>;
        <span style="color: black;">&#125;</span>
   <span style="color: black;">&#125;</span>;
<span style="color: #339933;">#endif</span></pre></td></tr></table></code><hr />
</div>pour l'instant j'ai procédé aux modifications de la valeur 0x60 par d'autres <br />
comme par ex 0x08 , 0x48, 0x88 et 0xC8 mais si l'écran redevient lisible, il reste en format &quot;portrait&quot; et je ne suis pas parvenu à le mettre en &quot;paysage&quot;   <br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
spi_write_cmd<span style="color: black;">&#40;</span>TFT_MADCTL<span style="color: black;">&#41;</span>;
        <span style="color: #808080;">//spi_write_byte(0x60);  // Landscape: rotate 90&deg;</span>
	spi_write_byte<span style="color: black;">&#40;</span><span style="color: #cc66cc;">0x70</span><span style="color: black;">&#41;</span>;  <span style="color: #808080;">//</span>
        <span style="color: #0080ff;">delay</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">5</span><span style="color: black;">&#41;</span>;</pre></td></tr></table></code><hr />
</div><br />
Merci donc par avance pour toute l'aide que vous pourrez me donner   <br />
pascal</div>


	<div style="padding:10px">

	

	
		<fieldset class="fieldset">
			<legend>Images attachées</legend>
				<div style="padding:10px">
				<img class="attach" src="https://www.developpez.net/forums/attachments/p676430d1779292862/general-developpement/programmation-systeme/embarque/arduino/ili9341-affichage-inverse/20260520_174825-1.jpg/" alt="" />&nbsp;
			</div>
		</fieldset>
	

	
		<fieldset class="fieldset">
			<legend>Images attachées</legend>
			<ul>
			<li>
	<img class="inlineimg" src="https://forum.developpez.be/images/attach/pdf.gif" alt="Type de fichier : pdf" />
	<a href="https://www.developpez.net/forums/attachments/p676431d1779293406/general-developpement/programmation-systeme/embarque/arduino/ili9341-affichage-inverse/pages-ili9341.pdf/">Pages de ILI9341.pdf</a> 
(115,8 Ko)
</li>
			</ul>
			</fieldset>
	

	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f2094/general-developpement/programmation-systeme/embarque/arduino/">Arduino</category>
			<dc:creator>cobra38</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2183809/general-developpement/programmation-systeme/embarque/arduino/ili9341-affichage-inverse/</guid>
		</item>
		<item>
			<title>Entrées analogiques arduino uno</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2183518&amp;goto=newpost</link>
			<pubDate>Fri, 01 May 2026 07:56:15 GMT</pubDate>
			<description>Bonjour , une question de...</description>
			<content:encoded><![CDATA[<div>Bonjour , une question de base à laquelle je ne trouve pas de réponse. Les broches pwm 3, 5, 6, 10 et 11 de l'arduino uno peuvent-t-elles être utilisées comme entrée analogique ? <br />
Merci</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f2094/general-developpement/programmation-systeme/embarque/arduino/">Arduino</category>
			<dc:creator>Sansvingt</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2183518/general-developpement/programmation-systeme/embarque/arduino/entrees-analogiques-arduino-uno/</guid>
		</item>
		<item>
			<title>Module LTE pour connecter arduino</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2183438&amp;goto=newpost</link>
			<pubDate>Mon, 27 Apr 2026 16:37:39 GMT</pubDate>
			<description>Bonjour,  
 
Est ce que...</description>
			<content:encoded><![CDATA[<div>Bonjour, <br />
<br />
Est ce que quelqu'un sur le forum a deja utilisé ce module LTE pour envoyer des sms avec un Arduino ; ou envoyer des datas..? <br />
<br />
Module Quzenn LTE-FDD-1800MHz<br />
<br />
Ce module se présente sous la forme d'un petit PCB.. <br />
<br />
Merci mour tout regex</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f2094/general-developpement/programmation-systeme/embarque/arduino/">Arduino</category>
			<dc:creator>vdaanen</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2183438/general-developpement/programmation-systeme/embarque/arduino/module-lte-connecter-arduino/</guid>
		</item>
		<item>
			<title><![CDATA[[Arduino ESP32] Economie d'énergie ESP32C3 Super Mini]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2183373&amp;goto=newpost</link>
			<pubDate>Thu, 23 Apr 2026 08:39:21 GMT</pubDate>
			<description><![CDATA[Bonjour, 
 
J'utilise un...]]></description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
J'utilise un ESP32C SuperMini qui mesure une température à l’extérieure<br />
puis j'envoie cette mesure via MQTT toutes les xminutes <br />
je recherche le moyen de réduire le plus possible la consommation de l'objet <br />
mais malgré mes efforts la mesure que j'ai effectuée me donne au repos  =&gt; 4mA (?)<br />
et 150µA sans alimenter l'ESP32C3<br />
<br />
Dans le programme ci-dessous je pense avoir fait le maximum pour réduire en deep-sleep la consommation de l'ESP32C3  <br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="40"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br />84<br />85<br />86<br />87<br />88<br />89<br />90<br />91<br />92<br />93<br />94<br />95<br />96<br />97<br />98<br />99<br />100<br />101<br />102<br />103<br />104<br />105<br />106<br />107<br />108<br />109<br />110<br />111<br />112<br />113<br />114<br />115<br />116<br />117<br />118<br />119<br />120<br />121<br />122<br />123<br />124<br />125<br />126<br />127<br />128<br />129<br />130<br />131<br />132<br />133<br />134<br />135<br />136<br />137<br />138<br />139<br />140<br />141<br />142<br />143<br />144<br />145<br />146<br />147<br />148<br />149<br />150<br />151<br />152<br />153<br />154<br />155<br />156<br />157<br />158<br />159<br />160<br />161<br />162<br />163<br />164<br />165<br />166<br />167<br />168<br />169<br />170<br />171<br />172<br />173<br />174<br />175<br />176<br />177<br />178<br />179<br />180<br />181<br />182<br />183<br />184<br />185<br />186<br />187<br />188<br />189<br />190<br />191<br />192<br />193<br />194<br />195<br />196<br />197<br />198<br />199<br />200<br />201<br />202<br />203<br />204<br />205<br />206<br />207<br />208<br />209<br />210<br />211<br />212<br />213<br />214<br />215<br />216<br />217<br />218<br />219<br />220<br />221<br />222<br />223<br />224<br />225<br />226<br />227<br />228<br />229<br />230<br />231<br />232<br />233<br />234<br />235<br />236<br />237<br />238<br />239<br />240<br />241<br />242<br />243<br />244<br />245<br />246<br />247<br />248<br />249<br />250<br />251<br />252<br />253<br />254<br />255<br />256<br />257<br />258<br />259<br />260<br />261<br />262<br />263<br />264<br />265<br />266<br />267<br />268<br />269<br />270<br />271<br />272<br />273<br />274<br />275<br />276<br />277<br />278<br />279<br />280<br />281<br />282<br />283<br />284<br />285<br />286<br />287<br />288<br />289<br />290<br />291<br />292<br />293<br />294<br />295<br />296<br />297<br />298<br />299<br />300<br />301<br />302<br />303<br />304<br />305<br />306<br />307<br />308<br />309<br />310<br />311<br />312<br />313<br />314<br />315<br />316<br />317<br />318<br />319<br />320<br />321<br />322<br />323<br />324<br />325<br />326<br />327<br />328<br />329<br />330<br />331<br />332<br />333<br />334<br />335<br />336<br />337<br />338<br />339<br />340<br />341<br />342<br />343<br />344<br />345<br />346<br />347<br />348<br />349<br />350<br />351<br />352<br />353<br />354<br />355<br />356<br />357<br />358<br />359<br />360<br />361<br />362<br />363<br />364<br />365<br />366<br />367<br />368<br />369<br />370<br />371<br />372<br />373<br />374<br />375<br />376<br />377<br />378<br />379<br />380<br />381<br />382<br />383<br />384<br />385<br />386<br />387<br />388<br />389<br />390<br />391<br />392<br />393<br />394<br />395<br />396<br />397<br />398<br />399<br />400<br />401<br />402<br />403<br />404<br />405<br />406<br />407<br />408<br />409<br />410<br />411<br />412<br />413<br />414<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #808080; font-weight: bold;">/***************************************</span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ESP32C3 Mini</span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; adresse IP:192.168.1.150</span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Version : Test_V20260422a</span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_____</span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|----| &nbsp; &nbsp; |-----|</span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp;|_____| &nbsp; &nbsp; |</span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;GPIO5 &nbsp; | 5 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 5V | </span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp; E-SDA &nbsp;GPIO6 &nbsp; | 6 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;G | </span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp; &nbsp; &nbsp;CS &nbsp;GPIO7 &nbsp; | 7 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;3V3 | &nbsp; &nbsp;</span>
<span style="color: #808080; font-weight: bold;">&nbsp; AHT-SDA &nbsp;GPIO8 &nbsp; | 8 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;4 | GPIO4 &nbsp; &nbsp; E-SCL</span>
<span style="color: #808080; font-weight: bold;">&nbsp; AHT-SCL &nbsp;GPIO9 &nbsp; | 9 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;3 | GPIO3 &nbsp; &nbsp; BUSY</span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp;DS18B20 GPIO10 &nbsp;| 10 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 2 | GPIO2 &nbsp; &nbsp; RES</span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;GPIO20 &nbsp;| 20 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1 | GPIO1 &nbsp; &nbsp; DC</span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;GPIO21 &nbsp;| 21 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0 | GPIO0 &nbsp; &nbsp; VBat</span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\------------- --/</span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span>
<span style="color: #808080; font-weight: bold;">*************************************/</span>
&nbsp;
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;WiFi.h&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;Wire.h&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;ArduinoOTA.h&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;Arduino.h&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;PubSubClient.h&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &quot;BitmapGraphics.h&quot;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &quot;Batteriefaible.h&quot;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;functional&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;Wire.h&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;AHT20.h&gt;</span>  <span style="color: #808080;">//&lt;=======================</span>
&nbsp;
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;OneWire.h&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;DallasTemperature.h&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &quot;config.h&quot;</span>
&nbsp;
&nbsp;
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;MQTT.h&gt;</span>
&nbsp;
<span style="color: #0000ff;">char</span> server<span style="color: black;">&#91;</span><span style="color: black;">&#93;</span> = <span style="color: #FF0000;">&quot;mqtt3.thingspeak.com&quot;</span>;
&nbsp;
<span style="color: #808080;">//  E-paper *********************************************</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;GxEPD2_BW.h&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;GxEPD2_GFX.h&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;Fonts/FreeMonoBold9pt7b.h&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &quot;FreeSerifBold30pt7b.h&quot;</span>
<span style="color: #808080;">// 2.9&quot; EPD Module</span>
<span style="color: #808080;">//#define ENABLE_GxEPD2_display 0</span>
<span style="color: #339933;">#define SCREEN_WIDTH   296</span>
<span style="color: #339933;">#define SCREEN_HEIGHT  128</span>
<span style="color: #339933;">#define Large 7    // For best results use odd numbers</span>
<span style="color: #339933;">#define Small 3    // For best results use odd numbers</span>
<span style="color: #0000ff;">static</span> <span style="color: #0000ff;">const</span> <span style="color: #0000ff;">uint8_t</span> EPD_SCL = <span style="color: #cc66cc;">4</span>; <span style="color: #808080;">// Master-In Slave-Out not used, as no data from display</span>
<span style="color: #0000ff;">static</span> <span style="color: #0000ff;">const</span> <span style="color: #0000ff;">uint8_t</span> EPD_SDA = <span style="color: #cc66cc;">6</span>; <span style="color: #808080;">// to EPD DIN</span>
GxEPD2_BW&lt;GxEPD2_290_BS, GxEPD2_290_BS::HEIGHT&gt; display<span style="color: black;">&#40;</span>GxEPD2_290_BS<span style="color: black;">&#40;</span><span style="color: #808080;">/*CS=7*/</span> SS, <span style="color: #808080;">/*DC=*/</span> <span style="color: #cc66cc;">1</span>, <span style="color: #808080;">/*RES=*/</span> <span style="color: #cc66cc;">2</span>, <span style="color: #808080;">/*BUSY=*/</span> <span style="color: #cc66cc;">3</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>; <span style="color: #808080;">// DEPG0290BS 128x296, SSD1680</span>
&nbsp;
<span style="color: #808080;">//*******************************************************</span>
<span style="color: #339933;">#define aht10 0x38 //adresse 0x38 ou 0x39</span>
<span style="color: #808080;">//*******************************************************</span>
<span style="color: #339933;">#if DEBUG</span>
<span style="color: #339933;">#define D_SerialBegin(...) Serial.begin(__VA_ARGS__)</span>
<span style="color: #339933;">#define D_print(...) Serial.print(__VA_ARGS__)</span>
<span style="color: #339933;">#define D_write(...) Serial.write(__VA_ARGS__)</span>
<span style="color: #339933;">#define D_println(...) Serial.println(__VA_ARGS__)</span>
<span style="color: #339933;">#define D_printf(...) Serial.printf(__VA_ARGS__)</span>
<span style="color: #339933;">#define D_flush(...) Serial.flush(__VA_ARGS__)</span>
<span style="color: #339933;">#define D_timestamp() Serial.printf(&quot;[%lu] &quot;, millis())</span>
<span style="color: #339933;">#else</span>
<span style="color: #339933;">#define D_SerialBegin(bauds)</span>
<span style="color: #339933;">#define D_print(...)</span>
<span style="color: #339933;">#define D_write(...)</span>
<span style="color: #339933;">#define D_println(...)</span>
<span style="color: #339933;">#define D_printf(...)</span>
<span style="color: #339933;">#define D_flush(...)</span>
<span style="color: #339933;">#define D_timestamp()</span>
<span style="color: #339933;">#endif</span>
&nbsp;
<span style="color: #339933;">#ifndef DEBUG</span>
<span style="color: #339933;">#define DEBUG 0 /**&lt; R&eacute;gler &agrave; 1 pour d&eacute;boguer en s&eacute;rie */</span>
<span style="color: #339933;">#endif</span>
&nbsp;
<span style="color: #808080;">//*******************************************************</span>
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">byte</span> oneWireBus = <span style="color: #cc66cc;">10</span>;  <span style="color: #808080;">// DS18B20 pin used for Temperature sensor bus GIPO10</span>
<span style="color: #0000ff;">float</span> humidity;
<span style="color: #0000ff;">float</span> temperature;
<span style="color: #0000ff;">char</span> temp<span style="color: black;">&#91;</span><span style="color: #cc66cc;">10</span><span style="color: black;">&#93;</span>;
<span style="color: #0000ff;">char</span> bat<span style="color: black;">&#91;</span><span style="color: #cc66cc;">10</span><span style="color: black;">&#93;</span>;
<span style="color: #0000ff;">float</span> piscine;
<span style="color: #0000ff;">const</span> gpio_num_t vbatPin = GPIO_NUM_0;
<span style="color: #0000ff;">uint_fast16_t</span> Vbatt ;
<span style="color: #0000ff;">float</span> batteryVoltage;
<span style="color: #0000ff;">int8_t</span> batteryPercentage;
<span style="color: #0000ff;">uint_fast16_t</span> adcValue;
<span style="color: #0000ff;">char</span> error<span style="color: black;">&#91;</span><span style="color: #cc66cc;">15</span><span style="color: black;">&#93;</span>;
<span style="color: #0000ff;">uint8_t</span> wifiRetries = <span style="color: #cc66cc;">0</span>;
&nbsp;
<span style="color: #0000ff;">bool</span> isWifiStarted = <span style="color: #0080ff;">false</span>;
<span style="color: #0000ff;">bool</span> isWifiReady = <span style="color: #0080ff;">false</span>;
<span style="color: #0000ff;">bool</span> isRegularWifi = <span style="color: #0080ff;">false</span>;
<span style="color: #0000ff;">bool</span> isMQTTStarted = <span style="color: #0080ff;">false</span>;
<span style="color: #0000ff;">bool</span> isMQTTReady = <span style="color: #0080ff;">false</span>;
<span style="color: #0000ff;">bool</span> isRtcValid = <span style="color: #0080ff;">false</span>;
&nbsp;
&nbsp;
<span style="color: #808080;">//*********** Init **************************</span>
WiFiClient  wifiClient;
WiFiServer serverAP<span style="color: black;">&#40;</span><span style="color: #cc66cc;">80</span><span style="color: black;">&#41;</span>;
PubSubClient pubSubclient<span style="color: black;">&#40;</span>wifiClient<span style="color: black;">&#41;</span>;
OneWire oneWire<span style="color: black;">&#40;</span>oneWireBus<span style="color: black;">&#41;</span>;
DallasTemperature sensors<span style="color: black;">&#40;</span>&amp;oneWire<span style="color: black;">&#41;</span>;
&nbsp;
<span style="color: #808080;">//****    AHT20 ******************************</span>
AHT20 aht; <span style="color: #808080;">//&lt;=========================</span>
<span style="color: #0000ff;">bool</span> status_aht = <span style="color: #0080ff;">false</span>;
&nbsp;
&nbsp;
<span style="color: #808080;">//******************************************************** </span>
<span style="color: #0000ff;">struct</span> __attribute__<span style="color: black;">&#40;</span><span style="color: black;">&#40;</span>packed, aligned<span style="color: black;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span> WiFiRapide <span style="color: black;">&#123;</span>
  <span style="color: #0000ff;">uint8_t</span> channel;
  <span style="color: #0000ff;">uint8_t</span> ap_mac<span style="color: black;">&#91;</span><span style="color: #cc66cc;">6</span><span style="color: black;">&#93;</span>;
  <span style="color: #0000ff;">uint32_t</span> crc32;
<span style="color: black;">&#125;</span>;
&nbsp;
RTC_DATA_ATTR WiFiRapide rtcData = <span style="color: black;">&#123;</span><span style="color: #cc66cc;">0</span>, <span style="color: black;">&#123;</span><span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span><span style="color: black;">&#125;</span>, <span style="color: #cc66cc;">0xDEADBEEF</span><span style="color: black;">&#125;</span>; 
<span style="color: #0000ff;">uint32_t</span> calculateCRC32MPGE2<span style="color: black;">&#40;</span><span style="color: #0000ff;">const</span> <span style="color: #0000ff;">uint8_t</span> *data, <span style="color: #0000ff;">size_t</span> length<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
  <span style="color: #0000ff;">uint32_t</span> crc = <span style="color: #cc66cc;">0xffffffff</span>;
  <span style="color: #0000ff;">while</span> <span style="color: black;">&#40;</span>length--<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
    <span style="color: #0000ff;">uint8_t</span> c = *data++;
    <span style="color: #0000ff;">for</span> <span style="color: black;">&#40;</span><span style="color: #0000ff;">uint32_t</span> i = <span style="color: #cc66cc;">0x80</span>; i &gt; <span style="color: #cc66cc;">0</span>; i &gt;&gt;= <span style="color: #cc66cc;">1</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
      <span style="color: #0000ff;">bool</span> <span style="color: #0080ff;">bit</span> = crc &amp; <span style="color: #cc66cc;">0x80000000</span>;
      <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>c &amp; i<span style="color: black;">&#41;</span> <span style="color: #0080ff;">bit</span> = !<span style="color: #0080ff;">bit</span>;
      crc &lt;&lt;= <span style="color: #cc66cc;">1</span>;
      <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span><span style="color: #0080ff;">bit</span><span style="color: black;">&#41;</span> crc ^= <span style="color: #cc66cc;">0x04c11db7</span>;
    <span style="color: black;">&#125;</span>
  <span style="color: black;">&#125;</span>
  <span style="color: #0000ff;">return</span> crc;
<span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> printByte<span style="color: black;">&#40;</span><span style="color: #0000ff;">uint8_t</span> b<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
  <span style="color: #0080ff;">Serial</span>.print<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;0x&quot;</span><span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>b &lt; <span style="color: #cc66cc;">0x10</span><span style="color: black;">&#41;</span> <span style="color: #0080ff;">Serial</span>.write<span style="color: black;">&#40;</span><span style="color: #FF0000;">'0'</span><span style="color: black;">&#41;</span>;
  <span style="color: #0080ff;">Serial</span>.print<span style="color: black;">&#40;</span>b, HEX<span style="color: black;">&#41;</span>;
<span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> printStructure<span style="color: black;">&#40;</span>WiFiRapide&amp; s<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
  <span style="color: #0080ff;">Serial</span>.print<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;channel = &quot;</span><span style="color: black;">&#41;</span>; <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span>s.channel<span style="color: black;">&#41;</span>;
  <span style="color: #0080ff;">Serial</span>.print<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;ap_mac[] = &quot;</span><span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">for</span> <span style="color: black;">&#40;</span><span style="color: #0000ff;">uint8_t</span> i = <span style="color: #cc66cc;">0</span>; i &lt; <span style="color: #0000ff;">sizeof</span><span style="color: black;">&#40;</span>s.ap_mac<span style="color: black;">&#41;</span>; i++<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
    printByte<span style="color: black;">&#40;</span>s.ap_mac<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>;
    <span style="color: #0080ff;">Serial</span>.write<span style="color: black;">&#40;</span><span style="color: #FF0000;">' '</span><span style="color: black;">&#41;</span>;
  <span style="color: black;">&#125;</span>
  <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
  <span style="color: #0080ff;">Serial</span>.print<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;CRC32-MPEG2 = 0x&quot;</span><span style="color: black;">&#41;</span>; <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span>s.crc32, HEX<span style="color: black;">&#41;</span>;
<span style="color: black;">&#125;</span>
<span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">long</span> startMillis;
&nbsp;
<span style="color: #808080;">//*****************************************</span>
<span style="color: #808080;">// SETUP</span>
<span style="color: #808080;">//****************************************</span>
&nbsp;
<span style="color: #0000ff;">void</span> setup<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
<span style="color: black;">&#123;</span>  	
	<span style="color: #0080ff;">delay</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">1000</span><span style="color: black;">&#41;</span>; <span style="color: #808080;">// il sert surtout au premier boot pour qu'on le voit sur le moniteur s&eacute;rie</span>
	D_SerialBegin<span style="color: black;">&#40;</span><span style="color: #cc66cc;">115200</span><span style="color: black;">&#41;</span>;
	<span style="color: #0000ff;">while</span> <span style="color: black;">&#40;</span>!<span style="color: #0080ff;">Serial</span><span style="color: black;">&#41;</span> yield<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
	<span style="color: #808080;">//Serial.print(&quot;Taille de la structure = &quot;); Serial.print(sizeof rtcData); Serial.println(&quot; octets.&quot;);</span>
&nbsp;
	esp_reset_reason_t resetReason = esp_reset_reason<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
	<span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>resetReason != ESP_RST_DEEPSLEEP<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
		<span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Premier boot&quot;</span><span style="color: black;">&#41;</span>;
	<span style="color: black;">&#125;</span> <span style="color: #0000ff;">else</span> <span style="color: black;">&#123;</span>
		<span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Reboot sur timer&quot;</span><span style="color: black;">&#41;</span>;
	<span style="color: black;">&#125;</span>
&nbsp;
	<span style="color: #808080;">// on v&eacute;rifie si ce qu'on avait dans la m&eacute;moire &eacute;tait correct (ce ne sera pas le cas au boot)</span>
	<span style="color: #0000ff;">uint32_t</span> crcAttendu = calculateCRC32MPGE2<span style="color: black;">&#40;</span><span style="color: black;">&#40;</span><span style="color: #0000ff;">uint8_t</span>*<span style="color: black;">&#41;</span>&amp;rtcData, <span style="color: #0000ff;">sizeof</span> rtcData - <span style="color: #0000ff;">sizeof</span><span style="color: black;">&#40;</span><span style="color: #0000ff;">uint32_t</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>;
	<span style="color: #0000ff;">bool</span> isRtcValid = <span style="color: black;">&#40;</span>rtcData.crc32 == crcAttendu<span style="color: black;">&#41;</span>;
&nbsp;
	<span style="color: #808080;">//Serial.print(&quot;crcAttendu = 0x&quot;); Serial.println(crcAttendu, HEX);</span>
	<span style="color: #808080;">//Serial.print(&quot;crc en m&eacute;moire RTC = 0x&quot;); Serial.println(rtcData.crc32, HEX);</span>
&nbsp;
&nbsp;
    <span style="color: #808080;">//**** INIT Ecran E-paper**********</span>
    display.init<span style="color: black;">&#40;</span><span style="color: #cc66cc;">115200</span>,<span style="color: #0080ff;">true</span>,<span style="color: #cc66cc;">50</span>,<span style="color: #0080ff;">false</span><span style="color: black;">&#41;</span>;
    display.setRotation<span style="color: black;">&#40;</span><span style="color: #cc66cc;">3</span><span style="color: black;">&#41;</span>;
    display.setFullWindow<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
    display.fillScreen<span style="color: black;">&#40;</span>GxEPD_BLACK<span style="color: black;">&#41;</span>;
    display.drawBitmap<span style="color: black;">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, gImage_gui, <span style="color: #cc66cc;">296</span>, <span style="color: #cc66cc;">128</span>, GxEPD_WHITE<span style="color: black;">&#41;</span>;
    <span style="color: #0000ff;">while</span> <span style="color: black;">&#40;</span>display.nextPage<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>; 
    <span style="color: #0080ff;">delay</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">500</span><span style="color: black;">&#41;</span> ;     
&nbsp;
    <span style="color: #808080;">//********** VBAT ********************</span>
	  <span style="color: #0080ff;">pinMode</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #0080ff;">INPUT</span><span style="color: black;">&#41;</span>; <span style="color: #808080;">// Pin Entree VBAT</span>
    <span style="color: #808080;">// *** DS18B20 Temperature sensor ****</span>
    sensors.begin<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>; 
    <span style="color: #808080;">// **** AHT20 *************</span>
     Wire.begin<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
    <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>aht.begin<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> == <span style="color: #0080ff;">false</span><span style="color: black;">&#41;</span>
    <span style="color: black;">&#123;</span>
      <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;AHT20 not detected. Please check wiring. Freezing.&quot;</span><span style="color: black;">&#41;</span>;
      <span style="color: #0000ff;">while</span><span style="color: black;">&#40;</span><span style="color: #0080ff;">true</span><span style="color: black;">&#41;</span>;
    <span style="color: black;">&#125;</span>
&nbsp;
    <span style="color: #808080;">// Wait minimum sampling period</span>
    startMillis = <span style="color: #0080ff;">millis</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
&nbsp;
    <span style="color: #808080;">//---------------------------------------------</span>
    <span style="color: #808080;">// Step 0:</span>
    <span style="color: #808080;">// Lecture DS18B20</span>
    <span style="color: #808080;">//---------------------------------------------</span>
&nbsp;
       sensors.requestTemperatures<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>; 
       <span style="color: #0000ff;">float</span> raw_temp = sensors.getTempCByIndex<span style="color: black;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: black;">&#41;</span>;
       piscine = sensors.getTempCByIndex<span style="color: black;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: black;">&#41;</span>;
       <span style="color: #0080ff;">Serial</span>.printf<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Temperature = %8.4f&deg;C<span style="color: #800000;">\r</span><span style="color: #800000;">\n</span>&quot;</span>, <span style="color: black;">&#40;</span><span style="color: #0000ff;">float</span><span style="color: black;">&#41;</span>raw_temp<span style="color: black;">&#41;</span>;
       snprintf<span style="color: black;">&#40;</span>temp, <span style="color: #0000ff;">sizeof</span> temp, <span style="color: #FF0000;">&quot;%.1f&quot;</span>,<span style="color: black;">&#40;</span><span style="color: #0000ff;">float</span><span style="color: black;">&#41;</span>raw_temp<span style="color: black;">&#41;</span>;
       updatePiscine<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
&nbsp;
    <span style="color: #808080;">//---------------------------------------------</span>
    <span style="color: #808080;">// Step 1: Lecture de la temp&eacute;rature et de l'humidit&eacute; &agrave; partir de AHT20</span>
    <span style="color: #808080;">//---------------------------------------------</span>
&nbsp;
        temperature = aht.getTemperature<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
        humidity = aht.getHumidity<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
        D_timestamp<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
        D_println<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;AHT20 Reading ready&quot;</span><span style="color: black;">&#41;</span>;
        D_timestamp<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
        D_printf<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Temperature: %.1f, Humidity: %.1f &quot;</span>, temperature, humidity<span style="color: black;">&#41;</span>;
        D_println<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
&nbsp;
    <span style="color: #808080;">//---------------------------------------------</span>
    <span style="color: #808080;">// Step 2: Lecture Batterie ADC GPIO0</span>
    <span style="color: #808080;">//---------------------------------------------</span>
&nbsp;
        adcValue =  analogReadMilliVolts<span style="color: black;">&#40;</span>vbatPin<span style="color: black;">&#41;</span>; <span style="color: #808080;">//&lt;============</span>
        <span style="color: #0000ff;">uint_fast16_t</span> Vbatt = <span style="color: #cc66cc;">0</span>;
        <span style="color: #0000ff;">for</span><span style="color: black;">&#40;</span><span style="color: #0000ff;">int</span> i = <span style="color: #cc66cc;">0</span>; i &lt; <span style="color: #cc66cc;">16</span>; i++<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
         Vbatt = Vbatt + adcValue ;<span style="color: #808080;">// ADC with correction   </span>
        <span style="color: black;">&#125;</span>
        batteryVoltage = <span style="color: #cc66cc;">2</span> * Vbatt / <span style="color: #cc66cc;">16</span> / <span style="color: #cc66cc;">1000.00</span>;     <span style="color: #808080;">// attenuation ratio 1/2, mV --&gt; V</span>
        batteryPercentage = <span style="color: black;">&#40;</span><span style="color: black;">&#40;</span>batteryVoltage-<span style="color: #cc66cc;">3.20</span><span style="color: black;">&#41;</span>*<span style="color: #cc66cc;">100.0</span><span style="color: black;">&#41;</span>; <span style="color: #808080;">// </span>
&nbsp;
&nbsp;
        <span style="color: #0000ff;">int</span> tensionBrute = adcValue ; 
        <span style="color: #0000ff;">constexpr</span> <span style="color: #0000ff;">int</span> seuilTensionBruteBasse = <span style="color: #cc66cc;">1600</span>; <span style="color: #808080;">// 3.2V ==&gt; calcul&eacute; par (3.2V / 2) </span>
        <span style="color: #0000ff;">if</span>  <span style="color: black;">&#40;</span>tensionBrute &lt;= seuilTensionBruteBasse<span style="color: black;">&#41;</span>
        <span style="color: black;">&#123;</span>
            <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>batteryPercentage &lt; <span style="color: #cc66cc;">0</span><span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
              <span style="color: black;">&#40;</span>batteryPercentage = <span style="color: #cc66cc;">0</span><span style="color: black;">&#41;</span> ;
            <span style="color: black;">&#125;</span> 
            D_timestamp<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
            D_println<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Batterie faible. Sommeil profond.&quot;</span><span style="color: black;">&#41;</span>;
            D_printf<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Battery Percentage: %i&quot;</span>, batteryPercentage<span style="color: black;">&#41;</span>;
            batteriefaible<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
            <span style="color: #808080;">//esp_sleep_enable_timer_wakeup(120000000ULL); // on programme un r&eacute;veil pour dans 120s (en &micro;s)</span>
        <span style="color: black;">&#125;</span>
&nbsp;
&nbsp;
          D_timestamp<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
          D_printf<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Vbat: %.2f&quot;</span>,batteryVoltage<span style="color: black;">&#41;</span>;
          D_println<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
          sprintf<span style="color: black;">&#40;</span>bat, <span style="color: #FF0000;">&quot;%3d%s&quot;</span>, batteryPercentage, <span style="color: #FF0000;">&quot;%&quot;</span><span style="color: black;">&#41;</span>;
          updateBattery<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> ;
&nbsp;
&nbsp;
    <span style="color: #808080;">//---------------------------------------------</span>
    <span style="color: #808080;">// Step 3: Demarrage Connection WIFI</span>
    <span style="color: #808080;">//---------------------------------------------</span>
&nbsp;
      D_timestamp<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
      D_println<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;D&eacute;marrage du WiFi&quot;</span><span style="color: black;">&#41;</span>;
      WiFi.mode<span style="color: black;">&#40;</span>WIFI_STA<span style="color: black;">&#41;</span>;
&nbsp;
&nbsp;
      <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>isRtcValid<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
        <span style="color: #0080ff;">Serial</span>.print<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Connexion RAPIDE au Wi-Fi en cours...&quot;</span><span style="color: black;">&#41;</span>;
        WiFi.begin<span style="color: black;">&#40;</span>WLAN_SSID, WLAN_PASSWD, rtcData.channel, rtcData.ap_mac, <span style="color: #0080ff;">true</span><span style="color: black;">&#41;</span>;
      <span style="color: black;">&#125;</span> <span style="color: #0000ff;">else</span> <span style="color: black;">&#123;</span>
        <span style="color: #0080ff;">Serial</span>.print<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Connexion LENTE au Wi-Fi en cours...&quot;</span><span style="color: black;">&#41;</span>;
        WiFi.begin<span style="color: black;">&#40;</span>WLAN_SSID, WLAN_PASSWD<span style="color: black;">&#41;</span>;
      <span style="color: black;">&#125;</span>
&nbsp;
      isWifiStarted = <span style="color: #0080ff;">true</span>;
&nbsp;
&nbsp;
    <span style="color: #808080;">//---------------------------------------------</span>
    <span style="color: #808080;">// Step 4: Si le WiFi est pr&ecirc;t : Initialiser le client MQTT</span>
    <span style="color: #808080;">//---------------------------------------------</span>
&nbsp;
    <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>isWifiStarted<span style="color: black;">&#41;</span>
    <span style="color: black;">&#123;</span>
&nbsp;
  		<span style="color: #0000ff;">while</span> <span style="color: black;">&#40;</span>WiFi.status<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> != WL_CONNECTED<span style="color: black;">&#41;</span> 
  		<span style="color: black;">&#123;</span>
  		<span style="color: #0080ff;">Serial</span>.write<span style="color: black;">&#40;</span><span style="color: #FF0000;">'.'</span><span style="color: black;">&#41;</span>;
  		<span style="color: #0080ff;">delay</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">500</span><span style="color: black;">&#41;</span>;
      <span style="color: black;">&#125;</span>
&nbsp;
  	  <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot; =&gt; Connect&eacute;&quot;</span><span style="color: black;">&#41;</span>;
  	  <span style="color: #0080ff;">Serial</span>.print<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;adresse IP:&quot;</span><span style="color: black;">&#41;</span>;   <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span>WiFi.localIP<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>;
      isWifiReady = <span style="color: #0080ff;">true</span>;
&nbsp;
      <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>isWifiReady<span style="color: black;">&#41;</span> 
      <span style="color: black;">&#123;</span>	
        <span style="color: #808080;">/*  </span>
<span style="color: #808080;">&nbsp;       pubSubclient.setServer(server, 1883);</span>
<span style="color: #808080;">&nbsp;       D_timestamp();</span>
<span style="color: #808080;">&nbsp;       pubSubclient.connect(MQTT_CLIENT, MQTT_USER, MQTT_PASSWORD);</span>
<span style="color: #808080;">&nbsp;       delay(10);</span>
<span style="color: #808080;">&nbsp;       D_timestamp();</span>
<span style="color: #808080;">&nbsp;       D_println(&quot;MQTT connected&quot;);</span>
<span style="color: #808080;">&nbsp;       pubSubclient.loop();</span>
<span style="color: #808080;">&nbsp;       D_print(&quot;MQTT Publish: &quot;);</span>
<span style="color: #808080;">&nbsp;       D_println(MQTT_TOPIC);</span>
<span style="color: #808080;">&nbsp;       String topicString =&quot;channels/&quot; + String(MQTT_TOPIC) + &quot;/publish&quot;;</span>
<span style="color: #808080;">&nbsp;       String dataString = String(&quot;field1=&quot; + String(temperature) + &quot;&amp;field2=&quot; + String(humidity) + &quot;&amp;field3=&quot; + String(batteryPercentage) + &quot;&amp;field4=&quot; + String(piscine)+&quot;&amp;timezone=Europe/Paris&quot;);</span>
<span style="color: #808080;">&nbsp;       pubSubclient.publish(topicString.c_str(),dataString.c_str());</span>
<span style="color: #808080;">&nbsp;       delay(100);</span>
<span style="color: #808080;">&nbsp; </span>
<span style="color: #808080;">&nbsp;         // si la m&eacute;moire RTC n'&eacute;tait pas valide, on la met &agrave; jour pour le prochain r&eacute;veil</span>
<span style="color: #808080;">&nbsp;       if (!isRtcValid) {</span>
<span style="color: #808080;">&nbsp;           rtcData.channel = WiFi.channel();</span>
<span style="color: #808080;">&nbsp;           memcpy(rtcData.ap_mac, WiFi.BSSID(), 6); // les 6 octets de l'adresse mac</span>
<span style="color: #808080;">&nbsp;           // puis on met &agrave; jour le CRC dans la structure</span>
<span style="color: #808080;">&nbsp;           rtcData.crc32 = calculateCRC32MPGE2((uint8_t*)&amp;rtcData, sizeof rtcData - sizeof(uint32_t));</span>
<span style="color: #808080;">&nbsp;           Serial.println(&quot; Sauv config pour la prochaine fois en m&eacute;moire RTC. &quot;);</span>
<span style="color: #808080;">&nbsp;           printStructure(rtcData);</span>
<span style="color: #808080;">&nbsp;       }</span>
<span style="color: #808080;">&nbsp;       */</span>
&nbsp;
	      <span style="color: #0000ff;">if</span>  <span style="color: black;">&#40;</span>tensionBrute &gt; seuilTensionBruteBasse<span style="color: black;">&#41;</span>
        <span style="color: black;">&#123;</span>	
          D_timestamp<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
          D_println<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Batterie OK. Dormir....&quot;</span><span style="color: black;">&#41;</span>;
          D_printf<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Battery Percentage: %i&quot;</span>, batteryPercentage<span style="color: black;">&#41;</span>;	
		      <span style="color: #0080ff;">Serial</span>.flush<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
 		      esp_sleep_enable_timer_wakeup<span style="color: black;">&#40;</span><span style="color: #cc66cc;">60000000</span>ull<span style="color: black;">&#41;</span>; <span style="color: #808080;">// on programme un r&eacute;veil pour dans 1mn (en &micro;s) pour test</span>
          <span style="color: #808080;">//esp_sleep_enable_timer_wakeup(18000000000ull); // on programme un r&eacute;veil pour dans 30mn (en &micro;s)</span>
		    <span style="color: black;">&#125;</span> <span style="color: #0000ff;">else</span><span style="color: black;">&#123;</span>
			    D_timestamp<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
          D_println<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Batterie faible. Sommeil profond.&quot;</span><span style="color: black;">&#41;</span>;
          D_printf<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Battery Percentage: %i&quot;</span>, batteryPercentage<span style="color: black;">&#41;</span>;
          <span style="color: #0080ff;">Serial</span>.flush<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
          <span style="color: #808080;">//esp_sleep_enable_timer_wakeup(60000000ull); // on programme un r&eacute;veil pour dans 1mn (en &micro;s) pour test</span>
 		      <span style="color: #808080;">//esp_sleep_enable_timer_wakeup(3600000000ull); // on programme un r&eacute;veil pour dans 1h (en &micro;s)</span>
		    <span style="color: black;">&#125;</span>	
      <span style="color: black;">&#125;</span>  
	  <span style="color: black;">&#125;</span>
&nbsp;
   esp_deep_sleep_start<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;  
&nbsp;
<span style="color: black;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #808080;">//**************************************</span>
<span style="color: #808080;">//  LOOP</span>
<span style="color: #808080;">//**************************************</span>
<span style="color: #0000ff;">void</span> loop<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span><span style="color: black;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #808080;">//*******************************************************</span>
<span style="color: #0000ff;">void</span> updateBattery<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> 
<span style="color: black;">&#123;</span>
  <span style="color: #0000ff;">int16_t</span> tbx, tPar;
  <span style="color: #0000ff;">uint16_t</span> tbw, tbh;
  display.setRotation<span style="color: black;">&#40;</span><span style="color: #cc66cc;">3</span><span style="color: black;">&#41;</span>;
  display.setFont<span style="color: black;">&#40;</span>&amp;FreeMonoBold9pt7b<span style="color: black;">&#41;</span>;
  display.setTextColor<span style="color: black;">&#40;</span>GxEPD_BLACK<span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">uint16_t</span> x = <span style="color: #cc66cc;">225</span>;
  <span style="color: #0000ff;">uint16_t</span> y = <span style="color: #cc66cc;">120</span>;
  display.getTextBounds<span style="color: black;">&#40;</span>bat, x, y, &amp;tbx, &amp;tPar, &amp;tbw, &amp;tbh<span style="color: black;">&#41;</span>;
  display.setPartialWindow<span style="color: black;">&#40;</span>tbx, tPar, tbw, tbh<span style="color: black;">&#41;</span>;
  display.firstPage<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">do</span> <span style="color: black;">&#123;</span>
    <span style="color: #808080;">//display.fillScreen(GxEPD_WHITE);</span>
    display.setCursor<span style="color: black;">&#40;</span>x, y<span style="color: black;">&#41;</span>;
    display.print<span style="color: black;">&#40;</span>bat<span style="color: black;">&#41;</span>;
  <span style="color: black;">&#125;</span> <span style="color: #0000ff;">while</span> <span style="color: black;">&#40;</span>display.nextPage<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>;
  <span style="color: #0080ff;">delay</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">500</span><span style="color: black;">&#41;</span>;
&nbsp;
<span style="color: black;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #808080;">//*******************************************************</span>
<span style="color: #0000ff;">void</span> updatePiscine<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> 
<span style="color: black;">&#123;</span>
  <span style="color: #0000ff;">int16_t</span> tbx, tPar;
  <span style="color: #0000ff;">uint16_t</span> tbw, tbh;
  display.setRotation<span style="color: black;">&#40;</span><span style="color: #cc66cc;">3</span><span style="color: black;">&#41;</span>;
  display.setFont<span style="color: black;">&#40;</span>&amp;FreeSerifBold30pt7b<span style="color: black;">&#41;</span>;
  display.setTextColor<span style="color: black;">&#40;</span>GxEPD_BLACK<span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">uint16_t</span> x = <span style="color: #cc66cc;">120</span>;
  <span style="color: #0000ff;">uint16_t</span> y = <span style="color: #cc66cc;">80</span>;
  display.getTextBounds<span style="color: black;">&#40;</span>temp, x, y, &amp;tbx, &amp;tPar, &amp;tbw, &amp;tbh<span style="color: black;">&#41;</span>;
  display.setPartialWindow<span style="color: black;">&#40;</span>tbx, tPar, tbw, tbh<span style="color: black;">&#41;</span>;
  display.firstPage<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">do</span> <span style="color: black;">&#123;</span>
    display.fillScreen<span style="color: black;">&#40;</span>GxEPD_WHITE<span style="color: black;">&#41;</span>;
    display.setCursor<span style="color: black;">&#40;</span>x, y<span style="color: black;">&#41;</span>;
    display.print<span style="color: black;">&#40;</span>temp<span style="color: black;">&#41;</span>;
  <span style="color: black;">&#125;</span> <span style="color: #0000ff;">while</span> <span style="color: black;">&#40;</span>display.nextPage<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>;
   <span style="color: #0080ff;">delay</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">500</span><span style="color: black;">&#41;</span>;
<span style="color: black;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #0000ff;">void</span> batteriefaible<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
 display.setRotation<span style="color: black;">&#40;</span><span style="color: #cc66cc;">3</span><span style="color: black;">&#41;</span>;
    display.setFullWindow<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
    display.fillScreen<span style="color: black;">&#40;</span>GxEPD_BLACK<span style="color: black;">&#41;</span>;
    display.drawBitmap<span style="color: black;">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, myBitmapbatterie_faible, <span style="color: #cc66cc;">296</span>, <span style="color: #cc66cc;">128</span>, GxEPD_WHITE<span style="color: black;">&#41;</span>;
    <span style="color: #0000ff;">while</span> <span style="color: black;">&#40;</span>display.nextPage<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>; 
    <span style="color: #0080ff;">delay</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">500</span><span style="color: black;">&#41;</span> ;     
&nbsp;
<span style="color: black;">&#125;</span></pre></td></tr></table></code><hr />
</div>J'ai du certainement oublier quelque chose mais je ne trouve pas <br />
si vous avez quelques conseils , j'en serais preneur<br />
merci mille fois<br />
<br />
pascal</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f2094/general-developpement/programmation-systeme/embarque/arduino/">Arduino</category>
			<dc:creator>cobra38</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2183373/general-developpement/programmation-systeme/embarque/arduino/economie-d-energie-esp32c3-super-mini/</guid>
		</item>
		<item>
			<title>Bug dans utilisation capteur HX710</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2183178&amp;goto=newpost</link>
			<pubDate>Mon, 13 Apr 2026 08:15:07 GMT</pubDate>
			<description>Nous essayons actuellement de...</description>
			<content:encoded><![CDATA[<div>Nous essayons actuellement de créer un dispositif permettant de générer une pression négative dans un bocal en aspirant de l’air à l’aide d’une pompe.<br />
<br />
Actuellement, nous rencontrons un problème dans l’utilisation de ce capteur. Lorsque nous exécutons le code, celui-ci affiche en boucle le message suivant : “sensor not ready”.<br />
<br />
Est-ce que quelqu’un a déjà rencontré ce problème et saurait comment le résoudre ? Je ne trouve malheureusement rien à ce sujet sur Internet et je suis actuellement complètement bloqué dans la réalisation du dispositif.<br />
<br />
Le code que nous avons utilisé est le suivant :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #339933;">#include</span><span style="color: #FF0000;"> &quot;HX710B.h&quot;</span>
&nbsp;
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> DOUT = <span style="color: #cc66cc;">2</span>;
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> CLK_PIN = <span style="color: #cc66cc;">3</span>;
&nbsp;
HX710B sensor;
&nbsp;
<span style="color: #0000ff;">void</span> setup<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
  <span style="color: #0080ff;">Serial</span>.begin<span style="color: black;">&#40;</span><span style="color: #cc66cc;">115200</span><span style="color: black;">&#41;</span>;
  sensor.begin<span style="color: black;">&#40;</span>DOUT, CLK_PIN<span style="color: black;">&#41;</span>;
<span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> loop<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
  <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>sensor.is_ready<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
    <span style="color: #0080ff;">Serial</span>.print<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;mmHg: &quot;</span><span style="color: black;">&#41;</span>;
    <span style="color: #0080ff;">Serial</span>.print<span style="color: black;">&#40;</span>sensor.mmHg<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>;
&nbsp;
    <span style="color: #0080ff;">Serial</span>.print<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot; | PSI: &quot;</span><span style="color: black;">&#41;</span>;
    <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span>sensor.psi<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>;
  <span style="color: black;">&#125;</span> <span style="color: #0000ff;">else</span> <span style="color: black;">&#123;</span>
    <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Sensor not ready&quot;</span><span style="color: black;">&#41;</span>;
  <span style="color: black;">&#125;</span>
&nbsp;
  <span style="color: #0080ff;">delay</span><span style="color: black;">&#40;</span><span style="color: #cc66cc;">1000</span><span style="color: black;">&#41;</span>;
<span style="color: black;">&#125;</span></pre></td></tr></table></code><hr />
</div>La bibliothèque utilisée est la suivante : « hx710B_pressure_sensor-main » et se trouve sur internet: <a rel="nofollow" href="https://github.com/rppelayo/hx710B_pressure_sensor" target="_blank">https://github.com/rppelayo/hx710B_pressure_sensor</a>.<br />
<img src="https://www.developpez.net/forums/attachments/p675558d1776068031/general-developpement/programmation-systeme/embarque/arduino/bug-utilisation-capteur-hx710/connexion-capteur-arduino.png/" border="0" alt="Nom : connexion capteur et arduino.png
Affichages : 214
Taille : 553,9 Ko"  style="float: CONFIG" /><img src="https://www.developpez.net/forums/attachments/p675558d1776068031/general-developpement/programmation-systeme/embarque/arduino/bug-utilisation-capteur-hx710/connexion-capteur-arduino.png/" border="0" alt="Nom : connexion capteur et arduino.png
Affichages : 214
Taille : 553,9 Ko"  style="float: CONFIG" /><br />
En annexe, vous trouverez également le schéma de câblage que nous avons utilisé. Si quelqu’un connaît ce problème ou peut nous aider avec une solution potentielle, ce serait vraiment apprécié.<br />
<br />
Nous vous remercions d’avance !</div>


	<div style="padding:10px">

	

	
		<fieldset class="fieldset">
			<legend>Images attachées</legend>
				<div style="padding:10px">
				<img class="attach" src="https://www.developpez.net/forums/attachments/p675558d1776068031/general-developpement/programmation-systeme/embarque/arduino/bug-utilisation-capteur-hx710/connexion-capteur-arduino.png/" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f2094/general-developpement/programmation-systeme/embarque/arduino/">Arduino</category>
			<dc:creator>vicdm</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2183178/general-developpement/programmation-systeme/embarque/arduino/bug-utilisation-capteur-hx710/</guid>
		</item>
		<item>
			<title>Piloter 4 relais sur A1 A2 A3 A4</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2183054&amp;goto=newpost</link>
			<pubDate>Sun, 05 Apr 2026 17:48:33 GMT</pubDate>
			<description>Bonsoir a toutes et tous,...</description>
			<content:encoded><![CDATA[<div>Bonsoir a toutes et tous,<br />
sans exeperience en arduino et n'ayant rien trouvé correspondant a mon probleme je vous soumet une question:<br />
<br />
je cherche a réalisé une commande de 4 relais connecté sur les port A1 A2 A3 A4 arduino uno <br />
je recoie tres bien ma temperature de ma sonde et je l'affiche avec &quot;&quot;&quot; TEMPS&quot;&quot;&quot;<br />
<br />
mais mon probleme est que je n'ai que le dernier relais qui fonctionne et se coupe mais pas les trois premier <br />
mais ce qui est bizarre si je ne met que le code du premier relais la premiere fonction travail corectement<br />
pareille avec chaque relais <br />
si je le commande seul A1 OU A2 OU A3 OU A4 sans les autre commande du code sa fonctionne pour chaque relais <br />
<br />
pouvez vous m'aidé car je tourne un peut en rond<br />
voici mon code <br />
en gros je cherche a dire <br />
si rl1 (a1 , high) les autre relais seront A2 A3 A4 LOW<br />
cordialement<br />
<br />
<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
   <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>TEMPS==<span style="color: #cc66cc;">10.00</span><span style="color: black;">&#41;</span><span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>A1, <span style="color: #0080ff;">HIGH</span><span style="color: black;">&#41;</span>;
   <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>A2, <span style="color: #0080ff;">HIGH</span><span style="color: black;">&#41;</span> <span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>A2, <span style="color: #0080ff;">LOW</span><span style="color: black;">&#41;</span>;
   <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>A3, <span style="color: #0080ff;">HIGH</span><span style="color: black;">&#41;</span><span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>A3, <span style="color: #0080ff;">LOW</span><span style="color: black;">&#41;</span>;
   <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>A4, <span style="color: #0080ff;">HIGH</span><span style="color: black;">&#41;</span><span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>A4, <span style="color: #0080ff;">LOW</span><span style="color: black;">&#41;</span>;   
&nbsp;
&nbsp;
   <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>TEMPS==<span style="color: #cc66cc;">15.00</span><span style="color: black;">&#41;</span><span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>A2, <span style="color: #0080ff;">HIGH</span><span style="color: black;">&#41;</span>;
   <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>A1,<span style="color: #0080ff;">HIGH</span><span style="color: black;">&#41;</span><span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>A1, <span style="color: #0080ff;">LOW</span><span style="color: black;">&#41;</span>;
   <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>A3,<span style="color: #0080ff;">HIGH</span><span style="color: black;">&#41;</span><span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>A3, <span style="color: #0080ff;">LOW</span><span style="color: black;">&#41;</span>;
   <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>A4,<span style="color: #0080ff;">HIGH</span><span style="color: black;">&#41;</span><span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>A4, <span style="color: #0080ff;">LOW</span><span style="color: black;">&#41;</span>;  
&nbsp;
&nbsp;
  <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>TEMP==<span style="color: #cc66cc;">20.00</span><span style="color: black;">&#41;</span> <span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>A3, <span style="color: #0080ff;">HIGH</span><span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>A1, <span style="color: #0080ff;">HIGH</span><span style="color: black;">&#41;</span><span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>A1, <span style="color: #0080ff;">LOW</span><span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>A2, <span style="color: #0080ff;">HIGH</span><span style="color: black;">&#41;</span><span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>A2, <span style="color: #0080ff;">LOW</span><span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>A4, <span style="color: #0080ff;">HIGH</span><span style="color: black;">&#41;</span><span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>A4, <span style="color: #0080ff;">LOW</span><span style="color: black;">&#41;</span>;
&nbsp;
&nbsp;
  <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>TEMP==<span style="color: #cc66cc;">25.00</span><span style="color: black;">&#41;</span> <span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>A4, <span style="color: #0080ff;">HIGH</span><span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>A1, <span style="color: #0080ff;">HIGH</span><span style="color: black;">&#41;</span><span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>A1, <span style="color: #0080ff;">LOW</span><span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>A2, <span style="color: #0080ff;">HIGH</span><span style="color: black;">&#41;</span><span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>A2, <span style="color: #0080ff;">LOW</span><span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>A3, <span style="color: #0080ff;">HIGH</span><span style="color: black;">&#41;</span><span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>A3, <span style="color: #0080ff;">LOW</span><span style="color: black;">&#41;</span>;</pre></td></tr></table></code><hr />
</div></div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f2094/general-developpement/programmation-systeme/embarque/arduino/">Arduino</category>
			<dc:creator>alll1</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2183054/general-developpement/programmation-systeme/embarque/arduino/piloter-4-relais-a1-a2-a3-a4/</guid>
		</item>
		<item>
			<title><![CDATA[<time.h> en français]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2182947&amp;goto=newpost</link>
			<pubDate>Tue, 31 Mar 2026 08:13:06 GMT</pubDate>
			<description><![CDATA[Bonjour à tous , 
 
il s'agit...]]></description>
			<content:encoded><![CDATA[<div>Bonjour à tous ,<br />
<br />
il s'agit je pense ici d'un vrai serpent de mer<br />
mais je n'arrive pas à passer &lt;time.h&gt; en français<br />
<br />
j'ai essayé les termes trouvés sur le net comme <br />
setlocale(LC_TIME,&quot;&quot;);<br />
setlocale(LC_TIME,&quot;fr-FR&quot;);<br />
setlocale(LC_TIME,&quot;&quot;fr_FR.UTF-8&quot;&quot;);     <br />
etc ...<br />
sans succès <br />
<br />
je mets ici ma fonction :<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
&nbsp;
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">char</span>* jours<span style="color: black;">&#91;</span><span style="color: black;">&#93;</span> = <span style="color: black;">&#123;</span>
  <span style="color: #FF0000;">&quot;Dim&quot;</span>,<span style="color: #FF0000;">&quot;Lun&quot;</span>,<span style="color: #FF0000;">&quot;Mar&quot;</span>,<span style="color: #FF0000;">&quot;Mer&quot;</span>,
  <span style="color: #FF0000;">&quot;Jeu&quot;</span>,<span style="color: #FF0000;">&quot;Ven&quot;</span>,<span style="color: #FF0000;">&quot;Sam&quot;</span>
<span style="color: black;">&#125;</span>;
&nbsp;
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">char</span>* mois<span style="color: black;">&#91;</span><span style="color: black;">&#93;</span> = <span style="color: black;">&#123;</span>
  <span style="color: #FF0000;">&quot;Janv&quot;</span>,<span style="color: #FF0000;">&quot;Fev&quot;</span>,<span style="color: #FF0000;">&quot;Mars&quot;</span>,<span style="color: #FF0000;">&quot;Avr&quot;</span>,<span style="color: #FF0000;">&quot;Mai&quot;</span>,<span style="color: #FF0000;">&quot;Jun&quot;</span>,
  <span style="color: #FF0000;">&quot;Jul&quot;</span>,<span style="color: #FF0000;">&quot;Aout&quot;</span>,<span style="color: #FF0000;">&quot;Sept&quot;</span>,<span style="color: #FF0000;">&quot;Oct&quot;</span>,<span style="color: #FF0000;">&quot;Nov&quot;</span>,<span style="color: #FF0000;">&quot;Dec&quot;</span>
<span style="color: black;">&#125;</span>;
&nbsp;
.../...
&nbsp;
<span style="color: #0000ff;">void</span> drawClock<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
  setlocale<span style="color: black;">&#40;</span>LC_TIME,<span style="color: #FF0000;">&quot;&quot;</span><span style="color: black;">&#41;</span>; 
  <span style="color: #0000ff;">struct</span> <span style="color: #0000ff;">tm</span> t;
&nbsp;
  <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>!getLocalTime<span style="color: black;">&#40;</span>&amp;t<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
    display.setFont<span style="color: black;">&#40;</span>NULL<span style="color: black;">&#41;</span>;
    display.setCursor<span style="color: black;">&#40;</span><span style="color: #cc66cc;">30</span>, <span style="color: #cc66cc;">30</span><span style="color: black;">&#41;</span>;
    display.print<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Synchro en cours...&quot;</span><span style="color: black;">&#41;</span>;
    <span style="color: #0000ff;">return</span>;
  <span style="color: black;">&#125;</span>
&nbsp;
  <span style="color: #0000ff;">int</span> h12 = t.tm_hour ;
  display.setTextColor<span style="color: black;">&#40;</span>SSD1306_WHITE<span style="color: black;">&#41;</span>;
  display.setFont<span style="color: black;">&#40;</span>NULL<span style="color: black;">&#41;</span>;
  display.setTextSize<span style="color: black;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: black;">&#41;</span>;
  display.setCursor<span style="color: black;">&#40;</span><span style="color: #cc66cc;">114</span>, <span style="color: #cc66cc;">0</span><span style="color: black;">&#41;</span>;
  <span style="color: #808080;">//display.print(ampm);</span>
  display.setFont<span style="color: black;">&#40;</span>&amp;FreeSansBold18pt7b<span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">char</span> timeStr<span style="color: black;">&#91;</span><span style="color: #cc66cc;">6</span><span style="color: black;">&#93;</span>;
  sprintf<span style="color: black;">&#40;</span>timeStr, <span style="color: #FF0000;">&quot;%02d:%02d&quot;</span>, h12, t.tm_min<span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">int16_t</span> x1, y1;
  <span style="color: #0000ff;">uint16_t</span> w, h;
  display.getTextBounds<span style="color: black;">&#40;</span>timeStr, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, &amp;x1, &amp;y1, &amp;w, &amp;h<span style="color: black;">&#41;</span>;
  display.setCursor<span style="color: black;">&#40;</span><span style="color: black;">&#40;</span>SCREEN_WIDTH - w<span style="color: black;">&#41;</span> / <span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">42</span><span style="color: black;">&#41;</span>;
  display.print<span style="color: black;">&#40;</span>timeStr<span style="color: black;">&#41;</span>;
  display.setFont<span style="color: black;">&#40;</span>&amp;FreeSans9pt7b<span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">const</span> <span style="color: #0000ff;">char</span>* j =jours<span style="color: black;">&#91;</span>t.tm_wday<span style="color: black;">&#93;</span>;  
  <span style="color: #0000ff;">const</span> <span style="color: #0000ff;">char</span>* m =mois<span style="color: black;">&#91;</span>t.tm_mon<span style="color: black;">&#93;</span>;
  <span style="color: #0000ff;">char</span> dateStr<span style="color: black;">&#91;</span><span style="color: #cc66cc;">20</span><span style="color: black;">&#93;</span>;
  strftime<span style="color: black;">&#40;</span>dateStr, <span style="color: #cc66cc;">20</span>, <span style="color: #FF0000;">&quot;%j %d %m&quot;</span>, &amp;t<span style="color: black;">&#41;</span>;
  display.getTextBounds<span style="color: black;">&#40;</span>dateStr, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, &amp;x1, &amp;y1, &amp;w, &amp;h<span style="color: black;">&#41;</span>;
  display.setCursor<span style="color: black;">&#40;</span><span style="color: black;">&#40;</span>SCREEN_WIDTH - w<span style="color: black;">&#41;</span> / <span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">62</span><span style="color: black;">&#41;</span>;
  display.print<span style="color: black;">&#40;</span>dateStr<span style="color: black;">&#41;</span>;
<span style="color: black;">&#125;</span></pre></td></tr></table></code><hr />
</div>j'obtiens par ex : <br />
<br />
20:35 <br />
<b>090 31 03</b> en lieu et place de<br />
<b>Mar 31 Mars</b><br />
<br />
<br />
Merci ....</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f2094/general-developpement/programmation-systeme/embarque/arduino/">Arduino</category>
			<dc:creator>cobra38</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2182947/general-developpement/programmation-systeme/embarque/arduino/time-h-francais/</guid>
		</item>
		<item>
			<title><![CDATA[Mise à jour fichier Data avec <LittleFS.h>]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2182926&amp;goto=newpost</link>
			<pubDate>Mon, 30 Mar 2026 09:50:44 GMT</pubDate>
			<description>Bonjour à tous,  
 
Tous les...</description>
			<content:encoded><![CDATA[<div>Bonjour à tous, <br />
<br />
Tous les 6 mois , je suis obligé de remettre à l'heure mon application météo ( Wemos ) <br />
cette année comme les autres années au moment du changement d'heure et ceci depuis 2021 , je fais la mise à jour de mon fichier &quot;config.txt&quot; via &quot;ESP8266 sketch data upload&quot;<br />
mais cette fois plus rien ne fonctionne (?)<br />
la mise à jour se lance  :<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
/<span style="color: #cc66cc;">01</span>d32.jpg
../..
/alarm.txt
/config.txt  &lt;=====================
/ik.txt
/i_stat.txt
/wind_2.jpg
/wind_4.jpg
/wind_6.jpg
/wind_8.jpg
<span style="color: black;">&#91;</span>SPIFFS<span style="color: black;">&#93;</span> upload  : C:\Users\UTILIS~<span style="color: #cc66cc;">1</span>\AppData\Local\Temp<span style="color: #800000;">\a</span>rduino_build_795945/meteoV12.spiffs.bin
<span style="color: black;">&#91;</span>SPIFFS<span style="color: black;">&#93;</span> address  : <span style="color: #cc66cc;">0x200000</span>
<span style="color: black;">&#91;</span>SPIFFS<span style="color: black;">&#93;</span> reset    : nodemcu
<span style="color: black;">&#91;</span>SPIFFS<span style="color: black;">&#93;</span> port     : COM4
<span style="color: black;">&#91;</span>SPIFFS<span style="color: black;">&#93;</span> speed    : <span style="color: #cc66cc;">921600</span>
&nbsp;
Uploading <span style="color: #cc66cc;">2076672</span> bytes from C:\Users\UTILIS~<span style="color: #cc66cc;">1</span>\AppData\Local\Temp<span style="color: #800000;">\a</span>rduino_build_795945/meteoV12.spiffs.bin to flash at <span style="color: #cc66cc;">0x00200000</span>
................................................................................ <span style="color: black;">&#91;</span>  <span style="color: #cc66cc;">3</span>% <span style="color: black;">&#93;</span>
................................................................................ <span style="color: black;">&#91;</span>  <span style="color: #cc66cc;">7</span>% <span style="color: black;">&#93;</span>
................................................................................ <span style="color: black;">&#91;</span> <span style="color: #cc66cc;">11</span>% <span style="color: black;">&#93;</span>
................................................................................ <span style="color: black;">&#91;</span> <span style="color: #cc66cc;">15</span>% <span style="color: black;">&#93;</span>
................................................................................ <span style="color: black;">&#91;</span> <span style="color: #cc66cc;">19</span>% <span style="color: black;">&#93;</span>
................................................................................ <span style="color: black;">&#91;</span> <span style="color: #cc66cc;">23</span>% <span style="color: black;">&#93;</span>
................................................................................ <span style="color: black;">&#91;</span> <span style="color: #cc66cc;">27</span>% <span style="color: black;">&#93;</span>
................................................................................ <span style="color: black;">&#91;</span> <span style="color: #cc66cc;">31</span>% <span style="color: black;">&#93;</span>
................................................................................ <span style="color: black;">&#91;</span> <span style="color: #cc66cc;">35</span>% <span style="color: black;">&#93;</span>
................................................................................ <span style="color: black;">&#91;</span> <span style="color: #cc66cc;">39</span>% <span style="color: black;">&#93;</span>
................................................................................ <span style="color: black;">&#91;</span> <span style="color: #cc66cc;">43</span>% <span style="color: black;">&#93;</span>
................................................................................ <span style="color: black;">&#91;</span> <span style="color: #cc66cc;">47</span>% <span style="color: black;">&#93;</span>
................................................................................ <span style="color: black;">&#91;</span> <span style="color: #cc66cc;">51</span>% <span style="color: black;">&#93;</span>
................................................................................ <span style="color: black;">&#91;</span> <span style="color: #cc66cc;">55</span>% <span style="color: black;">&#93;</span>
................................................................................ <span style="color: black;">&#91;</span> <span style="color: #cc66cc;">59</span>% <span style="color: black;">&#93;</span>
................................................................................ <span style="color: black;">&#91;</span> <span style="color: #cc66cc;">63</span>% <span style="color: black;">&#93;</span>
................................................................................ <span style="color: black;">&#91;</span> <span style="color: #cc66cc;">67</span>% <span style="color: black;">&#93;</span>
................................................................................ <span style="color: black;">&#91;</span> <span style="color: #cc66cc;">71</span>% <span style="color: black;">&#93;</span>
................................................................................ <span style="color: black;">&#91;</span> <span style="color: #cc66cc;">74</span>% <span style="color: black;">&#93;</span>
................................................................................ <span style="color: black;">&#91;</span> <span style="color: #cc66cc;">78</span>% <span style="color: black;">&#93;</span>
................................................................................ <span style="color: black;">&#91;</span> <span style="color: #cc66cc;">82</span>% <span style="color: black;">&#93;</span>
................................................................................ <span style="color: black;">&#91;</span> <span style="color: #cc66cc;">86</span>% <span style="color: black;">&#93;</span>
................................................................................ <span style="color: black;">&#91;</span> <span style="color: #cc66cc;">90</span>% <span style="color: black;">&#93;</span>
................................................................................ <span style="color: black;">&#91;</span> <span style="color: #cc66cc;">94</span>% <span style="color: black;">&#93;</span>
................................................................................ <span style="color: black;">&#91;</span> <span style="color: #cc66cc;">98</span>% <span style="color: black;">&#93;</span>
............................                                                     <span style="color: black;">&#91;</span> <span style="color: #cc66cc;">100</span>% <span style="color: black;">&#93;</span></pre></td></tr></table></code><hr />
</div> et je n'arrive même plus à compiler mon programme , il me donne cette erreur :<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
meteoV12:<span style="color: #cc66cc;">184</span>:<span style="color: #cc66cc;">22</span>: fatal error: LittleFS.h: No such file <span style="color: #0000ff;">or</span> directory
 <span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;LittleFS.h&gt;</span>  &lt;===================================
                      ^
compilation terminated.
Plusieurs biblioth&egrave;que trouv&eacute;es pour <span style="color: #FF0000;">&quot;WiFiClient.h&quot;</span>
Utilis&eacute; : C:\Users\Utilisateur\Documents\ArduinoData\packages\esp8266\hardware\esp8266<span style="color: #800000;">\2</span><span style="color: #cc66cc;">.5</span>.<span style="color: #cc66cc;">0</span>\libraries\ESP8266WiFi
Non utilis&eacute; : C:\Users\Utilisateur\Documents\Arduino\libraries\WiFi101
Non utilis&eacute; : C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.<span style="color: #cc66cc;">8.57</span>.<span style="color: #cc66cc;">0</span>_x86__mdqgnx93n4wtt\libraries\WiFi
exit status <span style="color: #cc66cc;">1</span>
LittleFS.h: No such file <span style="color: #0000ff;">or</span> directory</pre></td></tr></table></code><hr />
</div>j'utilise pourtant la même bibliothèque du gestionnaire de cartes : ESP8266 =&gt; 2.5.0 que précédemment <br />
<br />
En conclusion :<br />
1)  la mise à jour de mon fichier config.txt ne semble pas avoir été faite<br />
2) je soupçonne fortement qu'il ait effacé en mémoire mes anciens fichiers car je n'arrive plus à lire l'ancien fichier config.txt <br />
3) pour finir je ne peux plus compiler mon programme suite à l'erreur ...<br />
<br />
donc si vous avez une petit idée, je suis preneur de vos conseils précieux conseils .... <br />
mille mercis <br />
pascal</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f2094/general-developpement/programmation-systeme/embarque/arduino/">Arduino</category>
			<dc:creator>cobra38</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2182926/general-developpement/programmation-systeme/embarque/arduino/mise-jour-fichier-data-littlefs-h/</guid>
		</item>
	</channel>
</rss>
