<?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>Thu, 23 Jul 2026 03:05:47 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>problème lecture 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-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 : 112
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 : 114
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 : 211
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 : 211
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>
		<item>
			<title>Bibliothèque des librairies</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2182856&amp;goto=newpost</link>
			<pubDate>Wed, 25 Mar 2026 13:02:28 GMT</pubDate>
			<description>Bonjour à tous,  
 
je...</description>
			<content:encoded><![CDATA[<div>Bonjour à tous, <br />
<br />
je voudrais savoir si à votre connaissance, il existe une librairie Arduino ou autre qui permettrait de lister l'ensemble des librairies et leurs versions <br />
utilisées lors de la compilation d'un croquis mais de façon automatique <br />
<br />
ma question vous semblera peut-être naïve mais serait certainement très utile</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/d2182856/general-developpement/programmation-systeme/embarque/arduino/bibliotheque-librairies/</guid>
		</item>
		<item>
			<title>Impossible de faire fonctionner LoRa Emetteur</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2182810&amp;goto=newpost</link>
			<pubDate>Sun, 22 Mar 2026 09:58:55 GMT</pubDate>
			<description>Bonjour à Tous, 
 
Mon...</description>
			<content:encoded><![CDATA[<div>Bonjour à Tous,<br />
<br />
Mon problème du jour est de faire fonctionner dans mon module Emetteur , mon module LoRa + uPesy <br />
je précise que ce programme a déjà fonctionné ( il y a 2 ans env ) mais lors d'une légère modification des entrées , je n'arrive plus à le refaire fonctionner<br />
j'ai regardé l'ensemble des raccordements à mille reprises pour m'assurer de la bonne connectique <br />
changer de module RA-01  <br />
<br />
Librairie carte ESP32 : 3.3.7<br />
             LoRa : 0.8.0 <br />
<br />
je poste ici le programme , je serais preneur de quelques conseils car là je ne vois pas où se situe le 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 />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 /></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; &nbsp; &nbsp;EMETTEUR</span>
<span style="color: #808080; font-weight: bold;">**************************************/</span>
&nbsp;
&nbsp;
<span style="color: #808080; font-weight: bold;">/***************************************</span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ESP32 WROOM LOW POWER DEVKIT</span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; uPesy</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;|1 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 32| GPIO23 &nbsp; MOSI</span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|2 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 31|</span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|3 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 30|</span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|4 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 29|</span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|5 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 28|</span>
<span style="color: #808080; font-weight: bold;">&nbsp; DATA &nbsp; &nbsp;GPIO32 &nbsp; |6 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 27| GPIO19 &nbsp; MISO</span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|7 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 26| GPIO18 &nbsp; SCK </span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|8 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 25| </span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|9 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 24| </span>
<span style="color: #808080; font-weight: bold;">&nbsp; DIO0 &nbsp; &nbsp; GPIO27 &nbsp;|10 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;23|</span>
<span style="color: #808080; font-weight: bold;">&nbsp; RST &nbsp; &nbsp; &nbsp;GPIO14 &nbsp;|11 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;22| &nbsp;</span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|12 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;21| </span>
<span style="color: #808080; font-weight: bold;">&nbsp; NSS &nbsp; &nbsp; &nbsp;GPIO13 &nbsp;|13 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;20| &nbsp;</span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|14 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;19|</span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|15 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;18| 3V3 VCC</span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|16 &nbsp; &nbsp; |----| 17| GND</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;">*************************************/</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;driver/rtc_io.h&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;LoRa.h&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;SPI.h&gt;</span>
&nbsp;
<span style="color: #808080;">// LoRa definition</span>
<span style="color: #339933;">#define SCK     18   // GPIO18 -- SX1278's SCK</span>
<span style="color: #339933;">#define MISO    19   // GPIO19 -- SX1278's MISO</span>
<span style="color: #339933;">#define MOSI    23   // GPIO23 -- SX1278's MOSI</span>
<span style="color: #339933;">#define SS      5    // GPIO5  -- SX1278's NSS</span>
<span style="color: #339933;">#define RST     14   // GPIO14 -- SX1278's RST</span>
<span style="color: #339933;">#define DI0     27   // GPIO27 -- SX1278's IRQ(Interrupt Request)</span>
&nbsp;
<span style="color: #339933;">#define LORA_SS_GPIO_NUM  GPIO_NUM_5</span>
<span style="color: #339933;">#define LORA_RST_GPIO_NUM GPIO_NUM_14</span>
&nbsp;
<span style="color: #339933;">#define BAND 433E6  //433E6 for Asia, 866E6 for Europe and 915E6 for North America</span>
&nbsp;
<span style="color: #0000ff;">const</span> gpio_num_t pinBAL    = GPIO_NUM_32; <span style="color: #808080;">// RTC GPIO for ESP32: 0, 2, 4, 12-15, 25-27, 32-39;</span>
<span style="color: #0000ff;">const</span> gpio_num_t vbatPin   = GPIO_NUM_35;
&nbsp;
<span style="color: #808080;">//#define BUTTON_PIN_BITMASK (1ull &lt;&lt; pinBAL) // </span>
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">uint64_t</span>  uS_TO_S_FACTOR = <span style="color: #cc66cc;">1000000</span>ull; <span style="color: #808080;">/* Facteur de conversion des microsecondes en secondes */</span>
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">uint64_t</span>  TIME_TO_SLEEP = <span style="color: #cc66cc;">300</span>ull; <span style="color: #808080;">/* Temps de mise en veille de l'ESP32 (en secondes) ici 5Mn */</span>
&nbsp;
RTC_DATA_ATTR <span style="color: #0000ff;">int</span> bootCount = <span style="color: #cc66cc;">0</span>;
RTC_DATA_ATTR <span style="color: #0000ff;">int</span> Vbat = <span style="color: #cc66cc;">0</span>;
&nbsp;
<span style="color: #0000ff;">int</span> vBat;
<span style="color: #339933;">#define DELTA 32</span>
&nbsp;
<span style="color: #808080;">//***********************************************</span>
<span style="color: #0000ff;">void</span> loraMessage<span style="color: black;">&#40;</span><span style="color: #0000ff;">const</span> <span style="color: #0000ff;">char</span> * message<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
  LoRa.beginPacket<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
  LoRa.println<span style="color: black;">&#40;</span>message<span style="color: black;">&#41;</span>;
  LoRa.endPacket<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
<span style="color: black;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #0000ff;">void</span> envoiVbatBrut<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
   <span style="color: #0000ff;">char</span> str<span style="color: black;">&#91;</span><span style="color: #cc66cc;">8</span><span style="color: black;">&#93;</span>;                                  <span style="color: #808080;">// 6 caract&egrave;res devraient suffire : V4095 et /0</span>
   <span style="color: #0000ff;">int</span>  cmpt = <span style="color: #cc66cc;">8</span>;
   <span style="color: #0000ff;">int</span> vBatOld = <span style="color: #cc66cc;">0</span> ; 
   <span style="color: #0000ff;">do</span> <span style="color: black;">&#123;</span>
      cmpt--;
	  vBatOld = vBat;
	  vBat = <span style="color: #0080ff;">analogRead</span><span style="color: black;">&#40;</span>vbatPin<span style="color: black;">&#41;</span>; <span style="color: #808080;">// tension &eacute;chantillonn&eacute;e brute</span>
   <span style="color: black;">&#125;</span> <span style="color: #0000ff;">while</span><span style="color: black;">&#40;</span><span style="color: black;">&#40;</span><span style="color: #0080ff;">abs</span><span style="color: black;">&#40;</span>vBat-vBatOld<span style="color: black;">&#41;</span> &gt; DELTA<span style="color: black;">&#41;</span> &amp;&amp; <span style="color: black;">&#40;</span>cmpt &gt; <span style="color: #cc66cc;">0</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><span style="color: #FF0000;">&quot;Valeur Brute = &quot;</span><span style="color: black;">&#41;</span>; 
   <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span>vBat<span style="color: black;">&#41;</span>;
   sprintf<span style="color: black;">&#40;</span>str, <span style="color: #FF0000;">&quot;V%d&quot;</span>, vBat<span style="color: black;">&#41;</span>;                    <span style="color: #808080;">// 'V' suivi de la tension brute </span>
   loraMessage<span style="color: black;">&#40;</span>str<span style="color: black;">&#41;</span>;                             <span style="color: #808080;">// Envoi du message</span>
<span style="color: black;">&#125;</span> 
&nbsp;
&nbsp;
<span style="color: #808080;">//***********************************************</span>
<span style="color: #0000ff;">void</span> action<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
  esp_sleep_wakeup_cause_t source_reveil = esp_sleep_get_wakeup_cause<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">uint64_t</span> GPIO_reason = esp_sleep_get_ext1_wakeup_status<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
&nbsp;
  <span style="color: #0000ff;">switch</span> <span style="color: black;">&#40;</span>source_reveil<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</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 par un timer&quot;</span><span style="color: black;">&#41;</span>;
      envoiVbatBrut<span style="color: black;">&#40;</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>.print<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Aucun R&eacute;veil caus&eacute; par le Deep Sleep :&quot;</span><span style="color: black;">&#41;</span>;
      <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span>source_reveil<span style="color: black;">&#41;</span>;
      <span style="color: #0000ff;">break</span>;
  <span style="color: black;">&#125;</span>
&nbsp;
  <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>GPIO_reason != <span style="color: #cc66cc;">0</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
    <span style="color: #0000ff;">const</span> <span style="color: #0000ff;">uint64_t</span> gpioWakeUp = __builtin_ctzll<span style="color: black;">&#40;</span>GPIO_reason<span style="color: black;">&#41;</span>; <span style="color: #808080;">// __builtin_ctzll finds the position of the rightmost 1</span>
    <span style="color: #0000ff;">switch</span> <span style="color: black;">&#40;</span>gpioWakeUp<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
      <span style="color: #0000ff;">case</span> pinBAL: loraMessage<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;1&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>.println<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Aucun GPIO connu n'a d&eacute;clench&eacute; le r&eacute;veil&quot;</span><span style="color: black;">&#41;</span>; <span style="color: #0000ff;">break</span>;
    <span style="color: black;">&#125;</span>
  <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>
  rtc_gpio_hold_dis<span style="color: black;">&#40;</span>LORA_SS_GPIO_NUM<span style="color: black;">&#41;</span>;
  rtc_gpio_hold_dis<span style="color: black;">&#40;</span>LORA_RST_GPIO_NUM<span style="color: black;">&#41;</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: #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>;
&nbsp;
  SPI.begin<span style="color: black;">&#40;</span>SCK, MISO, MOSI, SS<span style="color: black;">&#41;</span>;
  LoRa.setPins<span style="color: black;">&#40;</span>SS, RST, DI0<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;LoRa : Emetteur&quot;</span><span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>!LoRa.begin<span style="color: black;">&#40;</span>BAND<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span> <span style="color: #808080;">// LoRa_frequency</span>
    <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Le lancement de LoRa a &eacute;chou&eacute; !&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> yield<span style="color: black;">&#40;</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: #FF0000;">&quot;init ok&quot;</span><span style="color: black;">&#41;</span>;
&nbsp;
  <span style="color: #808080;">//Incr&eacute;menter le num&eacute;ro de d&eacute;marrage et l'imprimer &agrave; chaque red&eacute;marrage</span>
  ++bootCount;
  <span style="color: #0080ff;">Serial</span>.print<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Boot number: &quot;</span><span style="color: black;">&#41;</span>;  <span style="color: #0080ff;">Serial</span>.println<span style="color: black;">&#40;</span>bootCount<span style="color: black;">&#41;</span>;
&nbsp;
  <span style="color: #808080;">//action();</span>
&nbsp;
  <span style="color: #808080;">// go back to sleep</span>
  <span style="color: #808080;">//LoRa.end();</span>
  <span style="color: #808080;">//delay(600);</span>
  LoRa.sleep<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
&nbsp;
  <span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>SS, <span style="color: #0080ff;">HIGH</span><span style="color: black;">&#41;</span>; <span style="color: #808080;">// Normalement la broche est d&eacute;j&agrave; &agrave; l'&eacute;tat haut</span>
  rtc_gpio_hold_en<span style="color: black;">&#40;</span>LORA_SS_GPIO_NUM<span style="color: black;">&#41;</span>;
&nbsp;
  <span style="color: #0080ff;">digitalWrite</span><span style="color: black;">&#40;</span>RST, <span style="color: #0080ff;">HIGH</span><span style="color: black;">&#41;</span>; <span style="color: #808080;">// Normalement la broche est d&eacute;j&agrave; &agrave; l'&eacute;tat haut</span>
  rtc_gpio_hold_en<span style="color: black;">&#40;</span>LORA_RST_GPIO_NUM<span style="color: black;">&#41;</span>;
&nbsp;
&nbsp;
&nbsp;
 <span style="color: #808080;">// esp_sleep_enable_ext1_wakeup(BUTTON_PIN_BITMASK, ESP_EXT1_WAKEUP_ANY_HIGH);</span>
  esp_sleep_enable_timer_wakeup<span style="color: black;">&#40;</span>TIME_TO_SLEEP * uS_TO_S_FACTOR<span style="color: black;">&#41;</span>;
&nbsp;
&nbsp;
  <span style="color: #808080;">//Serial.println(&quot;Going to sleep&quot;);</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_deep_sleep_start() va vider le contenu des FIFO UART</span>
  esp_deep_sleep_start<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><span style="color: black;">&#125;</span></pre></td></tr></table></code><hr />
</div>Et le résultat au lancement :<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 /></div></td><td valign="top"><pre style="margin: 0">
10:42:48.418 -&gt; ets Jul 29 2019 12:21:46
10:42:48.418 -&gt; 
10:42:48.418 -&gt; rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
10:42:48.418 -&gt; configsip: 0, SPIWP:0xee
10:42:48.418 -&gt; clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
10:42:48.418 -&gt; mode:DIO, clock div:2
10:42:48.418 -&gt; load:0x3fff0030,len:4876
10:42:48.418 -&gt; ho 0 tail 12 room 4
10:42:48.418 -&gt; load:0x40078000,len:16600
10:42:48.418 -&gt; ho 0 tail 12 room 4
10:42:48.418 -&gt; load:0x40080400,len:3500
10:42:48.418 -&gt; entry 0x400805b4
10:42:48.530 -&gt; E (6) R&#65533;CLoRa : Emetteur
10:42:48.530 -&gt;<b> Le lancement de LoRa a échoué !</b></pre></td></tr></table></code><hr />
</div><br />
EDIT :<br />
<b>Arduino IDE 1.8.19 :</b><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 /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
compilation terminated.
exit status <span style="color: #cc66cc;">1</span>
driver/rtc_io.h: No such file <span style="color: #0000ff;">or</span> directory</pre></td></tr></table></code><hr />
</div><br />
<b>Arduino IDE 2.3.8 :</b><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 /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
e croquis utilise <span style="color: #cc66cc;">297700</span> octets <span style="color: black;">&#40;</span><span style="color: #cc66cc;">22</span>%<span style="color: black;">&#41;</span> de l<span style="color: #FF0000;">'</span>espace de stockage de programmes. Le maximum est de <span style="color: #cc66cc;">1310720</span> octets.
Les variables globales utilisent <span style="color: #cc66cc;">22308</span> octets <span style="color: black;">&#40;</span><span style="color: #cc66cc;">6</span>%<span style="color: black;">&#41;</span> de m&eacute;moire dynamique, ce qui laisse <span style="color: #cc66cc;">305372</span> octets pour les variables locales. Le maximum est de <span style="color: #cc66cc;">327680</span> octets.</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>cobra38</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2182810/general-developpement/programmation-systeme/embarque/arduino/impossible-faire-fonctionner-lora-emetteur/</guid>
		</item>
	</channel>
</rss>
