<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
		<id>http://wiki.lesfabriquesduponant.net/index.php?action=history&amp;feed=atom&amp;title=Led_Race_Code</id>
		<title>Led Race Code - Historique des versions</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.lesfabriquesduponant.net/index.php?action=history&amp;feed=atom&amp;title=Led_Race_Code"/>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Led_Race_Code&amp;action=history"/>
		<updated>2026-05-02T15:40:32Z</updated>
		<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Led_Race_Code&amp;diff=26461&amp;oldid=prev</id>
		<title>Arai le 1 février 2024 à 10:49</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Led_Race_Code&amp;diff=26461&amp;oldid=prev"/>
				<updated>2024-02-01T10:49:03Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Version du 1 février 2024 à 10:49&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Ligne 1 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 1 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;/*&amp;#160; &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; * ____&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160;  _&amp;#160; &amp;#160; &amp;#160; ______ _____&amp;#160; &amp;#160; _____&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; / __ \&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160;  | |&amp;#160; &amp;#160; |&amp;#160; ____|&amp;#160; __ \&amp;#160; |&amp;#160; __ \&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160;  &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; | |&amp;#160; | |_ __&amp;#160;  ___ _ __&amp;#160;  | |&amp;#160; &amp;#160; | |__&amp;#160; | |&amp;#160; | | | |__) |__ _&amp;#160; ___ ___ &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; | |&amp;#160; | | '_ \ / _ \ '_ \&amp;#160; | |&amp;#160; &amp;#160; |&amp;#160; __| | |&amp;#160; | | |&amp;#160; _&amp;#160; // _` |/ __/ _ \&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; | |__| | |_) |&amp;#160; __/ | | | | |____| |____| |__| | | | \ \ (_| | (_|&amp;#160; __/&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; \____/| .__/ \___|_| |_| |______|______|_____/&amp;#160; |_|&amp;#160; \_\__,_|\___\___|&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; | |&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160;  &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; |_|&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; Open LED Race&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; An minimalist cars race for LED strip&amp;#160; &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; This program is free software; you can redistribute it and/or modify&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; it under the terms of the GNU General Public License as published by&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; the Free Software Foundation; either version 3 of the License, or&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; (at your option) any later version.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; by gbarbarov@singulardevices.com&amp;#160; for Arduino day Seville 2019 &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; https://www.hackster.io/gbarbarov/open-led-race-a0331a&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; https://twitter.com/openledrace&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; Code made dirty and fast, next improvements in: &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; https://gitlab.com/open-led-race&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; https://openledrace.net/open-software/&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*/&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#define MAXLED&amp;#160; &amp;#160; &amp;#160; &amp;#160;  180 // MAX LEDs actives on strip&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#define MAXLED&amp;#160; &amp;#160; &amp;#160; &amp;#160;  180 // MAX LEDs actives on strip&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Arai</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Led_Race_Code&amp;diff=26458&amp;oldid=prev</id>
		<title>Arai : Page créée avec « /*    * ____                     _      ______ _____    _____   / __ \                   | |    |  ____|  __ \  |  __ \                 | |  | |_ __   ___ _ __   | |    |... »</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Led_Race_Code&amp;diff=26458&amp;oldid=prev"/>
				<updated>2024-02-01T10:44:53Z</updated>
		
		<summary type="html">&lt;p&gt;Page créée avec « /*    * ____                     _      ______ _____    _____   / __ \                   | |    |  ____|  __ \  |  __ \                 | |  | |_ __   ___ _ __   | |    |... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/*  &lt;br /&gt;
 * ____                     _      ______ _____    _____&lt;br /&gt;
  / __ \                   | |    |  ____|  __ \  |  __ \               &lt;br /&gt;
 | |  | |_ __   ___ _ __   | |    | |__  | |  | | | |__) |__ _  ___ ___ &lt;br /&gt;
 | |  | | '_ \ / _ \ '_ \  | |    |  __| | |  | | |  _  // _` |/ __/ _ \&lt;br /&gt;
 | |__| | |_) |  __/ | | | | |____| |____| |__| | | | \ \ (_| | (_|  __/&lt;br /&gt;
  \____/| .__/ \___|_| |_| |______|______|_____/  |_|  \_\__,_|\___\___|&lt;br /&gt;
        | |                                                             &lt;br /&gt;
        |_|          &lt;br /&gt;
 Open LED Race&lt;br /&gt;
 An minimalist cars race for LED strip  &lt;br /&gt;
  &lt;br /&gt;
 This program is free software; you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation; either version 3 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
&lt;br /&gt;
 by gbarbarov@singulardevices.com  for Arduino day Seville 2019 &lt;br /&gt;
 https://www.hackster.io/gbarbarov/open-led-race-a0331a&lt;br /&gt;
 https://twitter.com/openledrace&lt;br /&gt;
 &lt;br /&gt;
 Code made dirty and fast, next improvements in: &lt;br /&gt;
 https://gitlab.com/open-led-race&lt;br /&gt;
 https://openledrace.net/open-software/&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
                                                            &lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;&lt;br /&gt;
#define MAXLED         180 // MAX LEDs actives on strip&lt;br /&gt;
&lt;br /&gt;
//Pins Arduino Day 19 version &lt;br /&gt;
#define PIN_LED        27  // R 500 ohms to DI pin for WS2812 and WS2813, for WS2813 BI pin of first LED to GND  ,  CAP 1000 uF to VCC 5v/GND,power supplie 5V 2A  &lt;br /&gt;
#define PIN_P1         16   // switch player 1 to PIN and GND&lt;br /&gt;
#define PIN_P2         18   // switch player 2 to PIN and GND &lt;br /&gt;
#define PIN_AUDIO      21   // through CAP 2uf to speaker 8 ohms&lt;br /&gt;
&lt;br /&gt;
//Pins Maker Faire Roma 19 version &lt;br /&gt;
//#define PIN_LED        2  // R 500 ohms to DI pin for WS2812 and WS2813, for WS2813 BI pin of first LED to GND  ,  CAP 1000 uF to VCC 5v/GND,power supplie 5V 2A  &lt;br /&gt;
//#define PIN_P1         G34 // switch player 1 to PIN and GND&lt;br /&gt;
//#define PIN_P2         A2 // switch player 2 to PIN and GND &lt;br /&gt;
//#define PIN_AUDIO      3  // through CAP 2uf to speaker 8 ohms&lt;br /&gt;
&lt;br /&gt;
int NPIXELS=MAXLED; // leds on track&lt;br /&gt;
&lt;br /&gt;
#define COLOR1    track.Color(255,0,0)&lt;br /&gt;
#define COLOR2    track.Color(0,0,255)&lt;br /&gt;
&lt;br /&gt;
int win_music[] = {&lt;br /&gt;
  2637, 2637, 0, 2637, &lt;br /&gt;
  0, 2093, 2637, 0,&lt;br /&gt;
  3136    &lt;br /&gt;
};&lt;br /&gt;
      &lt;br /&gt;
byte  gravity_map[MAXLED];     &lt;br /&gt;
&lt;br /&gt;
int TBEEP=3; &lt;br /&gt;
&lt;br /&gt;
float speed1=0;&lt;br /&gt;
float speed2=0;&lt;br /&gt;
float dist1=0;&lt;br /&gt;
float dist2=0;&lt;br /&gt;
&lt;br /&gt;
byte loop1=0;&lt;br /&gt;
byte loop2=0;&lt;br /&gt;
&lt;br /&gt;
byte leader=0;&lt;br /&gt;
byte loop_max=5; //total laps race&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
float ACEL=0.2;&lt;br /&gt;
float kf=0.015; //friction constant&lt;br /&gt;
float kg=0.003; //gravity constant&lt;br /&gt;
&lt;br /&gt;
byte flag_sw1=0;&lt;br /&gt;
byte flag_sw2=0;&lt;br /&gt;
byte draworder=0;&lt;br /&gt;
 &lt;br /&gt;
unsigned long timestamp=0;&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel track = Adafruit_NeoPixel(MAXLED, PIN_LED, NEO_GRB + NEO_KHZ800);&lt;br /&gt;
&lt;br /&gt;
int tdelay = 5; &lt;br /&gt;
&lt;br /&gt;
void set_ramp(byte H,byte a,byte b,byte c)&lt;br /&gt;
{for(int i=0;i&amp;lt;(b-a);i++){gravity_map[a+i]=127-i*((float)H/(b-a));};&lt;br /&gt;
 gravity_map[b]=127; &lt;br /&gt;
 for(int i=0;i&amp;lt;(c-b);i++){gravity_map[b+i+1]=127+H-i*((float)H/(c-b));};&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void set_loop(byte H,byte a,byte b,byte c)&lt;br /&gt;
{for(int i=0;i&amp;lt;(b-a);i++){gravity_map[a+i]=127-i*((float)H/(b-a));};&lt;br /&gt;
 gravity_map[b]=255; &lt;br /&gt;
 for(int i=0;i&amp;lt;(c-b);i++){gravity_map[b+i+1]=127+H-i*((float)H/(c-b));};&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for(int i=0;i&amp;lt;NPIXELS;i++){gravity_map[i]=127;};&lt;br /&gt;
  track.begin(); &lt;br /&gt;
  pinMode(PIN_P1,INPUT_PULLUP); &lt;br /&gt;
  pinMode(PIN_P2,INPUT_PULLUP);  &lt;br /&gt;
&lt;br /&gt;
  if ((digitalRead(PIN_P1)==0)) //push switch 1 on reset for activate physic&lt;br /&gt;
  {&lt;br /&gt;
    set_ramp(12,90,100,110);    // ramp centred in LED 100 with 10 led fordward and 10 backguard &lt;br /&gt;
    for(int i=0;i&amp;lt;NPIXELS;i++){track.setPixelColor(i, track.Color(0,0,(127-gravity_map[i])/8) );};&lt;br /&gt;
    track.show();&lt;br /&gt;
  };&lt;br /&gt;
  start_race();    &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void start_race(){for(int i=0;i&amp;lt;NPIXELS;i++){track.setPixelColor(i, track.Color(0,0,0));};&lt;br /&gt;
                  track.show();&lt;br /&gt;
                  delay(2000);&lt;br /&gt;
                  track.setPixelColor(12, track.Color(0,255,0));&lt;br /&gt;
                  track.setPixelColor(11, track.Color(0,255,0));&lt;br /&gt;
                  track.show();&lt;br /&gt;
                  tone(PIN_AUDIO,400);&lt;br /&gt;
                  delay(2000);&lt;br /&gt;
                  noTone(PIN_AUDIO);                  &lt;br /&gt;
                  track.setPixelColor(12, track.Color(0,0,0));&lt;br /&gt;
                  track.setPixelColor(11, track.Color(0,0,0));&lt;br /&gt;
                  track.setPixelColor(10, track.Color(255,255,0));&lt;br /&gt;
                  track.setPixelColor(9, track.Color(255,255,0));&lt;br /&gt;
                  track.show();&lt;br /&gt;
                  tone(PIN_AUDIO,600);&lt;br /&gt;
                  delay(2000);&lt;br /&gt;
                  noTone(PIN_AUDIO);                  &lt;br /&gt;
                  track.setPixelColor(9, track.Color(0,0,0));&lt;br /&gt;
                  track.setPixelColor(10, track.Color(0,0,0));&lt;br /&gt;
                  track.setPixelColor(8, track.Color(255,0,0));&lt;br /&gt;
                  track.setPixelColor(7, track.Color(255,0,0));&lt;br /&gt;
                  track.show();&lt;br /&gt;
                  tone(PIN_AUDIO,1200);&lt;br /&gt;
                  delay(2000);&lt;br /&gt;
                  noTone(PIN_AUDIO);                               &lt;br /&gt;
                  timestamp=0;              &lt;br /&gt;
                 };&lt;br /&gt;
&lt;br /&gt;
void winner_fx() {&lt;br /&gt;
               int msize = sizeof(win_music) / sizeof(int);&lt;br /&gt;
               for (int note = 0; note &amp;lt; msize; note++) {&lt;br /&gt;
               tone(PIN_AUDIO, win_music[note],200);&lt;br /&gt;
               delay(230);&lt;br /&gt;
               noTone(PIN_AUDIO);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
                                               &lt;br /&gt;
              };&lt;br /&gt;
&lt;br /&gt;
void burning1(){&lt;br /&gt;
//to do&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
void burning2(){&lt;br /&gt;
//to do&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
void track_rain_fx(){&lt;br /&gt;
//to do&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
void track_oil_fx(){&lt;br /&gt;
//to do&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
void track_snow_fx(){&lt;br /&gt;
//to do&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void fuel_empty(){&lt;br /&gt;
//to do&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
void fill_fuel_fx(){&lt;br /&gt;
//to do&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
void in_track_boxs_fx(){&lt;br /&gt;
//to do&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
void pause_track_boxs_fx(){&lt;br /&gt;
//to do&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
void flag_boxs_stop(){&lt;br /&gt;
//to do&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
void flag_boxs_ready(){&lt;br /&gt;
//to do&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
void draw_safety_car(){&lt;br /&gt;
//to do&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
void telemetry_rx(){&lt;br /&gt;
  //to do&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
void telemetry_tx(){&lt;br /&gt;
  //to do&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
void telemetry_lap_time_car1(){&lt;br /&gt;
//to do&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
void telemetry_lap_time_car2(){&lt;br /&gt;
//to do&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
void telemetry_record_lap(){&lt;br /&gt;
//to do&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
void telemetry_total_time(){&lt;br /&gt;
//to do&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
int read_sensor(byte player){&lt;br /&gt;
//to do&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int calibration_sensor(byte player){&lt;br /&gt;
  //to do  &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int display_lcd_laps(){&lt;br /&gt;
  //to do  &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int display_lcd_time(){&lt;br /&gt;
  //to do  &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void draw_car1(void){for(int i=0;i&amp;lt;=loop1;i++){track.setPixelColor(((word)dist1 % NPIXELS)+i, track.Color(0,255-i*20,0));};                   &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
void draw_car2(void){for(int i=0;i&amp;lt;=loop2;i++){track.setPixelColor(((word)dist2 % NPIXELS)+i, track.Color(255-i*20,0,0));};            &lt;br /&gt;
 }&lt;br /&gt;
  &lt;br /&gt;
void loop() {&lt;br /&gt;
    //for(int i=0;i&amp;lt;NPIXELS;i++){track.setPixelColor(i, track.Color(0,0,0));};&lt;br /&gt;
    for(int i=0;i&amp;lt;NPIXELS;i++){track.setPixelColor(i, track.Color(0,0,(127-gravity_map[i])/8) );};&lt;br /&gt;
    &lt;br /&gt;
    if ( (flag_sw1==1) &amp;amp;&amp;amp; (digitalRead(PIN_P1)==0) ) {flag_sw1=0;speed1+=ACEL;};&lt;br /&gt;
    if ( (flag_sw1==0) &amp;amp;&amp;amp; (digitalRead(PIN_P1)==1) ) {flag_sw1=1;};&lt;br /&gt;
&lt;br /&gt;
    if ((gravity_map[(word)dist1 % NPIXELS])&amp;lt;127) speed1-=kg*(127-(gravity_map[(word)dist1 % NPIXELS]));&lt;br /&gt;
    if ((gravity_map[(word)dist1 % NPIXELS])&amp;gt;127) speed1+=kg*((gravity_map[(word)dist1 % NPIXELS])-127);&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    speed1-=speed1*kf; &lt;br /&gt;
    &lt;br /&gt;
    if ( (flag_sw2==1) &amp;amp;&amp;amp; (digitalRead(PIN_P2)==0) ) {flag_sw2=0;speed2+=ACEL;};&lt;br /&gt;
    if ( (flag_sw2==0) &amp;amp;&amp;amp; (digitalRead(PIN_P2)==1) ) {flag_sw2=1;};&lt;br /&gt;
&lt;br /&gt;
    if ((gravity_map[(word)dist2 % NPIXELS])&amp;lt;127) speed2-=kg*(127-(gravity_map[(word)dist2 % NPIXELS]));&lt;br /&gt;
    if ((gravity_map[(word)dist2 % NPIXELS])&amp;gt;127) speed2+=kg*((gravity_map[(word)dist2 % NPIXELS])-127);&lt;br /&gt;
        &lt;br /&gt;
    speed2-=speed2*kf; &lt;br /&gt;
        &lt;br /&gt;
    dist1+=speed1;&lt;br /&gt;
    dist2+=speed2;&lt;br /&gt;
&lt;br /&gt;
    if (dist1&amp;gt;dist2) {leader=1;} &lt;br /&gt;
    if (dist2&amp;gt;dist1) {leader=2;};&lt;br /&gt;
      &lt;br /&gt;
    if (dist1&amp;gt;NPIXELS*loop1) {loop1++;tone(PIN_AUDIO,600);TBEEP=2;};&lt;br /&gt;
    if (dist2&amp;gt;NPIXELS*loop2) {loop2++;tone(PIN_AUDIO,700);TBEEP=2;};&lt;br /&gt;
&lt;br /&gt;
    if (loop1&amp;gt;loop_max) {for(int i=0;i&amp;lt;NPIXELS;i++){track.setPixelColor(i, track.Color(0,255,0));}; track.show();&lt;br /&gt;
                                                    winner_fx();loop1=0;loop2=0;dist1=0;dist2=0;speed1=0;speed2=0;timestamp=0;&lt;br /&gt;
                                                    start_race();&lt;br /&gt;
                                                   }&lt;br /&gt;
    if (loop2&amp;gt;loop_max) {for(int i=0;i&amp;lt;NPIXELS;i++){track.setPixelColor(i, track.Color(255,0,0));}; track.show();&lt;br /&gt;
                                                    winner_fx();loop1=0;loop2=0;dist1=0;dist2=0;speed1=0;speed2=0;timestamp=0;&lt;br /&gt;
                                                    start_race();&lt;br /&gt;
                                                   }&lt;br /&gt;
    if ((millis() &amp;amp; 512)==(512*draworder)) {if (draworder==0) {draworder=1;}&lt;br /&gt;
                          else {draworder=0;}   &lt;br /&gt;
                         }; &lt;br /&gt;
&lt;br /&gt;
    if (draworder==0) {draw_car1();draw_car2();}&lt;br /&gt;
        else {draw_car2();draw_car1();}   &lt;br /&gt;
                 &lt;br /&gt;
    track.show(); &lt;br /&gt;
    delay(tdelay);&lt;br /&gt;
    &lt;br /&gt;
    if (TBEEP&amp;gt;0) {TBEEP-=1; &lt;br /&gt;
                  if (TBEEP==0) {noTone(PIN_AUDIO);}; // lib conflict !!!! interruption off by neopixel&lt;br /&gt;
                 };   &lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Arai</name></author>	</entry>

	</feed>