<?xml 
version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="https://modelleisenbahn.triskell.org/spip.php?page=backend.xslt" ?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:atom="http://www.w3.org/2005/Atom"
>

<channel xml:lang="fr">
	<title>ModelleisenbahN</title>
	<link>https://modelleisenbahn.triskell.org/</link>
	<description>Modelleisenbahn traite de la construction de mon r&#233;seau &#171; Messingrohrstadt &#187;, r&#233;seau allemand de l'&#233;poque II. Des documents sur le th&#232;me de la SNCF et &#233;labor&#233;s par R&#233;my Fauvet sont &#233;galement h&#233;berg&#233;s.</description>
	<language>fr</language>
	<generator>SPIP - www.spip.net</generator>
	<atom:link href="https://modelleisenbahn.triskell.org/spip.php?id_mot=9&amp;page=backend" rel="self" type="application/rss+xml" />

	<image>
		<title>ModelleisenbahN</title>
		<url>https://modelleisenbahn.triskell.org/local/cache-vignettes/L144xH144/siteon0-d64b7.png?1692197123</url>
		<link>https://modelleisenbahn.triskell.org/</link>
		<height>144</height>
		<width>144</width>
	</image>



<item xml:lang="fr">
		<title>Test des LED RGB WS2812B</title>
		<link>https://modelleisenbahn.triskell.org/spip.php?article70</link>
		<guid isPermaLink="true">https://modelleisenbahn.triskell.org/spip.php?article70</guid>
		<dc:date>2013-12-09T20:53:06Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Jean-Luc</dc:creator>


		<dc:subject>TCO</dc:subject>
		<dc:subject>LED</dc:subject>

		<description>
&lt;p&gt;J'ai re&#231;u 10 exemplaires de ces LED la semaine derni&#232;re. J'avais pr&#233;par&#233; un circuit imprim&#233; pour faire des essais. Le circuit repr&#233;sente une aiguille sur le TCO et les LED sont implant&#233;es &#224; raison de 4 pour 3cm en X (soit un pas de 7,5mm) et 4 pour 2cm en Y (soit un pas de 5mm). De cette mani&#232;re les LED tombent sur les intersections du cadre tactile. &lt;br class='autobr' /&gt;
J'ai tir&#233; le circuit imprim&#233; hier et soud&#233; les LED. &lt;br class='autobr' /&gt;
Cet &#233;l&#233;ment va venir prendre place dans le prototype de TCO que je suis en train de (&#8230;)&lt;/p&gt;


-
&lt;a href="https://modelleisenbahn.triskell.org/spip.php?rubrique17" rel="directory"&gt;Journal de bord&lt;/a&gt;

/ 
&lt;a href="https://modelleisenbahn.triskell.org/spip.php?mot8" rel="tag"&gt;TCO&lt;/a&gt;, 
&lt;a href="https://modelleisenbahn.triskell.org/spip.php?mot9" rel="tag"&gt;LED&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;J'ai re&#231;u 10 exemplaires de ces LED la semaine derni&#232;re. J'avais pr&#233;par&#233; un circuit imprim&#233; pour faire des essais. Le circuit repr&#233;sente une aiguille sur le TCO et les LED sont implant&#233;es &#224; raison de 4 pour 3cm en X (soit un pas de 7,5mm) et 4 pour 2cm en Y (soit un pas de 5mm). De cette mani&#232;re les LED tombent sur les intersections du cadre tactile.&lt;/p&gt;
&lt;p&gt;J'ai tir&#233; le circuit imprim&#233; hier et soud&#233; les LED.&lt;/p&gt;
&lt;div class='spip_document_354 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='https://modelleisenbahn.triskell.org/local/cache-vignettes/L500xH250/banc_de_test_ws2812b-ccecc.jpg?1692204349' width='500' height='250' alt='' /&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Cet &#233;l&#233;ment va venir prendre place dans le prototype de TCO que je suis en train de construire.&lt;/p&gt;
&lt;p&gt;Je viens de tester avec la &lt;a href=&#034;https://github.com/adafruit/Adafruit_NeoPixel&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;biblioth&#232;que NeoPixel&lt;/a&gt; d'&lt;a href=&#034;http://www.adafruit.com&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Adafruit&lt;/a&gt; et &#231;a crache tr&#232;s fort. Un petit film pour se rendre compte :&lt;/p&gt;
&lt;div class=&#034;spip_document_355 spip_document spip_documents spip_document_video&#034;&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt;
&lt;div class=&#034;video-intrinsic-wrapper&#034; style='height:0;width:640px;max-width:100%;padding-bottom:56.25%;position:relative;'&gt; &lt;div class=&#034;video-wrapper&#034; style=&#034;position: absolute;top:0;left:0;width:100%;height:100%;&#034;&gt; &lt;video class=&#034;mejs mejs-355&#034; data-id=&#034;16c1391cd78d03036f160c74a6d0ab6d&#034; data-mejsoptions='{&#034;iconSprite&#034;: &#034;plugins-dist/medias/lib/mejs/mejs-controls.svg&#034;,&#034;alwaysShowControls&#034;: true,&#034;pluginPath&#034;:&#034;plugins-dist/medias/lib/mejs/&#034;,&#034;loop&#034;:false,&#034;videoWidth&#034;:&#034;100%&#034;,&#034;videoHeight&#034;:&#034;100%&#034;}' width=&#034;100%&#034; height=&#034;100%&#034; controls=&#034;controls&#034; preload=&#034;none&#034; &gt; &lt;source type=&#034;application/x-shockwave-flash&#034; src=&#034;http://www.youtube.com/v/unWU6lMNjgo?version=3&amp;hl=fr_FR&amp;rel=0&#034; /&gt; &lt;img src='https://modelleisenbahn.triskell.org/local/cache-vignettes/L64xH64/swf-d2c4d-75a7b.svg?1772798901' width='64' height='64' alt='Impossible de lire la video' /&gt; &lt;/video&gt; &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#034;base64javascript152752149169cbf28754dc60.97195856&#034; title=&#034;PHNjcmlwdD4gdmFyIG1lanNwYXRoPSdwbHVnaW5zLWRpc3QvbWVkaWFzL2xpYi9tZWpzL21lZGlhZWxlbWVudC1hbmQtcGxheWVyLm1pbi5qcz8xNzcyNzk1ODQwJyxtZWpzY3NzPSdwbHVnaW5zLWRpc3QvbWVkaWFzL2xpYi9tZWpzL21lZGlhZWxlbWVudHBsYXllci5taW4uY3NzPzE3NzI3OTU4NDAnOwp2YXIgbWVqc2xvYWRlcjsKKGZ1bmN0aW9uKCl7dmFyIGE9bWVqc2xvYWRlcjsidW5kZWZpbmVkIj09dHlwZW9mIGEmJihtZWpzbG9hZGVyPWE9e2dzOm51bGwscGx1Zzp7fSxjc3M6e30saW5pdDpudWxsLGM6MCxjc3Nsb2FkOm51bGx9KTthLmluaXR8fChhLmNzc2xvYWQ9ZnVuY3Rpb24oYyl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBhLmNzc1tjXSl7YS5jc3NbY109ITA7dmFyIGI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpO2IuaHJlZj1jO2IucmVsPSJzdHlsZXNoZWV0IjtiLnR5cGU9InRleHQvY3NzIjtkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmFwcGVuZENoaWxkKGIpfX0sYS5pbml0PWZ1bmN0aW9uKCl7ITA9PT1hLmdzJiZmdW5jdGlvbihjKXtqUXVlcnkoImF1ZGlvLm1lanMsdmlkZW8ubWVqcyIpLm5vdCgiLmRvbmUsLm1lanNfX3BsYXllciIpLmVhY2goZnVuY3Rpb24oKXtmdW5jdGlvbiBiKCl7dmFyIGU9ITAsaDtmb3IoaCBpbiBkLmNzcylhLmNzc2xvYWQoZC5jc3NbaF0pO2Zvcih2YXIgZiBpbiBkLnBsdWdpbnMpInVuZGVmaW5lZCI9PQp0eXBlb2YgYS5wbHVnW2ZdPyhlPSExLGEucGx1Z1tmXT0hMSxqUXVlcnkuZ2V0U2NyaXB0KGQucGx1Z2luc1tmXSxmdW5jdGlvbigpe2EucGx1Z1tmXT0hMDtiKCl9KSk6MD09YS5wbHVnW2ZdJiYoZT0hMSk7ZSYmalF1ZXJ5KCIjIitjKS5tZWRpYWVsZW1lbnRwbGF5ZXIoalF1ZXJ5LmV4dGVuZChkLm9wdGlvbnMse3N1Y2Nlc3M6ZnVuY3Rpb24oYSxjKXtmdW5jdGlvbiBiKCl7dmFyIGI9alF1ZXJ5KGEpLmNsb3Nlc3QoIi5tZWpzX19pbm5lciIpO2EucGF1c2VkPyhiLmFkZENsYXNzKCJwYXVzaW5nIiksc2V0VGltZW91dChmdW5jdGlvbigpe2IuZmlsdGVyKCIucGF1c2luZyIpLnJlbW92ZUNsYXNzKCJwbGF5aW5nIikucmVtb3ZlQ2xhc3MoInBhdXNpbmciKS5hZGRDbGFzcygicGF1c2VkIil9LDEwMCkpOmIucmVtb3ZlQ2xhc3MoInBhdXNlZCIpLnJlbW92ZUNsYXNzKCJwYXVzaW5nIikuYWRkQ2xhc3MoInBsYXlpbmciKX1iKCk7YS5hZGRFdmVudExpc3RlbmVyKCJwbGF5IixiLCExKTsKYS5hZGRFdmVudExpc3RlbmVyKCJwbGF5aW5nIixiLCExKTthLmFkZEV2ZW50TGlzdGVuZXIoInBhdXNlIixiLCExKTthLmFkZEV2ZW50TGlzdGVuZXIoInBhdXNlZCIsYiwhMSk7Zy5hdHRyKCJhdXRvcGxheSIpJiZhLnBsYXkoKX19KSl9dmFyIGc9alF1ZXJ5KHRoaXMpLmFkZENsYXNzKCJkb25lIiksYzsoYz1nLmF0dHIoImlkIikpfHwoYz0ibWVqcy0iK2cuYXR0cigiZGF0YS1pZCIpKyItIithLmMrKyxnLmF0dHIoImlkIixjKSk7dmFyIGQ9e29wdGlvbnM6e30scGx1Z2luczp7fSxjc3M6W119LGUsaDtmb3IoZSBpbiBkKWlmKGg9Zy5hdHRyKCJkYXRhLW1lanMiK2UpKWRbZV09alF1ZXJ5LnBhcnNlSlNPTihoKTtiKCl9KX0oalF1ZXJ5KX0pO2EuZ3N8fCgidW5kZWZpbmVkIiE9PXR5cGVvZiBtZWpzY3NzJiZhLmNzc2xvYWQobWVqc2NzcyksYS5ncz1qUXVlcnkuZ2V0U2NyaXB0KG1lanNwYXRoLGZ1bmN0aW9uKCl7YS5ncz0hMDthLmluaXQoKTtqUXVlcnkoYS5pbml0KTtvbkFqYXhMb2FkKGEuaW5pdCl9KSl9KSgpOzwvc2NyaXB0Pg==&#034;&gt;&lt;/div&gt; &lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Le programme de test d'Adafruit est assez &lt;i&gt;d&#233;monstratif&lt;/i&gt; avec un bel effet sapin de No&#235;l. Je ferai quelque chose de plus sobre bien entendu.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>T&#233;moins de positions : la mise en &#339;uvre</title>
		<link>https://modelleisenbahn.triskell.org/spip.php?article66</link>
		<guid isPermaLink="true">https://modelleisenbahn.triskell.org/spip.php?article66</guid>
		<dc:date>2013-12-03T19:28:33Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Jean-Luc</dc:creator>


		<dc:subject>LED</dc:subject>
		<dc:subject>Arduino</dc:subject>

		<description>
&lt;p&gt;Nous avons vu la technique du Charlieplexing dans &#171; T&#233;moins de positions : le Charlieplexing &#187;, nous allons maintenant l'appliquer &#224; un syst&#232;me &#224; 5 broches de pilotage et 16 LED puis l'int&#233;grer dans notre application. Charlieplexing des 16 LED t&#233;moins [1] &lt;br class='autobr' /&gt;
Le sch&#233;ma pour allumer 16 LED est le suivant. &lt;br class='autobr' /&gt;
On peut noter que le sch&#233;ma est incomplet. En effet, avec 5 broches, il est possible de piloter 20 LED. Ici les couples de broches 0-3 et 1-4 sont manquants et nous n'allons donc pas les (&#8230;)&lt;/p&gt;


-
&lt;a href="https://modelleisenbahn.triskell.org/spip.php?rubrique22" rel="directory"&gt;Man&#339;uvre des aiguilles avec des servo-moteurs&lt;/a&gt;

/ 
&lt;a href="https://modelleisenbahn.triskell.org/spip.php?mot9" rel="tag"&gt;LED&lt;/a&gt;, 
&lt;a href="https://modelleisenbahn.triskell.org/spip.php?mot10" rel="tag"&gt;Arduino&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;Nous avons vu la technique du Charlieplexing dans &#171; &lt;a href='https://modelleisenbahn.triskell.org/spip.php?article64' class=&#034;spip_in&#034;&gt;T&#233;moins de positions : le Charlieplexing&lt;/a&gt; &#187;, nous allons maintenant l'appliquer &#224; un syst&#232;me &#224; 5 broches de pilotage et 16 LED puis l'int&#233;grer dans notre application.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Charlieplexing des 16 LED t&#233;moins&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb2-1&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;On peut noter que plus le nombre de LED est important, plus le temps (&#8230;)&#034; id=&#034;nh2-1&#034;&gt;1&lt;/a&gt;]&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;Le sch&#233;ma pour allumer 16 LED est le suivant.&lt;/p&gt;
&lt;div class='spip_document_329 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;41&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='https://modelleisenbahn.triskell.org/local/cache-vignettes/L500xH328/charlie5-6e473.png?1692224382' width='500' height='328' alt='' /&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-329 '&gt;&lt;strong&gt;Charlieplexing avec 5 broches et 16 LED
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;On peut noter que le sch&#233;ma est incomplet. En effet, avec 5 broches, il est possible de piloter 20 LED. Ici les couples de broches 0-3 et 1-4 sont manquants et nous n'allons donc pas les placer dans notre table d'&#233;tat des broches.&lt;/p&gt;
&lt;p&gt;Voici donc la table d'&#233;tat des broches pour chaque LED&lt;/p&gt;
&lt;table class=&#034;table spip&#034;&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt; &lt;/td&gt;
&lt;td&gt;&lt;strong&gt;broche 0&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;broche 1&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;broche 2&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;broche 3&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;broche 4&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;strong&gt;D0&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;&lt;strong&gt;D1&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;strong&gt;D2&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;&lt;strong&gt;D3&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;strong&gt;D4&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;&lt;strong&gt;D5&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;strong&gt;D6&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;&lt;strong&gt;D7&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;strong&gt;D8&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;&lt;strong&gt;D9&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;strong&gt;D10&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;&lt;strong&gt;D11&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;strong&gt;D12&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;&lt;strong&gt;D13&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;strong&gt;D14&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;&lt;strong&gt;D15&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Nous allons donc construire cette table en C comme nous l'avons fait pour la Charlieplexing avec 3 broches de commande.&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-raccourci=&#034;code&#034; data-language=&#034;C&#034; class='spip_code spip_code_block language-C' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;const byte etatSortiePourLED[16][5] = { { OUT0, OUT1, INZ, INZ, INZ }, /* D0 */ { OUT1, OUT0, INZ, INZ, INZ }, /* D1 */ { INZ, OUT0, OUT1, INZ, INZ }, /* D2 */ { INZ, OUT1, OUT0, INZ, INZ }, /* D3 */ { INZ, INZ, OUT0, OUT1, INZ }, /* D4 */ { INZ, INZ, OUT1, OUT0, INZ }, /* D5 */ { INZ, INZ, INZ, OUT0, OUT1 }, /* D6 */ { INZ, INZ, INZ, OUT1, OUT0 }, /* D7 */ { OUT0, INZ, OUT1, INZ, INZ }, /* D8 */ { OUT1, INZ, OUT0, INZ, INZ }, /* D9 */ { INZ, INZ, OUT0, INZ, OUT1 }, /* D10 */ { INZ, INZ, OUT1, INZ, OUT0 }, /* D11 */ { INZ, OUT0, INZ, OUT1, INZ }, /* D12 */ { INZ, OUT1, INZ, OUT0, INZ }, /* D13 */ { OUT0, INZ, INZ, INZ, OUT1 }, /* D14 */ { OUT1, INZ, INZ, INZ, OUT0 } /* D15 */ };&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;La fonction &lt;code data-raccourci=&#034;code&#034; class='spip_code spip_code_inline' dir='ltr'&gt;programmeBroche(...)&lt;/code&gt; reste la m&#234;me par contre la fonction &lt;code data-raccourci=&#034;code&#034; class='spip_code spip_code_inline' dir='ltr'&gt;gereLED(...)&lt;/code&gt; doit &#234;tre modifi&#233;e puisque l'on passe de 3 &#224; 5 broches de commande.&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-raccourci=&#034;code&#034; data-language=&#034;C&#034; class='spip_code spip_code_block language-C' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;void gereLED(int num) { if (etatLED[num] == ALLUME) { programmeBroche(8,etatSortiePourLED[num][0]); programmeBroche(9,etatSortiePourLED[num][1]); programmeBroche(10,etatSortiePourLED[num][2]); programmeBroche(11,etatSortiePourLED[num][3]); programmeBroche(12,etatSortiePourLED[num][4]); } else { programmeBroche(8,INZ); programmeBroche(9,INZ); programmeBroche(10,INZ); programmeBroche(11,INZ); programmeBroche(12,INZ); } }&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Et le tableau &lt;code data-raccourci=&#034;code&#034; class='spip_code spip_code_inline' dir='ltr'&gt;etatLED&lt;/code&gt; doit &#234;tre agrandi pour contenir 16 &#233;l&#233;ments.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Int&#233;gration dans l'application&lt;/h2&gt;
&lt;p&gt;Pour int&#233;grer l'allumage des t&#233;moins dans l'application il faut tout d'abord ins&#233;rer l'appel &#224; &lt;code data-raccourci=&#034;code&#034; class='spip_code spip_code_inline' dir='ltr'&gt;gereLED()&lt;/code&gt; dans &lt;code data-raccourci=&#034;code&#034; class='spip_code spip_code_inline' dir='ltr'&gt;loop()&lt;/code&gt;. Nous faisons face &#224; un premier probl&#232;me. Pour que les servomoteurs pivotent suffisamment lentement, l'attente est de 5ms. Cela conduit &#224; un balayage des 16 LED en 80ms ce qui est trop lent pour que la persistance r&#233;tinienne op&#232;re. Il faudrait balayer au moins 4 fois plus souvent. Par cons&#233;quent, le d&#233;lai dans &lt;code data-raccourci=&#034;code&#034; class='spip_code spip_code_inline' dir='ltr'&gt;loop()&lt;/code&gt; va &#234;tre r&#233;duit &#224; 1ms et la gestion des poussoirs et des servomoteurs sera appel&#233;e toutes les 5 fois alors que la gestion des LED sera appel&#233;e toutes les fois. Nous allons donc ajouter un compteur &lt;code data-raccourci=&#034;code&#034; class='spip_code spip_code_inline' dir='ltr'&gt;compteurGestionServos&lt;/code&gt; initialis&#233; &#224; 0. Comme ceci.&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-raccourci=&#034;code&#034; data-language=&#034;cpp&#034; class='spip_code spip_code_block language-cpp' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;void loop() { compteurGestionServos++; if (compteurGestionServos == 5) { compteurGestionServos = 0; ... /* code de gestion des servos et des poussoir &#224; l'identique */ ... } gereLED(numLED); numLED++; if (numLED == 16) numLED = 0; delay(1); }&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Il suffit ensuite de changer l'&#233;tat des LED en ALLUME ou ETEINT dans le tableau &lt;code data-raccourci=&#034;code&#034; class='spip_code spip_code_inline' dir='ltr'&gt;etatLED&lt;/code&gt; en fonction des &#233;v&#233;nements. Deux fonctions membre de la classe &lt;code data-raccourci=&#034;code&#034; class='spip_code spip_code_inline' dir='ltr'&gt;DescripteurServo&lt;/code&gt; sont concern&#233;es : &lt;code data-raccourci=&#034;code&#034; class='spip_code spip_code_inline' dir='ltr'&gt;evenementServo(...)&lt;/code&gt; o&#249; on va &#233;teindre la LED de la position que l'on quitte et &lt;code data-raccourci=&#034;code&#034; class='spip_code spip_code_inline' dir='ltr'&gt;gereServo()&lt;/code&gt; o&#249; on va allumer la LED de la position que l'on atteint. Dans le tableau &lt;code data-raccourci=&#034;code&#034; class='spip_code spip_code_inline' dir='ltr'&gt;etatLED&lt;/code&gt;, les LED sont alternativement rouges et vertes et par cons&#233;quent la paire de LED correspondant &#224; un servomoteur est &#224; la position &lt;i&gt;num&#233;ro de servo&lt;/i&gt; &#215; 2 (angle minimum) et &lt;i&gt;num&#233;ro de servo&lt;/i&gt; &#215; 2 + 1 (angle maximum).&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-raccourci=&#034;code&#034; data-language=&#034;cpp&#034; class='spip_code spip_code_block language-cpp' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;void evenementServo() { cptArret = -1; switch (etatServo) { case SERVO_A_ANGLE_MIN: etatLED[numServo * 2] = ETEINT; objetServo.attach(pin); case SERVO_EN_MOUVEMENT_VERS_ANGLE_MIN: vitesse = 1; etatServo = SERVO_EN_MOUVEMENT_VERS_ANGLE_MAX; break; case SERVO_A_ANGLE_MAX: etatLED[numServo * 2 + 1] = ETEINT; objetServo.attach(pin); case SERVO_EN_MOUVEMENT_VERS_ANGLE_MAX: vitesse = -1; etatServo = SERVO_EN_MOUVEMENT_VERS_ANGLE_MIN; break; } }&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Dans la fonction membre &lt;code data-raccourci=&#034;code&#034; class='spip_code spip_code_inline' dir='ltr'&gt;gereServo()&lt;/code&gt;, la partie qui s'occupe du passage de la vitesse &#224; 0 quand les angles minimum ou maximum sont atteint est modifi&#233;e comme suit :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-raccourci=&#034;code&#034; data-language=&#034;cpp&#034; class='spip_code spip_code_block language-cpp' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;if (! reglageEnCours || etatServo == SERVO_EN_MOUVEMENT_VERS_ANGLE_MIN || etatServo == SERVO_EN_MOUVEMENT_VERS_ANGLE_MAX) { if (angle &gt; angleMax) { angle = angleMax; arreteServo(); etatServo = SERVO_A_ANGLE_MAX; etatLED[numServo * 2 + 1] = ALLUME; } else if (angle &lt; angleMin) { angle = angleMin; arreteServo(); etatServo = SERVO_A_ANGLE_MIN; etatLED[numServo * 2] = ALLUME; } }&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Il ne faut pas oublier d'allumer la LED correspondant &#224; l'angle minimum dans la fonction membre &lt;code data-raccourci=&#034;code&#034; class='spip_code spip_code_inline' dir='ltr'&gt;connecte(...)&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-raccourci=&#034;code&#034; data-language=&#034;cpp&#034; class='spip_code spip_code_block language-cpp' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;/* allume la LED correspondante */ etatLED[numServo * 2] = ALLUME;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Nous sommes parvenus au bout de ce d&#233;veloppement. Voici le sketch de l'application compl&#232;te &#224; t&#233;l&#233;charger.&lt;/p&gt;
&lt;div class='spip_document_337 spip_document spip_documents spip_document_file spip_document_avec_legende' data-legende-len=&#034;123&#034; data-legende-lenx=&#034;xx&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt;
&lt;a href='https://modelleisenbahn.triskell.org/IMG/zip/Huit_boutons_huit_servos_detach_reglage_eeprom_temoins_cpp-2.zip' class=&#034; spip_doc_lien&#034; title='Zip - 4.4 kio' type=&#034;application/zip&#034;&gt;&lt;img src='https://modelleisenbahn.triskell.org/local/cache-vignettes/L64xH64/zip-f045b.svg?1772799586' width='64' height='64' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-337 '&gt;&lt;strong&gt;Sketch de l'application compl&#232;te
&lt;/strong&gt;&lt;/div&gt; &lt;div class='spip_doc_descriptif crayon document-descriptif-337 '&gt;mis &#224; jour en version 1.1. La position des servos est d&#233;sormais m&#233;moris&#233;e dans l'EEPROM.
&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;div class='spip_document_341 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;214&#034; data-legende-lenx=&#034;xxx&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://modelleisenbahn.triskell.org/IMG/png/schema_fritzing_8s8p-2.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://modelleisenbahn.triskell.org/local/cache-vignettes/L500xH454/schema_fritzing_8s8p-2-903fb.png?1692224382' width='500' height='454' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-341 '&gt;&lt;strong&gt;Dessin du montage complet
&lt;/strong&gt;&lt;/div&gt; &lt;div class='spip_doc_descriptif crayon document-descriptif-341 '&gt;&lt;strong&gt;Attention : le montage montre les 8 servomoteurs aliment&#233;s par l'Arduino. Ce n'est pas possible en pratique et il est n&#233;cessaire d'avoir une alimentation 5V s&#233;par&#233;e pour les servomoteurs&lt;/strong&gt;
&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;div class='spip_document_342 spip_document spip_documents spip_document_file spip_document_avec_legende' data-legende-len=&#034;235&#034; data-legende-lenx=&#034;xxx&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt;
&lt;a href='https://modelleisenbahn.triskell.org/IMG/pdf/schema_fritzing_8s8p.pdf' class=&#034; spip_doc_lien&#034; title='PDF - 2.4 Mio' type=&#034;application/pdf&#034;&gt;&lt;img src='https://modelleisenbahn.triskell.org/local/cache-vignettes/L64xH64/pdf-b8aed.svg?1772797407' width='64' height='64' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-342 '&gt;&lt;strong&gt;Dessin du montage complet &#224; t&#233;l&#233;charger en PDF
&lt;/strong&gt;&lt;/div&gt; &lt;div class='spip_doc_descriptif crayon document-descriptif-342 '&gt;&lt;strong&gt;Attention : le montage montre les 8 servomoteurs aliment&#233;s par l'Arduino. Ce n'est pas possible en pratique et il est n&#233;cessaire d'avoir une alimentation 5V s&#233;par&#233;e pour les servomoteurs&lt;/strong&gt;
&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Ainsi qu'une vid&#233;o de d&#233;monstration.&lt;/p&gt;
&lt;div class=&#034;spip_document_336 spip_document spip_documents spip_document_video spip_document_avec_legende&#034; data-legende-len=&#034;53&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt;
&lt;div class=&#034;video-intrinsic-wrapper&#034; style='height:0;width:640px;max-width:100%;padding-bottom:56.25%;position:relative;'&gt; &lt;div class=&#034;video-wrapper&#034; style=&#034;position: absolute;top:0;left:0;width:100%;height:100%;&#034;&gt; &lt;video class=&#034;mejs mejs-336&#034; data-id=&#034;232d689cc7c6fedb727a86ce65db3e91&#034; data-mejsoptions='{&#034;iconSprite&#034;: &#034;plugins-dist/medias/lib/mejs/mejs-controls.svg&#034;,&#034;alwaysShowControls&#034;: true,&#034;pluginPath&#034;:&#034;plugins-dist/medias/lib/mejs/&#034;,&#034;loop&#034;:false,&#034;videoWidth&#034;:&#034;100%&#034;,&#034;videoHeight&#034;:&#034;100%&#034;}' width=&#034;100%&#034; height=&#034;100%&#034; controls=&#034;controls&#034; preload=&#034;none&#034; &gt; &lt;source type=&#034;application/x-shockwave-flash&#034; src=&#034;http://www.youtube.com/v/bMmDTduT-N8?hl=fr_FR&amp;version=3&amp;rel=0&#034; /&gt; &lt;img src='https://modelleisenbahn.triskell.org/local/cache-vignettes/L64xH64/swf-d2c4d-75a7b.svg?1772798901' width='64' height='64' alt='Impossible de lire la video' /&gt; &lt;/video&gt; &lt;/div&gt;
&lt;/div&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-336 '&gt;&lt;strong&gt;D&#233;monstration de l'application compl&#232;te et termin&#233;e
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;
&lt;div class=&#034;base64javascript48149994769e2778f365884.98283324&#034; title=&#034;PHNjcmlwdD4gdmFyIG1lanNwYXRoPSdwbHVnaW5zLWRpc3QvbWVkaWFzL2xpYi9tZWpzL21lZGlhZWxlbWVudC1hbmQtcGxheWVyLm1pbi5qcz8xNzcyNzk1ODQwJyxtZWpzY3NzPSdwbHVnaW5zLWRpc3QvbWVkaWFzL2xpYi9tZWpzL21lZGlhZWxlbWVudHBsYXllci5taW4uY3NzPzE3NzI3OTU4NDAnOwp2YXIgbWVqc2xvYWRlcjsKKGZ1bmN0aW9uKCl7dmFyIGE9bWVqc2xvYWRlcjsidW5kZWZpbmVkIj09dHlwZW9mIGEmJihtZWpzbG9hZGVyPWE9e2dzOm51bGwscGx1Zzp7fSxjc3M6e30saW5pdDpudWxsLGM6MCxjc3Nsb2FkOm51bGx9KTthLmluaXR8fChhLmNzc2xvYWQ9ZnVuY3Rpb24oYyl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBhLmNzc1tjXSl7YS5jc3NbY109ITA7dmFyIGI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpO2IuaHJlZj1jO2IucmVsPSJzdHlsZXNoZWV0IjtiLnR5cGU9InRleHQvY3NzIjtkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmFwcGVuZENoaWxkKGIpfX0sYS5pbml0PWZ1bmN0aW9uKCl7ITA9PT1hLmdzJiZmdW5jdGlvbihjKXtqUXVlcnkoImF1ZGlvLm1lanMsdmlkZW8ubWVqcyIpLm5vdCgiLmRvbmUsLm1lanNfX3BsYXllciIpLmVhY2goZnVuY3Rpb24oKXtmdW5jdGlvbiBiKCl7dmFyIGU9ITAsaDtmb3IoaCBpbiBkLmNzcylhLmNzc2xvYWQoZC5jc3NbaF0pO2Zvcih2YXIgZiBpbiBkLnBsdWdpbnMpInVuZGVmaW5lZCI9PQp0eXBlb2YgYS5wbHVnW2ZdPyhlPSExLGEucGx1Z1tmXT0hMSxqUXVlcnkuZ2V0U2NyaXB0KGQucGx1Z2luc1tmXSxmdW5jdGlvbigpe2EucGx1Z1tmXT0hMDtiKCl9KSk6MD09YS5wbHVnW2ZdJiYoZT0hMSk7ZSYmalF1ZXJ5KCIjIitjKS5tZWRpYWVsZW1lbnRwbGF5ZXIoalF1ZXJ5LmV4dGVuZChkLm9wdGlvbnMse3N1Y2Nlc3M6ZnVuY3Rpb24oYSxjKXtmdW5jdGlvbiBiKCl7dmFyIGI9alF1ZXJ5KGEpLmNsb3Nlc3QoIi5tZWpzX19pbm5lciIpO2EucGF1c2VkPyhiLmFkZENsYXNzKCJwYXVzaW5nIiksc2V0VGltZW91dChmdW5jdGlvbigpe2IuZmlsdGVyKCIucGF1c2luZyIpLnJlbW92ZUNsYXNzKCJwbGF5aW5nIikucmVtb3ZlQ2xhc3MoInBhdXNpbmciKS5hZGRDbGFzcygicGF1c2VkIil9LDEwMCkpOmIucmVtb3ZlQ2xhc3MoInBhdXNlZCIpLnJlbW92ZUNsYXNzKCJwYXVzaW5nIikuYWRkQ2xhc3MoInBsYXlpbmciKX1iKCk7YS5hZGRFdmVudExpc3RlbmVyKCJwbGF5IixiLCExKTsKYS5hZGRFdmVudExpc3RlbmVyKCJwbGF5aW5nIixiLCExKTthLmFkZEV2ZW50TGlzdGVuZXIoInBhdXNlIixiLCExKTthLmFkZEV2ZW50TGlzdGVuZXIoInBhdXNlZCIsYiwhMSk7Zy5hdHRyKCJhdXRvcGxheSIpJiZhLnBsYXkoKX19KSl9dmFyIGc9alF1ZXJ5KHRoaXMpLmFkZENsYXNzKCJkb25lIiksYzsoYz1nLmF0dHIoImlkIikpfHwoYz0ibWVqcy0iK2cuYXR0cigiZGF0YS1pZCIpKyItIithLmMrKyxnLmF0dHIoImlkIixjKSk7dmFyIGQ9e29wdGlvbnM6e30scGx1Z2luczp7fSxjc3M6W119LGUsaDtmb3IoZSBpbiBkKWlmKGg9Zy5hdHRyKCJkYXRhLW1lanMiK2UpKWRbZV09alF1ZXJ5LnBhcnNlSlNPTihoKTtiKCl9KX0oalF1ZXJ5KX0pO2EuZ3N8fCgidW5kZWZpbmVkIiE9PXR5cGVvZiBtZWpzY3NzJiZhLmNzc2xvYWQobWVqc2NzcyksYS5ncz1qUXVlcnkuZ2V0U2NyaXB0KG1lanNwYXRoLGZ1bmN0aW9uKCl7YS5ncz0hMDthLmluaXQoKTtqUXVlcnkoYS5pbml0KTtvbkFqYXhMb2FkKGEuaW5pdCl9KSl9KSgpOzwvc2NyaXB0Pg==&#034;&gt;&lt;/div&gt; &lt;/figure&gt;
&lt;/div&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;div id=&#034;nb2-1&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh2-1&#034; class=&#034;spip_note&#034; title=&#034;Notes 2-1&#034; rev=&#034;appendix&#034;&gt;1&lt;/a&gt;] &lt;/span&gt;On peut noter que plus le nombre de LED est important, plus le temps d'allumage sur un cycle de balayage devient faible. En pratique, la luminosit&#233; n'est pas beaucoup plus faible avec 16 LED. Pour un plus grand nombre de LED, il peut &#234;tre n&#233;cessaire de diminuer la valeur des r&#233;sistances sans toutefois d&#233;passer les capacit&#233;s des entr&#233;es/sorties du micro-contr&#244;leur&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>T&#233;moins de positions : le Charlieplexing</title>
		<link>https://modelleisenbahn.triskell.org/spip.php?article64</link>
		<guid isPermaLink="true">https://modelleisenbahn.triskell.org/spip.php?article64</guid>
		<dc:date>2013-12-02T21:08:29Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Jean-Luc</dc:creator>


		<dc:subject>LED</dc:subject>
		<dc:subject>Arduino</dc:subject>

		<description>
&lt;p&gt;La derni&#232;re fonction &#224; mettre en &#339;uvre est la gestion des t&#233;moins de position. 16 LED sont n&#233;cessaires et il nous reste 6 broches. La broche num&#233;rique 13 ayant d&#233;j&#224; une LED soud&#233;e sur la carte de l'Arduino n'est pas tr&#232;s commode &#224; utiliser. Il nous reste donc en r&#233;alit&#233; 5 broches. Comment faire ? &lt;br class='autobr' /&gt;
Il existe une technique connue sous le nom de Charliplexing [1] qui permet de multiplexer des LED sur des entr&#233;es/sorties num&#233;riques. Examinons tout d'abord le cas de deux LED connect&#233;es &#224; 2 (&#8230;)&lt;/p&gt;


-
&lt;a href="https://modelleisenbahn.triskell.org/spip.php?rubrique22" rel="directory"&gt;Man&#339;uvre des aiguilles avec des servo-moteurs&lt;/a&gt;

/ 
&lt;a href="https://modelleisenbahn.triskell.org/spip.php?mot9" rel="tag"&gt;LED&lt;/a&gt;, 
&lt;a href="https://modelleisenbahn.triskell.org/spip.php?mot10" rel="tag"&gt;Arduino&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;La derni&#232;re fonction &#224; mettre en &#339;uvre est la gestion des t&#233;moins de position. 16 LED sont n&#233;cessaires et il nous reste 6 broches. La broche num&#233;rique 13 ayant d&#233;j&#224; une LED soud&#233;e sur la carte de l'Arduino n'est pas tr&#232;s commode &#224; utiliser. Il nous reste donc en r&#233;alit&#233; 5 broches.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Comment faire ?&lt;/h2&gt;
&lt;p&gt;Il existe une technique connue sous le nom de Charliplexing&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb2-1&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;Le Charlieplexing est une technique propos&#233;e en 1995 par Charlie Allen, voir (&#8230;)&#034; id=&#034;nh2-1&#034;&gt;1&lt;/a&gt;]&lt;/span&gt; qui permet de multiplexer des LED sur des entr&#233;es/sorties num&#233;riques. Examinons tout d'abord le cas de deux LED connect&#233;es &#224; 2 broches avec 2 r&#233;sistances de 150&#937;.&lt;/p&gt;
&lt;div class='spip_document_322 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;71&#034; data-legende-lenx=&#034;xx&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='https://modelleisenbahn.triskell.org/local/cache-vignettes/L332xH132/charlie2-67a48.png?1692224382' width='332' height='132' alt='' /&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-322 '&gt;&lt;strong&gt;Charlieplexing avec 2 broches
&lt;/strong&gt;&lt;/div&gt; &lt;div class='spip_doc_descriptif crayon document-descriptif-322 '&gt;dont l'int&#233;r&#234;t est plus que discutable.
&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Si la broche 0 est en sortie &#224; 5V et la broche 1 en sortie &#224; 0V, la LED rouge est allum&#233;e. Si la broche 0 est en sortie &#224; 0V et la broche 1 en sortie &#224; 5V, la LED verte est allum&#233;e. Toute autre configuration, une des broches ou les deux en entr&#233;e ou les deux en sortie au m&#234;me potentiel, &#233;teint les deux LED.&lt;/p&gt;
&lt;p&gt;&#199;a ne nous avance pas beaucoup me direz vous.&lt;/p&gt;
&lt;p&gt;Rajoutons donc une broche 2 et une r&#233;sistance et ajoutons une paire de LED entre la broche 2 et la broche 1 mais aussi entre la broche 2 et la broche 0, soit 6 LED au total.&lt;/p&gt;
&lt;div class='spip_document_325 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;31&#034; data-legende-lenx=&#034;&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='https://modelleisenbahn.triskell.org/local/cache-vignettes/L499xH231/charlie3-a2418.png?1692224382' width='499' height='231' alt='' /&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-325 '&gt;&lt;strong&gt;Charlieplexing avec 3 broches
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Pour allumer la LED D5 par exemple, il faut mettre la broche 0 en sortie &#224; 5V, la broche 2 en sortie &#224; 0V et pour que ni D1, ni D3 ne s'allument, mettre la broche 1 en entr&#233;e (donc en haute imp&#233;dance). On peut remarquer que D1 et D3 sont &#233;galement aliment&#233;es mais comme elle sont en s&#233;rie, elles pr&#233;sentent une tension de seuil 2 fois sup&#233;rieure&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb2-2&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;La tension de seuil d&#233;pend de la couleur de la LED mais m&#234;me en mettant en (&#8230;)&#034; id=&#034;nh2-2&#034;&gt;2&lt;/a&gt;]&lt;/span&gt; et le courant empruntera le chemin de plus faible tension de seuil.&lt;/p&gt;
&lt;p&gt;Pour la suite on va noter le fait de mettre une sortie &#224; 5V : 1, &#224; 0V, 0 et en entr&#233;e : Z.&lt;/p&gt;
&lt;p&gt;La table correspondant &#224; l'allumage de chaque LED est la suivante.&lt;/p&gt;
&lt;table class=&#034;table spip&#034;&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt; &lt;/td&gt;
&lt;td&gt;&lt;strong&gt;broche 0&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;broche 1&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;broche 2&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;strong&gt;D0&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;&lt;strong&gt;D1&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;strong&gt;D2&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;&lt;strong&gt;D3&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;strong&gt;D4&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;&lt;strong&gt;D5&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;De mani&#232;re g&#233;n&#233;rale, avec N broches, on peut piloter N &#215; N-1 LED. Avec nos 5 broches disponible, on pourra donc piloter 5 &#215; 4 = 20 LED.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Programme de d&#233;monstration&lt;/h2&gt;
&lt;p&gt;&#201;videmment, seule une LED peut &#234;tre allum&#233;e &#224; un instant. C'est donc l'Arduino qui va s'occuper de balayer les LED et, pour chacune les allumer ou non &#224; une vitesse suffisamment grande pour que l'&#339;il ait l'impression que l'allumage de chaque LED est permanent gr&#226;ce &#224; la persistance r&#233;tinienne. Avant de nous lancer dans l'allumage de 16 LED, voyons comment fonctionne le programme pour 3 broches et 6 LED. Dans un premier temps, nous allons balayer et allumer les 6 LED pour juger de l'effet rendu.&lt;/p&gt;
&lt;p&gt;Il faut tout d'abord transposer le table d'&#233;tats en C dont les lignes correspondront aux LED et les colonnes aux sortie. Les &#233;tats eux m&#234;me sont d&#233;finis par un &lt;code data-raccourci=&#034;code&#034; class='spip_code spip_code_inline' dir='ltr'&gt;enum&lt;/code&gt;, une mani&#232;re de donner un nom symbolique &#224; une constante num&#233;rique :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-raccourci=&#034;code&#034; data-language=&#034;C&#034; class='spip_code spip_code_block language-C' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;enum { OUT0, OUT1, INZ }; const byte etatSortiePourLED[6][3] = { { OUT0, OUT1, INZ }, /* D0 */ { OUT1, OUT0, INZ }, /* D1 */ { INZ, OUT0, OUT1 }, /* D2 */ { INZ, OUT1, OUT0 }, /* D3 */ { OUT0, INZ, OUT1 }, /* D4 */ { OUT1, INZ, OUT0 } /* D5 */ };&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;code data-raccourci=&#034;code&#034; class='spip_code spip_code_inline' dir='ltr'&gt;OUT0&lt;/code&gt; signifie que le broche est en sortie et &#224; 0, &lt;code data-raccourci=&#034;code&#034; class='spip_code spip_code_inline' dir='ltr'&gt;OUT1&lt;/code&gt; qu'elle est en sortie et &#224; 1 et &lt;code data-raccourci=&#034;code&#034; class='spip_code spip_code_inline' dir='ltr'&gt;INZ&lt;/code&gt; en entr&#233;e et &#224; haute imp&#233;dance, c'est &#224; dire sans r&#233;sistance de &lt;i&gt;pull-up&lt;/i&gt;.&lt;/p&gt;
&lt;p&gt;Ajoutons une fonction pour programmer une broche en fonction de ce code :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-raccourci=&#034;code&#034; data-language=&#034;C&#034; class='spip_code spip_code_block language-C' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;void programmeBroche(int numBroche, byte etat) { switch (etat) { case OUT0: digitalWrite(numBroche,LOW); pinMode(numBroche,OUTPUT); break; case OUT1: digitalWrite(numBroche,HIGH); pinMode(numBroche,OUTPUT); break; case INZ: pinMode(numBroche,INPUT); digitalWrite(numBroche,LOW); /* pas de pullup */ break; } }&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Pour que l'on puisse tour &#224; tour allumer une LED ou non, il nous faut un tableau qui, pour chaque LED, va indiquer son &#233;tat, &lt;code data-raccourci=&#034;code&#034; class='spip_code spip_code_inline' dir='ltr'&gt;ALLUME&lt;/code&gt; ou &lt;code data-raccourci=&#034;code&#034; class='spip_code spip_code_inline' dir='ltr'&gt;ETEINT&lt;/code&gt;. De nouveau nous allons utiliser un &lt;code data-raccourci=&#034;code&#034; class='spip_code spip_code_inline' dir='ltr'&gt;enum&lt;/code&gt;.&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-raccourci=&#034;code&#034; data-language=&#034;C&#034; class='spip_code spip_code_block language-C' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;enum { ALLUME, ETEINT }; byte etatLED[6] = { ETEINT, ETEINT, ETEINT, ETEINT, ETEINT, ETEINT };&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Enfin, il nous faut une fonction qui, pour un num&#233;ro de LED, va chercher son &#233;tat et, si elle elle allum&#233;e, appelle, pour chaque broche, &lt;code data-raccourci=&#034;code&#034; class='spip_code spip_code_inline' dir='ltr'&gt;programmeBroche&lt;/code&gt; avec les &#233;tats de broche correspondant &#224; l'allumage de cet LED. Si elle est &#233;teinte, toutes les sorties sont mises dans l'&#233;tat &lt;code data-raccourci=&#034;code&#034; class='spip_code spip_code_inline' dir='ltr'&gt;INZ&lt;/code&gt;.&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-raccourci=&#034;code&#034; data-language=&#034;C&#034; class='spip_code spip_code_block language-C' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;void gereLED(int num) { if (etatLED[num] == ALLUME) { programmeBroche(10,etatSortiePourLED[num][0]); programmeBroche(11,etatSortiePourLED[num][1]); programmeBroche(12,etatSortiePourLED[num][2]); } else { programmeBroche(10,INZ); programmeBroche(11,INZ); programmeBroche(12,INZ); } }&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Il suffit ensuite dans &lt;code data-raccourci=&#034;code&#034; class='spip_code spip_code_inline' dir='ltr'&gt;loop()&lt;/code&gt; de balayer les LED, de 0 &#224; 5, en donnant leur &#233;tat avec une p&#233;riode de 2ms.&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-raccourci=&#034;code&#034; data-language=&#034;C&#034; class='spip_code spip_code_block language-C' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;int numLED = 0; void loop() { gereLED(numLed); numLED++; if (numLED &gt; 5) numLED = 0; delay(2); }&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Par dessus on superpose une s&#233;quence d'allumage comme, par exemple, un chenillard.&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-raccourci=&#034;code&#034; data-language=&#034;C&#034; class='spip_code spip_code_block language-C' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;int numLED = 0; int LEDAllumee = 0; int compteur1s = 0; void setup() { /* Au d&#233;but la LED 0 est allum&#233;e */ etatLED[LEDAllumee] = ALLUME; } void loop() { compteur1s++; if (compteur1s == 500) { /* Au bout de 1s, on allume la LED suivante */ compteur1s = 0; /* &#201;teint la LED qui &#233;tait allum&#233;e */ etatLED[LEDAllumee] = ETEINT; /* Passe &#224; la LED suivante */ LEDAllumee++; if (LEDAllumee &gt; 5) LEDAllumee = 0; /* Allume la nouvelle LED */ etatLED[LEDAllumee] = ALLUME; } gereLED(numLed); numLED++; if (numLED &gt; 5) numLED = 0; delay(2); }&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Voici le programme de chenillard en Charlieplexing sur 3 broches et 6 LED.&lt;/p&gt;
&lt;div class='spip_document_333 spip_document spip_documents spip_document_file spip_document_avec_legende' data-legende-len=&#034;40&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt;
&lt;a href='https://modelleisenbahn.triskell.org/IMG/zip/charlie3_chenillard-2.zip' class=&#034; spip_doc_lien&#034; title='Zip - 969 octets' type=&#034;application/zip&#034;&gt;&lt;img src='https://modelleisenbahn.triskell.org/local/cache-vignettes/L64xH64/zip-f045b.svg?1772799586' width='64' height='64' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-333 '&gt;&lt;strong&gt;Sketch du chenillard en Charlieplexing
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Ainsi que la vid&#233;o de d&#233;monstration&lt;/p&gt;
&lt;div class=&#034;spip_document_335 spip_document spip_documents spip_document_video spip_document_avec_legende&#034; data-legende-len=&#034;39&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt;
&lt;div class=&#034;video-intrinsic-wrapper&#034; style='height:0;width:640px;max-width:100%;padding-bottom:56.25%;position:relative;'&gt; &lt;div class=&#034;video-wrapper&#034; style=&#034;position: absolute;top:0;left:0;width:100%;height:100%;&#034;&gt; &lt;video class=&#034;mejs mejs-335&#034; data-id=&#034;3bee6585cba5ea8cf176b96838344622&#034; data-mejsoptions='{&#034;iconSprite&#034;: &#034;plugins-dist/medias/lib/mejs/mejs-controls.svg&#034;,&#034;alwaysShowControls&#034;: true,&#034;pluginPath&#034;:&#034;plugins-dist/medias/lib/mejs/&#034;,&#034;loop&#034;:false,&#034;videoWidth&#034;:&#034;100%&#034;,&#034;videoHeight&#034;:&#034;100%&#034;}' width=&#034;100%&#034; height=&#034;100%&#034; controls=&#034;controls&#034; preload=&#034;none&#034; &gt; &lt;source type=&#034;application/x-shockwave-flash&#034; src=&#034;http://www.youtube.com/v/yzJ-wb4sJlQ?version=3&amp;hl=fr_FR&amp;rel=0&#034; /&gt; &lt;img src='https://modelleisenbahn.triskell.org/local/cache-vignettes/L64xH64/swf-d2c4d-75a7b.svg?1772798901' width='64' height='64' alt='Impossible de lire la video' /&gt; &lt;/video&gt; &lt;/div&gt;
&lt;/div&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-335 '&gt;&lt;strong&gt;D&#233;monstration du sketch de chenillard
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;
&lt;div class=&#034;base64javascript107803548769ce3530098c62.81944290&#034; title=&#034;PHNjcmlwdD4gdmFyIG1lanNwYXRoPSdwbHVnaW5zLWRpc3QvbWVkaWFzL2xpYi9tZWpzL21lZGlhZWxlbWVudC1hbmQtcGxheWVyLm1pbi5qcz8xNzcyNzk1ODQwJyxtZWpzY3NzPSdwbHVnaW5zLWRpc3QvbWVkaWFzL2xpYi9tZWpzL21lZGlhZWxlbWVudHBsYXllci5taW4uY3NzPzE3NzI3OTU4NDAnOwp2YXIgbWVqc2xvYWRlcjsKKGZ1bmN0aW9uKCl7dmFyIGE9bWVqc2xvYWRlcjsidW5kZWZpbmVkIj09dHlwZW9mIGEmJihtZWpzbG9hZGVyPWE9e2dzOm51bGwscGx1Zzp7fSxjc3M6e30saW5pdDpudWxsLGM6MCxjc3Nsb2FkOm51bGx9KTthLmluaXR8fChhLmNzc2xvYWQ9ZnVuY3Rpb24oYyl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBhLmNzc1tjXSl7YS5jc3NbY109ITA7dmFyIGI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpO2IuaHJlZj1jO2IucmVsPSJzdHlsZXNoZWV0IjtiLnR5cGU9InRleHQvY3NzIjtkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmFwcGVuZENoaWxkKGIpfX0sYS5pbml0PWZ1bmN0aW9uKCl7ITA9PT1hLmdzJiZmdW5jdGlvbihjKXtqUXVlcnkoImF1ZGlvLm1lanMsdmlkZW8ubWVqcyIpLm5vdCgiLmRvbmUsLm1lanNfX3BsYXllciIpLmVhY2goZnVuY3Rpb24oKXtmdW5jdGlvbiBiKCl7dmFyIGU9ITAsaDtmb3IoaCBpbiBkLmNzcylhLmNzc2xvYWQoZC5jc3NbaF0pO2Zvcih2YXIgZiBpbiBkLnBsdWdpbnMpInVuZGVmaW5lZCI9PQp0eXBlb2YgYS5wbHVnW2ZdPyhlPSExLGEucGx1Z1tmXT0hMSxqUXVlcnkuZ2V0U2NyaXB0KGQucGx1Z2luc1tmXSxmdW5jdGlvbigpe2EucGx1Z1tmXT0hMDtiKCl9KSk6MD09YS5wbHVnW2ZdJiYoZT0hMSk7ZSYmalF1ZXJ5KCIjIitjKS5tZWRpYWVsZW1lbnRwbGF5ZXIoalF1ZXJ5LmV4dGVuZChkLm9wdGlvbnMse3N1Y2Nlc3M6ZnVuY3Rpb24oYSxjKXtmdW5jdGlvbiBiKCl7dmFyIGI9alF1ZXJ5KGEpLmNsb3Nlc3QoIi5tZWpzX19pbm5lciIpO2EucGF1c2VkPyhiLmFkZENsYXNzKCJwYXVzaW5nIiksc2V0VGltZW91dChmdW5jdGlvbigpe2IuZmlsdGVyKCIucGF1c2luZyIpLnJlbW92ZUNsYXNzKCJwbGF5aW5nIikucmVtb3ZlQ2xhc3MoInBhdXNpbmciKS5hZGRDbGFzcygicGF1c2VkIil9LDEwMCkpOmIucmVtb3ZlQ2xhc3MoInBhdXNlZCIpLnJlbW92ZUNsYXNzKCJwYXVzaW5nIikuYWRkQ2xhc3MoInBsYXlpbmciKX1iKCk7YS5hZGRFdmVudExpc3RlbmVyKCJwbGF5IixiLCExKTsKYS5hZGRFdmVudExpc3RlbmVyKCJwbGF5aW5nIixiLCExKTthLmFkZEV2ZW50TGlzdGVuZXIoInBhdXNlIixiLCExKTthLmFkZEV2ZW50TGlzdGVuZXIoInBhdXNlZCIsYiwhMSk7Zy5hdHRyKCJhdXRvcGxheSIpJiZhLnBsYXkoKX19KSl9dmFyIGc9alF1ZXJ5KHRoaXMpLmFkZENsYXNzKCJkb25lIiksYzsoYz1nLmF0dHIoImlkIikpfHwoYz0ibWVqcy0iK2cuYXR0cigiZGF0YS1pZCIpKyItIithLmMrKyxnLmF0dHIoImlkIixjKSk7dmFyIGQ9e29wdGlvbnM6e30scGx1Z2luczp7fSxjc3M6W119LGUsaDtmb3IoZSBpbiBkKWlmKGg9Zy5hdHRyKCJkYXRhLW1lanMiK2UpKWRbZV09alF1ZXJ5LnBhcnNlSlNPTihoKTtiKCl9KX0oalF1ZXJ5KX0pO2EuZ3N8fCgidW5kZWZpbmVkIiE9PXR5cGVvZiBtZWpzY3NzJiZhLmNzc2xvYWQobWVqc2NzcyksYS5ncz1qUXVlcnkuZ2V0U2NyaXB0KG1lanNwYXRoLGZ1bmN0aW9uKCl7YS5ncz0hMDthLmluaXQoKTtqUXVlcnkoYS5pbml0KTtvbkFqYXhMb2FkKGEuaW5pdCl9KSl9KSgpOzwvc2NyaXB0Pg==&#034;&gt;&lt;/div&gt; &lt;/figure&gt;
&lt;/div&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;div id=&#034;nb2-1&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh2-1&#034; class=&#034;spip_note&#034; title=&#034;Notes 2-1&#034; rev=&#034;appendix&#034;&gt;1&lt;/a&gt;] &lt;/span&gt;Le Charlieplexing est une technique propos&#233;e en 1995 par Charlie Allen, voir &lt;a href=&#034;http://en.wikipedia.org/wiki/Charlieplexing&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;l'article sur Wikipedia&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div id=&#034;nb2-2&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh2-2&#034; class=&#034;spip_note&#034; title=&#034;Notes 2-2&#034; rev=&#034;appendix&#034;&gt;2&lt;/a&gt;] &lt;/span&gt;La tension de seuil d&#233;pend de la couleur de la LED mais m&#234;me en mettant en s&#233;rie 2 LED rouge dont la tension de seuil est la plus faible, 1,6V, 2 &#215; 1,6V = 3,2 V reste sup&#233;rieure &#224; la tension de seuil des LED violettes, 3,1V&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Reflexions ergonomiques sur le TCO</title>
		<link>https://modelleisenbahn.triskell.org/spip.php?article49</link>
		<guid isPermaLink="true">https://modelleisenbahn.triskell.org/spip.php?article49</guid>
		<dc:date>2013-12-01T16:27:36Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Jean-Luc</dc:creator>


		<dc:subject>TCO</dc:subject>
		<dc:subject>LED</dc:subject>

		<description>
&lt;p&gt;L'ergonomie du TCO me tourne dans la t&#234;te depuis quelques semaine et il est temps de fixer les r&#233;flexions sur le papier, enfin sur le web. &lt;br class='autobr' /&gt;
Les boutons tactiles &lt;br class='autobr' /&gt;
Comme expliqu&#233; dans &#171; Quelques r&#233;flexions &#187;, le TCO est constitu&#233; d'un cadre tactile de 240 points sensibles dispos&#233;s selon un maillage de 3cm en X et de 2cm en Y. Tous les points sensibles ne sont pas employ&#233;s. Ceux qui le sont doivent &#234;tre mat&#233;rialis&#233;s par une LED. &lt;br class='autobr' /&gt;
Un point important avec le tactile est que l'utilisateur doit (&#8230;)&lt;/p&gt;


-
&lt;a href="https://modelleisenbahn.triskell.org/spip.php?rubrique20" rel="directory"&gt;Le TCO&lt;/a&gt;

/ 
&lt;a href="https://modelleisenbahn.triskell.org/spip.php?mot8" rel="tag"&gt;TCO&lt;/a&gt;, 
&lt;a href="https://modelleisenbahn.triskell.org/spip.php?mot9" rel="tag"&gt;LED&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;L'ergonomie du TCO me tourne dans la t&#234;te depuis quelques semaine et il est temps de fixer les r&#233;flexions sur le papier, enfin sur le web.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Les boutons tactiles&lt;/h2&gt;
&lt;p&gt;Comme expliqu&#233; dans &#171; &lt;a href='https://modelleisenbahn.triskell.org/spip.php?article48' class=&#034;spip_in&#034;&gt;Quelques r&#233;flexions&lt;/a&gt; &#187;, le TCO est constitu&#233; d'un cadre tactile de 240 points sensibles dispos&#233;s selon un maillage de 3cm en X et de 2cm en Y&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb1&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;Suite &#224; une adaptation technique, la g&#233;om&#233;trie du TCO a chang&#233; entretemps. (&#8230;)&#034; id=&#034;nh1&#034;&gt;1&lt;/a&gt;]&lt;/span&gt;. Tous les points sensibles ne sont pas employ&#233;s. Ceux qui le sont doivent &#234;tre mat&#233;rialis&#233;s par une LED.&lt;/p&gt;
&lt;p&gt;Un point important avec le tactile est que l'utilisateur doit avoir un retour imm&#233;diat de ses actions puisqu'il n'a aucun retour m&#233;canique. Le fait de toucher une zone sensible doit produire un changement visuel.&lt;/p&gt;
&lt;p&gt;Imaginons que la zone sensible et la LED qui la mat&#233;rialise corresponde &#224; la man&#339;uvre d'une aiguille.&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; L'aiguille au repos est symbolis&#233;e par une lumi&#232;re verte permanente ;&lt;/li&gt;&lt;li&gt; L'aiguille en mouvement est symbolis&#233;e par une lumi&#232;re jaune clignotante ;&lt;/li&gt;&lt;li&gt; Le fait de toucher la zone sensible &#233;claire en jaune permanent ;&lt;/li&gt;&lt;li&gt; Le fait de retirer le doigt de la zone sensible provoque le mouvement de l'aiguille.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Le mouvement en lui m&#234;me prend peu de temps mais le contr&#244;leur central peut diff&#233;rer le mouvement de l'aiguille parce qu'une rame, conduite en automatique ou par un autre op&#233;rateur la pr&#233;empte. Dans ce cas faut-il l'indiquer ? par une lumi&#232;re verte clignotante par exemple ?&lt;/p&gt;
&lt;p&gt;Le m&#234;me principe s'applique pour les boutons des autres dispositifs : d&#233;teleurs, coupure d'alimentation, etc, avec &#233;videmment des couleurs diff&#233;rentes selon le dispositif. Mais il y aura aussi des boutons semblables pour les fonctions. Par exemple envoyer une rame en gare cach&#233;e pourrait se faire en touchant le canton o&#249; se trouve la rame pour la s&#233;lectionner puis en touchant un bouton symbolisant la gare cach&#233;e.&lt;/p&gt;
&lt;p&gt;Les boutons correspondantes aux appareils de voie : aiguilles et d&#233;teleurs, seront situ&#233;s sur le dessin de la voie elle m&#234;me. Ceux correspondant aux :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; coupures d'alimentation ;&lt;/li&gt;&lt;li&gt; s&#233;lection de rame ;&lt;/li&gt;&lt;li&gt; position du pont tournant.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;seront d&#233;port&#233;s comme repr&#233;sent&#233; ci dessous avec les boutons des aiguilles en vert et ceux des coupures d'alimentation en jaune.&lt;/p&gt;
&lt;div class='spip_document_319 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='https://modelleisenbahn.triskell.org/local/cache-vignettes/L500xH350/TCO-58bec.png?1692225209' width='500' height='350' alt='' /&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Annuler une commande&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Supposons que l'utilisateur touche un zone sensible par erreur. Que faire pour annuler la commande ? Trois pistes seront explor&#233;es.&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Disposer d'un zone sensible d'annulation mais l'utilisateur doit avoir ses deux mains libres ;&lt;/li&gt;&lt;li&gt; Ne valider la commande qu'apr&#232;s un appui d&#233;passant une certaine dur&#233;e. Un appui bref est donc annul&#233; ;&lt;/li&gt;&lt;li&gt; Annuler la commande si l'appui d&#233;passe une certaine dur&#233;e. Un appui bref est donc valid&#233;.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Difficile de dire laquelle des deux derni&#232;res solutions est la meilleure. Il faudra exp&#233;rimenter. L'avantage est qu'il suffit de changer le logiciel pour opter pour l'une ou l'autre des solutions.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;La visualisation des itin&#233;raires enclench&#233;s&lt;/h2&gt;
&lt;p&gt;La visualisation des itin&#233;raires est plus d&#233;licate. En effet, le minimum syndical consiste &#224; placer une paire de LED &#224; la fourche de chaque aiguille. Comme ceci.&lt;/p&gt;
&lt;div class='spip_document_320 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='https://modelleisenbahn.triskell.org/local/cache-vignettes/L257xH110/itineraire-83f84.png?1692225209' width='257' height='110' alt='' /&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Toutefois l'oeil aura du mal &#224; voir un itin&#233;raire si deux aiguilles sont distantes. Une alternative consiste &#224; mettre des LED tout le long des voies et de les &#233;clairer selon l'itin&#233;raire enclench&#233;.&lt;/p&gt;
&lt;p&gt;Ces LED t&#233;moins font double emploi avec les LED de r&#233;tro-&#233;clairage et il est tentant de fusionner les deux. C'est une voie que je compte explorer.&lt;/p&gt;
&lt;p&gt;Il existe des LED RGB adressables individuellement que Pierre m'avait signal&#233;es en ao&#251;t dernier, les WS2812 et WS2812B. Je reviendrai sur le fonctionnement de ces composants prochainement.&lt;/p&gt;
&lt;p&gt;L'id&#233;e est donc de disposer &#224; intervalle r&#233;gulier en position de r&#233;tro-&#233;clairage des LED RGB dont la teinte serait adapt&#233;e &#224; l'information communiqu&#233;e avec par exemple :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Bouton, couleur adapt&#233;e au type et &#224; l'&#233;tat du bouton&lt;/li&gt;&lt;li&gt; Voie non aliment&#233;e, blanc peu lumineux&lt;/li&gt;&lt;li&gt; Canton libre ne faisant pas partie d'un itin&#233;raire, blanc&lt;/li&gt;&lt;li&gt; Canton libre faisant partie d'un itin&#233;raire, vert-jaune&lt;/li&gt;&lt;li&gt; Canton occup&#233; ne faisant pas partie d'un itin&#233;raire, violet&lt;/li&gt;&lt;li&gt; Canton occup&#233; faisant partie d'un itin&#233;raire, bleu&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Les boutons ayant des couleurs satur&#233;es et les voies et cantons des couleurs peu satur&#233;es.&lt;/p&gt;
&lt;p&gt;Difficile de juger de l'effet rendu sans essayer mais le syst&#232;me semble s&#233;duisant. L'un des avantages &#233;vident est de pouvoir r&#233;gler l'&#233;clairage et la couleur apr&#232;s-coup alors que l'utilisation de LED bicolores fixes oblige &#224; d&#233;cider de l'aspect &#224; priori.&lt;/p&gt;
&lt;p&gt;Un peu plus de 400 LED RGB seraient n&#233;cessaires pour mon TCO. &#192; 60mA de consommation unitaire, les mettre toutes au blanc &#224; l'intensit&#233; maximum n&#233;cessiterait 24A. Mais comme elles sont tr&#232;s lumineuses, il ne sera pas n&#233;cessaire de les illuminer au maximum et il est tr&#232;s probable que la consommation effective soit de moins d'un quart de la consommation maximum. Un fois encore, il faut faire des essais pour juger de l'intensit&#233; lumineuse n&#233;cessaire.&lt;/p&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;div id=&#034;nb1&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh1&#034; class=&#034;spip_note&#034; title=&#034;Notes 1&#034; rev=&#034;appendix&#034;&gt;1&lt;/a&gt;] &lt;/span&gt;Suite &#224; une adaptation technique, la g&#233;om&#233;trie du TCO a chang&#233; entretemps. On a maintenant 20 points en X et 12 en Y&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>



</channel>

</rss>
