<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[Arduino Polska Forum - Wszystkie działy]]></title>
		<link>https://forum.arduinopolska.pl/</link>
		<description><![CDATA[Arduino Polska Forum - https://forum.arduinopolska.pl]]></description>
		<pubDate>Thu, 14 May 2026 15:10:49 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[projektuje, programuje, buduje...]]></title>
			<link>https://forum.arduinopolska.pl/watek-projektuje-programuje-buduje</link>
			<pubDate>Tue, 05 May 2026 15:58:40 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.arduinopolska.pl/member.php?action=profile&uid=38296">marekdyjor</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.arduinopolska.pl/watek-projektuje-programuje-buduje</guid>
			<description><![CDATA[Mam 59 lat. Jestem jack of all trades, złota rączka.<br />
<br />
Buduję urządzenia w oparciu o MCU Arduino i inne.<br />
<br />
Projektuję, buduję i programuję. <br />
<br />
Interesuje mnie muzyka.<br />
<br />
Zbudowałem syntezator, a teraz pracuję nad sporym projektem MIDI managera dla grania DAW-less, czyli bez użycia komputera (takiego klasycznego). Urządzenie ma wspierać artystę w graniu na żywo.<br />
<br />
Oba zostały oparte na MCU Teensy 4.x . W syntezatorze jest drugi kontroler Mega 256 jako sterowanie UI, potencjometry, przełączniki, wyświetlacz, in/out MIDI.<br />
<br />
Jestem zainteresowany zleceniami na zaprojektowanie, wykonanie i programowanie systemów w oparciu o MCU.<br />
<br />
Programuję głównie w c++]]></description>
			<content:encoded><![CDATA[Mam 59 lat. Jestem jack of all trades, złota rączka.<br />
<br />
Buduję urządzenia w oparciu o MCU Arduino i inne.<br />
<br />
Projektuję, buduję i programuję. <br />
<br />
Interesuje mnie muzyka.<br />
<br />
Zbudowałem syntezator, a teraz pracuję nad sporym projektem MIDI managera dla grania DAW-less, czyli bez użycia komputera (takiego klasycznego). Urządzenie ma wspierać artystę w graniu na żywo.<br />
<br />
Oba zostały oparte na MCU Teensy 4.x . W syntezatorze jest drugi kontroler Mega 256 jako sterowanie UI, potencjometry, przełączniki, wyświetlacz, in/out MIDI.<br />
<br />
Jestem zainteresowany zleceniami na zaprojektowanie, wykonanie i programowanie systemów w oparciu o MCU.<br />
<br />
Programuję głównie w c++]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[bransoletka fitness]]></title>
			<link>https://forum.arduinopolska.pl/watek-bransoletka-fitness</link>
			<pubDate>Mon, 04 May 2026 08:04:30 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.arduinopolska.pl/member.php?action=profile&uid=37894">Goliat</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.arduinopolska.pl/watek-bransoletka-fitness</guid>
			<description><![CDATA[Jestem początkującym użytkownikiem Arduino. Mam jednak solidne umiejętności programistyczne. Chcę stworzyć niezawodny monitor aktywności fizycznej, który będzie co najmniej dokładnie mierzył tętno, liczbę kroków i sen. Na nadgarstkach noszę inne rzeczy, więc chciałbym, aby to urządzenie można było nosić w okolicy bicepsa i ramienia. Ponieważ będę je nosił w tym miejscu, nie potrzebuję ekranu. Chcę po prostu coś w rodzaju opaski Whoop, którą będę mógł zsynchronizować z telefonem.<br />
<br />
Z tego, co wiem (chatgpt), będę potrzebował mikrokontrolera esp32, czujnika ruchu MPU6050 lub MPU9250, czujnika tętna MAX30102 (podobno niedokładnego podczas podnoszenia ciężarów) oraz modułu ładującego.<br />
<br />
Będę też musiał zrobić jakąś opaskę, żeby to przytrzymać, więc myślałem o użyciu jakiejś opaski z materiału (może zrobionej ze skarpety lub jakiejś tkaniny?).<br />
<br />
Potrzebuję porady w tej sprawie.]]></description>
			<content:encoded><![CDATA[Jestem początkującym użytkownikiem Arduino. Mam jednak solidne umiejętności programistyczne. Chcę stworzyć niezawodny monitor aktywności fizycznej, który będzie co najmniej dokładnie mierzył tętno, liczbę kroków i sen. Na nadgarstkach noszę inne rzeczy, więc chciałbym, aby to urządzenie można było nosić w okolicy bicepsa i ramienia. Ponieważ będę je nosił w tym miejscu, nie potrzebuję ekranu. Chcę po prostu coś w rodzaju opaski Whoop, którą będę mógł zsynchronizować z telefonem.<br />
<br />
Z tego, co wiem (chatgpt), będę potrzebował mikrokontrolera esp32, czujnika ruchu MPU6050 lub MPU9250, czujnika tętna MAX30102 (podobno niedokładnego podczas podnoszenia ciężarów) oraz modułu ładującego.<br />
<br />
Będę też musiał zrobić jakąś opaskę, żeby to przytrzymać, więc myślałem o użyciu jakiejś opaski z materiału (może zrobionej ze skarpety lub jakiejś tkaniny?).<br />
<br />
Potrzebuję porady w tej sprawie.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Problem (Mega2560)]]></title>
			<link>https://forum.arduinopolska.pl/watek-problem-mega2560</link>
			<pubDate>Fri, 03 Apr 2026 14:54:40 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.arduinopolska.pl/member.php?action=profile&uid=38026">Franek_L</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.arduinopolska.pl/watek-problem-mega2560</guid>
			<description><![CDATA[Witam wszystkich,<br />
Mam problem podczas tworzenia programu do swojego ATmega2560 który ma sterować serwomechanizmem. <br />
Istotą PROBLEMU jest to, że żadne zmienne w nowej iteracji nie maja przypisanej wartości lecz przywracane mają pierwotne jak np. <span style="color: #4e5b61;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: Consolas,;" class="mycode_font"><span style="color: #4e5b61;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: Consolas,;" class="mycode_font"><span style="color: #4e5b61;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: Consolas,;" class="mycode_font"><span style="color: #00979d;" class="mycode_color">volatile</span> <span style="color: #00979d;" class="mycode_color">int16_t</span></span></span> encoder_count = </span><span style="color: #005c5f;" class="mycode_color">0</span></span></span>;.<br />
</span></span></span></span>Będę oczywiście bardzo wdzięczny za wszelkie wskazówki. <br />
Jeszcze dodam, że wgrałem to na drugą płytkę i problem jest ten sam dlatego zakładam problem w softwarowy.]]></description>
			<content:encoded><![CDATA[Witam wszystkich,<br />
Mam problem podczas tworzenia programu do swojego ATmega2560 który ma sterować serwomechanizmem. <br />
Istotą PROBLEMU jest to, że żadne zmienne w nowej iteracji nie maja przypisanej wartości lecz przywracane mają pierwotne jak np. <span style="color: #4e5b61;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: Consolas,;" class="mycode_font"><span style="color: #4e5b61;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: Consolas,;" class="mycode_font"><span style="color: #4e5b61;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: Consolas,;" class="mycode_font"><span style="color: #00979d;" class="mycode_color">volatile</span> <span style="color: #00979d;" class="mycode_color">int16_t</span></span></span> encoder_count = </span><span style="color: #005c5f;" class="mycode_color">0</span></span></span>;.<br />
</span></span></span></span>Będę oczywiście bardzo wdzięczny za wszelkie wskazówki. <br />
Jeszcze dodam, że wgrałem to na drugą płytkę i problem jest ten sam dlatego zakładam problem w softwarowy.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Blad z wyswietlaczem oled]]></title>
			<link>https://forum.arduinopolska.pl/watek-blad-z-wyswietlaczem-oled</link>
			<pubDate>Sat, 14 Mar 2026 10:06:55 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.arduinopolska.pl/member.php?action=profile&uid=37891">antek787</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.arduinopolska.pl/watek-blad-z-wyswietlaczem-oled</guid>
			<description><![CDATA[witam<br />
mam problem z ekranem oled chcialem wgrac kod ale w pokazuje blad "Compilation error: bitmaps.h: No such file or directory" ktos wie jak to naprawic?<br />
kod:<br />
<span style="color: #4e5b61;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: Consolas,;" class="mycode_font"><span style="color: #728e00;" class="mycode_color">#include</span> <span style="color: #005c5f;" class="mycode_color">&lt;Wire.h&gt;</span><br />
<span style="color: #728e00;" class="mycode_color">#include</span> <span style="color: #005c5f;" class="mycode_color">&lt;Adafruit_SSD1306.h&gt;</span><br />
<span style="color: #728e00;" class="mycode_color">#include</span> <span style="color: #005c5f;" class="mycode_color">&lt;EEPROM.h&gt;</span><br />
<span style="color: #728e00;" class="mycode_color">#include</span> <span style="color: #005c5f;" class="mycode_color">"bitmaps.h"</span><br />
<span style="color: #728e00;" class="mycode_color">#include</span> <span style="color: #005c5f;" class="mycode_color">"pitches.h"</span><br />
<br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">TURN_UP</span> <span style="color: #005c5f;" class="mycode_color">0</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">TURN_RIGHT</span> <span style="color: #005c5f;" class="mycode_color">1</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">TURN_LEFT</span> <span style="color: #005c5f;" class="mycode_color">3</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">TURN_DOWN</span> <span style="color: #005c5f;" class="mycode_color">2</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">SW_PIN</span><span style="color: #4e5b61;" class="mycode_color"> A3</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">VRY</span><span style="color: #4e5b61;" class="mycode_color"> A6</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">VRX</span><span style="color: #4e5b61;" class="mycode_color"> A7</span><br />
<br />
<span style="color: #00979d;" class="mycode_color">const</span> <span style="color: #00979d;" class="mycode_color">int</span><span style="color: #4e5b61;" class="mycode_color"> screenWidth = </span><span style="color: #005c5f;" class="mycode_color">128</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #00979d;" class="mycode_color">const</span> <span style="color: #00979d;" class="mycode_color">int</span><span style="color: #4e5b61;" class="mycode_color"> screenHeight = </span><span style="color: #005c5f;" class="mycode_color">64</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #00979d;" class="mycode_color">const</span> <span style="color: #00979d;" class="mycode_color">int</span><span style="color: #4e5b61;" class="mycode_color"> gameWidth = </span><span style="color: #005c5f;" class="mycode_color">64</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #00979d;" class="mycode_color">const</span> <span style="color: #00979d;" class="mycode_color">int</span><span style="color: #4e5b61;" class="mycode_color"> gameHeight = </span><span style="color: #005c5f;" class="mycode_color">32</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #00979d;" class="mycode_color">const</span> <span style="color: #00979d;" class="mycode_color">int</span><span style="color: #4e5b61;" class="mycode_color"> maxLength = </span><span style="color: #005c5f;" class="mycode_color">464</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #00979d;" class="mycode_color">const</span> <span style="color: #00979d;" class="mycode_color">int</span><span style="color: #4e5b61;" class="mycode_color"> startLength = </span><span style="color: #005c5f;" class="mycode_color">6</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">Adafruit_SSD1306 </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">screenWidth, screenHeight, &amp;</span><span style="color: #434f54;" class="mycode_color">Wire</span><span style="color: #4e5b61;" class="mycode_color">, -</span><span style="color: #005c5f;" class="mycode_color">1</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<br />
<span style="color: #00979d;" class="mycode_color">enum</span><span style="color: #4e5b61;" class="mycode_color"> GameState </span><span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">WELCOME_STATE</span><span style="color: #4e5b61;" class="mycode_color">,</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">GAMEPLAY_STATE</span><span style="color: #4e5b61;" class="mycode_color">,</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">GAMEOVER_STATE</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<br />
<span style="color: #00979d;" class="mycode_color">int</span><span style="color: #4e5b61;" class="mycode_color"> gameState = WELCOME_STATE;</span><br />
<br />
<span style="color: #00979d;" class="mycode_color">bool</span><span style="color: #4e5b61;" class="mycode_color"> isWantDisplayFlickeing = </span><span style="color: #005c5f;" class="mycode_color">false</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #00979d;" class="mycode_color">unsigned</span> <span style="color: #00979d;" class="mycode_color">long</span><span style="color: #4e5b61;" class="mycode_color"> lastDisplayFlickering = </span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<br />
<br />
<br />
<span style="color: #00979d;" class="mycode_color">struct</span><span style="color: #4e5b61;" class="mycode_color"> Position </span><span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #00979d;" class="mycode_color">int</span><span style="color: #4e5b61;" class="mycode_color"> x, y;</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #00979d;" class="mycode_color">bool</span><span style="color: #4e5b61;" class="mycode_color"> operator==</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #00979d;" class="mycode_color">const</span><span style="color: #4e5b61;" class="mycode_color"> Position</span><span style="color: #00979d;" class="mycode_color">&amp;</span> <span style="color: #434f54;" class="mycode_color">other)</span> <span style="color: #00979d;" class="mycode_color">const</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #728e00;" class="mycode_color">return</span><span style="color: #4e5b61;" class="mycode_color"> x == </span><span style="color: #d35400;" class="mycode_color">other</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">x</span><span style="color: #4e5b61;" class="mycode_color"> &amp;&amp; y == </span><span style="color: #d35400;" class="mycode_color">other</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">y</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">  Position</span><span style="color: #00979d;" class="mycode_color">&amp;</span><span style="color: #4e5b61;" class="mycode_color"> operator+=</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #00979d;" class="mycode_color">const</span><span style="color: #4e5b61;" class="mycode_color"> Position</span><span style="color: #00979d;" class="mycode_color">&amp;</span> <span style="color: #434f54;" class="mycode_color">other)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">    x += </span><span style="color: #d35400;" class="mycode_color">other</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">x</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    y += </span><span style="color: #d35400;" class="mycode_color">other</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">y</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #728e00;" class="mycode_color">return</span><span style="color: #4e5b61;" class="mycode_color"> *</span><span style="color: #434f54;" class="mycode_color">this</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">draw_square</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">Position </span><span style="color: #434f54;" class="mycode_color">pos</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #00979d;" class="mycode_color">int</span> <span style="color: #434f54;" class="mycode_color">color</span><span style="color: #4e5b61;" class="mycode_color"> = WHITE</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">fillRect</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">pos</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">x</span><span style="color: #4e5b61;" class="mycode_color"> * </span><span style="color: #005c5f;" class="mycode_color">2</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #d35400;" class="mycode_color">pos</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">y</span><span style="color: #4e5b61;" class="mycode_color"> * </span><span style="color: #005c5f;" class="mycode_color">2</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #005c5f;" class="mycode_color">2</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #005c5f;" class="mycode_color">2</span><span style="color: #4e5b61;" class="mycode_color">, color</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #00979d;" class="mycode_color">bool</span> <span style="color: #d35400;" class="mycode_color">test_position</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">Position </span><span style="color: #434f54;" class="mycode_color">pos)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #728e00;" class="mycode_color">return</span> <span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">getPixel</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">pos</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">x</span><span style="color: #4e5b61;" class="mycode_color"> * </span><span style="color: #005c5f;" class="mycode_color">2</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #d35400;" class="mycode_color">pos</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">y</span><span style="color: #4e5b61;" class="mycode_color"> * </span><span style="color: #005c5f;" class="mycode_color">2</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #00979d;" class="mycode_color">const</span><span style="color: #4e5b61;" class="mycode_color"> Position </span><span style="color: #d35400;" class="mycode_color">kDirPos</span><span style="color: #4e5b61;" class="mycode_color">[</span><span style="color: #005c5f;" class="mycode_color">4</span><span style="color: #4e5b61;" class="mycode_color">] = </span><span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">{</span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #4e5b61;" class="mycode_color">,-</span><span style="color: #005c5f;" class="mycode_color">1</span><span style="color: #434f54;" class="mycode_color">}</span><span style="color: #4e5b61;" class="mycode_color">,</span><span style="color: #95a5a6;" class="mycode_color"> // Up</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">{</span><span style="color: #005c5f;" class="mycode_color">1</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #434f54;" class="mycode_color">}</span><span style="color: #4e5b61;" class="mycode_color">,</span><span style="color: #95a5a6;" class="mycode_color"> // Right</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">{</span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #005c5f;" class="mycode_color">1</span><span style="color: #434f54;" class="mycode_color">}</span><span style="color: #4e5b61;" class="mycode_color">,</span><span style="color: #95a5a6;" class="mycode_color">  // Down</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">{</span><span style="color: #4e5b61;" class="mycode_color">-</span><span style="color: #005c5f;" class="mycode_color">1</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #434f54;" class="mycode_color">}</span><span style="color: #95a5a6;" class="mycode_color"> // Left</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<br />
<span style="color: #00979d;" class="mycode_color">struct</span><span style="color: #4e5b61;" class="mycode_color"> Player </span><span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">Player</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #434f54;" class="mycode_color">{</span> <br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">reset</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">; </span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">  Position pos;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #00979d;" class="mycode_color">unsigned</span> <span style="color: #00979d;" class="mycode_color">char</span> <span style="color: #d35400;" class="mycode_color">tail</span><span style="color: #4e5b61;" class="mycode_color">[maxLength];</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #00979d;" class="mycode_color">unsigned</span> <span style="color: #00979d;" class="mycode_color">char</span><span style="color: #4e5b61;" class="mycode_color"> direction;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #00979d;" class="mycode_color">int</span><span style="color: #4e5b61;" class="mycode_color"> size, moved;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">reset</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">    pos = </span><span style="color: #434f54;" class="mycode_color">{</span><span style="color: #005c5f;" class="mycode_color">32</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #005c5f;" class="mycode_color">16</span><span style="color: #434f54;" class="mycode_color">}</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    direction = </span><span style="color: #005c5f;" class="mycode_color">1</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    size = startLength;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">memset</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">tail, </span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #4e5b61;" class="mycode_color">, sizeof</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">tail</span><span style="color: #434f54;" class="mycode_color">))</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    moved = </span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #00979d;" class="mycode_color">bool</span> <span style="color: #d35400;" class="mycode_color">isTurningDirIsVaild</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #00979d;" class="mycode_color">int</span> <span style="color: #434f54;" class="mycode_color">dir)</span> <span style="color: #434f54;" class="mycode_color">{</span> <br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">dir == TURN_LEFT &amp;&amp; direction == TURN_RIGHT</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #728e00;" class="mycode_color">return</span> <span style="color: #005c5f;" class="mycode_color">false</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #434f54;" class="mycode_color">}</span> <span style="color: #728e00;" class="mycode_color">else</span> <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">dir == TURN_RIGHT &amp;&amp; direction == TURN_LEFT</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #728e00;" class="mycode_color">return</span> <span style="color: #005c5f;" class="mycode_color">false</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #434f54;" class="mycode_color">}</span> <span style="color: #728e00;" class="mycode_color">else</span> <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">dir == TURN_DOWN &amp;&amp; direction == TURN_UP</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #728e00;" class="mycode_color">return</span> <span style="color: #005c5f;" class="mycode_color">false</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #434f54;" class="mycode_color">}</span> <span style="color: #728e00;" class="mycode_color">else</span> <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">dir == TURN_UP &amp;&amp; direction == TURN_DOWN</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #728e00;" class="mycode_color">return</span> <span style="color: #005c5f;" class="mycode_color">false</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #728e00;" class="mycode_color">return</span> <span style="color: #005c5f;" class="mycode_color">true</span><span style="color: #4e5b61;" class="mycode_color">; </span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">turn</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #00979d;" class="mycode_color">int</span> <span style="color: #434f54;" class="mycode_color">dir)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">!</span><span style="color: #d35400;" class="mycode_color">isTurningDirIsVaild</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">dir</span><span style="color: #434f54;" class="mycode_color">))</span> <span style="color: #728e00;" class="mycode_color">return</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">    direction = dir;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">update</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #728e00;" class="mycode_color">for</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #00979d;" class="mycode_color">int</span><span style="color: #4e5b61;" class="mycode_color"> i = maxLength - </span><span style="color: #005c5f;" class="mycode_color">1</span><span style="color: #4e5b61;" class="mycode_color">; i &gt; </span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #4e5b61;" class="mycode_color">; --i</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #d35400;" class="mycode_color">tail</span><span style="color: #4e5b61;" class="mycode_color">[i] = </span><span style="color: #d35400;" class="mycode_color">tail</span><span style="color: #4e5b61;" class="mycode_color">[i] &lt;&lt; </span><span style="color: #005c5f;" class="mycode_color">2</span><span style="color: #4e5b61;" class="mycode_color"> | </span><span style="color: #434f54;" class="mycode_color">((</span><span style="color: #d35400;" class="mycode_color">tail</span><span style="color: #4e5b61;" class="mycode_color">[i - </span><span style="color: #005c5f;" class="mycode_color">1</span><span style="color: #4e5b61;" class="mycode_color">] &gt;&gt; </span><span style="color: #005c5f;" class="mycode_color">6</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color"> &amp; </span><span style="color: #005c5f;" class="mycode_color">3</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">tail</span><span style="color: #4e5b61;" class="mycode_color">[</span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #4e5b61;" class="mycode_color">] = </span><span style="color: #d35400;" class="mycode_color">tail</span><span style="color: #4e5b61;" class="mycode_color">[</span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #4e5b61;" class="mycode_color">] &lt;&lt; </span><span style="color: #005c5f;" class="mycode_color">2</span><span style="color: #4e5b61;" class="mycode_color"> | </span><span style="color: #434f54;" class="mycode_color">((</span><span style="color: #4e5b61;" class="mycode_color">direction + </span><span style="color: #005c5f;" class="mycode_color">2</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color"> % </span><span style="color: #005c5f;" class="mycode_color">4</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    pos += </span><span style="color: #d35400;" class="mycode_color">kDirPos</span><span style="color: #4e5b61;" class="mycode_color">[direction];</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #728e00;" class="mycode_color">if</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">moved &lt; size</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">      moved++;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">render</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #00979d;" class="mycode_color">const</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">draw_square</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">pos</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #728e00;" class="mycode_color">if</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">moved &lt; size</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #728e00;" class="mycode_color">return</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">    Position tailpos = pos;</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #728e00;" class="mycode_color">for</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #00979d;" class="mycode_color">int</span><span style="color: #4e5b61;" class="mycode_color"> i = </span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #4e5b61;" class="mycode_color">; i &lt; size; ++i</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">      tailpos += </span><span style="color: #d35400;" class="mycode_color">kDirPos</span><span style="color: #4e5b61;" class="mycode_color">[</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">tail</span><span style="color: #4e5b61;" class="mycode_color">[</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">i &gt;&gt; </span><span style="color: #005c5f;" class="mycode_color">2</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">] &gt;&gt; </span><span style="color: #434f54;" class="mycode_color">((</span><span style="color: #4e5b61;" class="mycode_color">i &amp; </span><span style="color: #005c5f;" class="mycode_color">3</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color"> * </span><span style="color: #005c5f;" class="mycode_color">2</span><span style="color: #434f54;" class="mycode_color">))</span><span style="color: #4e5b61;" class="mycode_color"> &amp; </span><span style="color: #005c5f;" class="mycode_color">3</span><span style="color: #4e5b61;" class="mycode_color">];</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">draw_square</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">tailpos, BLACK</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><span style="color: #4e5b61;" class="mycode_color"> player;</span><br />
<br />
<span style="color: #00979d;" class="mycode_color">struct</span><span style="color: #4e5b61;" class="mycode_color"> Item </span><span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">  Position pos;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">spawn</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">pos</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">x</span><span style="color: #4e5b61;" class="mycode_color"> = </span><span style="color: #d35400;" class="mycode_color">random</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">1</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #005c5f;" class="mycode_color">63</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">pos</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">y</span><span style="color: #4e5b61;" class="mycode_color"> = </span><span style="color: #d35400;" class="mycode_color">random</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">1</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #005c5f;" class="mycode_color">31</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">render</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #00979d;" class="mycode_color">const</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">draw_square</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">pos</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><span style="color: #4e5b61;" class="mycode_color"> item;</span><br />
<br />
<br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">pushToStart</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">setCursor</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">26</span><span style="color: #4e5b61;" class="mycode_color">,</span><span style="color: #005c5f;" class="mycode_color">57</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">print</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">F</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">"Push to start"</span><span style="color: #434f54;" class="mycode_color">))</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">playIntro</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">clearDisplay</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">drawBitmap</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">18</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #4e5b61;" class="mycode_color">, kSplashScreen, </span><span style="color: #005c5f;" class="mycode_color">92</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #005c5f;" class="mycode_color">56</span><span style="color: #4e5b61;" class="mycode_color">, WHITE</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">pushToStart</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">playGameover</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">clearDisplay</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">drawBitmap</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">4</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #4e5b61;" class="mycode_color">, kGameOver, </span><span style="color: #005c5f;" class="mycode_color">124</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #005c5f;" class="mycode_color">38</span><span style="color: #4e5b61;" class="mycode_color">, WHITE</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #00979d;" class="mycode_color">int</span><span style="color: #4e5b61;" class="mycode_color"> score = </span><span style="color: #d35400;" class="mycode_color">player</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">size</span><span style="color: #4e5b61;" class="mycode_color"> - startLength;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">setCursor</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">26</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #005c5f;" class="mycode_color">34</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">print</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">F</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">"Score: "</span><span style="color: #434f54;" class="mycode_color">))</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">print</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">score</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #00979d;" class="mycode_color">int</span><span style="color: #4e5b61;" class="mycode_color"> hiscore;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">EEPROM</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">get</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #4e5b61;" class="mycode_color">, hiscore</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #728e00;" class="mycode_color">if</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">score &gt; hiscore</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">EEPROM</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">put</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #4e5b61;" class="mycode_color">, score</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    hiscore = score;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">setCursor</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">4</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #005c5f;" class="mycode_color">44</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">print</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">F</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">"NEW"</span><span style="color: #434f54;" class="mycode_color">))</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">setCursor</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">26</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #005c5f;" class="mycode_color">44</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">print</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">F</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">"Hi-Score: "</span><span style="color: #434f54;" class="mycode_color">))</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">print</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">hiscore</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">pushToStart</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">resetGame</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">clearDisplay</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #728e00;" class="mycode_color">for</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #00979d;" class="mycode_color">int</span><span style="color: #4e5b61;" class="mycode_color"> x = </span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #4e5b61;" class="mycode_color">; x &lt; gameWidth; ++x</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">draw_square</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">{x, </span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #4e5b61;" class="mycode_color">}</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">draw_square</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">{x, </span><span style="color: #005c5f;" class="mycode_color">31</span><span style="color: #4e5b61;" class="mycode_color">}</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #728e00;" class="mycode_color">for</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #00979d;" class="mycode_color">int</span><span style="color: #4e5b61;" class="mycode_color"> y = </span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #4e5b61;" class="mycode_color">; y &lt; gameHeight; ++y</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">draw_square</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">{</span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #4e5b61;" class="mycode_color">, y}</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">draw_square</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">{</span><span style="color: #005c5f;" class="mycode_color">63</span><span style="color: #4e5b61;" class="mycode_color">, y}</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">player</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">reset</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">item</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">spawn</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">updateGame</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">player</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">update</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #00979d;" class="mycode_color">bool</span> <span style="color: #d35400;" class="mycode_color">isGameOver</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">player</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">pos</span><span style="color: #4e5b61;" class="mycode_color"> == </span><span style="color: #d35400;" class="mycode_color">item</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">pos</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #728e00;" class="mycode_color">return</span> <span style="color: #005c5f;" class="mycode_color">false</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #728e00;" class="mycode_color">return</span> <span style="color: #d35400;" class="mycode_color">test_position</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">player</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">pos</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">input</span><span style="color: #434f54;" class="mycode_color">()</span> <br />
<span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #00979d;" class="mycode_color">int</span><span style="color: #4e5b61;" class="mycode_color"> x = </span><span style="color: #d35400;" class="mycode_color">analogRead</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">VRX</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #00979d;" class="mycode_color">int</span><span style="color: #4e5b61;" class="mycode_color"> y = </span><span style="color: #d35400;" class="mycode_color">analogRead</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">VRY</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">x &lt;= </span><span style="color: #005c5f;" class="mycode_color">100</span><span style="color: #4e5b61;" class="mycode_color"> - </span><span style="color: #005c5f;" class="mycode_color">50</span><span style="color: #434f54;" class="mycode_color">)</span> <br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">player</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">turn</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">TURN_DOWN</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span> <br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #728e00;" class="mycode_color">else</span> <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">x &gt;= </span><span style="color: #005c5f;" class="mycode_color">900</span><span style="color: #4e5b61;" class="mycode_color"> + </span><span style="color: #005c5f;" class="mycode_color">100</span><span style="color: #434f54;" class="mycode_color">)</span> <br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">player</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">turn</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">TURN_UP</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span> <br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #728e00;" class="mycode_color">else</span> <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">y &lt;= </span><span style="color: #005c5f;" class="mycode_color">100</span><span style="color: #4e5b61;" class="mycode_color"> - </span><span style="color: #005c5f;" class="mycode_color">50</span><span style="color: #434f54;" class="mycode_color">)</span> <br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">player</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">turn</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">TURN_LEFT</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span> <br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #728e00;" class="mycode_color">else</span> <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">y &gt;= </span><span style="color: #005c5f;" class="mycode_color">900</span><span style="color: #4e5b61;" class="mycode_color"> + </span><span style="color: #005c5f;" class="mycode_color">100</span><span style="color: #434f54;" class="mycode_color">)</span> <br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">player</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">turn</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">TURN_RIGHT</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">render</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">player</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">render</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">item</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">render</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">setup</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">pinMode</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">VRX, INPUT</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">pinMode</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">VRY, INPUT</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">pinMode</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">SW_PIN, INPUT</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">SW_PIN, HIGH</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">begin</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">SSD1306_SWITCHCAPVCC, 0x</span><span style="color: #005c5f;" class="mycode_color">3C</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">setRotation</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">2</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">setTextColor</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">WHITE</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;  </span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">loop</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">handelGameState</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">handelDisplayFlickring</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">handelGameState</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #728e00;" class="mycode_color">switch</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">gameState</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #728e00;" class="mycode_color">case</span><span style="color: #4e5b61;" class="mycode_color"> WELCOME_STATE:</span><br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #d35400;" class="mycode_color">playIntro</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">digitalRead</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">SW_PIN</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color"> == LOW</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">        isWantDisplayFlickeing = </span><span style="color: #005c5f;" class="mycode_color">true</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">        lastDisplayFlickering = </span><span style="color: #d35400;" class="mycode_color">millis</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">        </span><span style="color: #d35400;" class="mycode_color">resetGame</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">        gameState = GAMEPLAY_STATE;</span><br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #728e00;" class="mycode_color">break</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #728e00;" class="mycode_color">case</span><span style="color: #4e5b61;" class="mycode_color"> GAMEPLAY_STATE:</span><br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #d35400;" class="mycode_color">input</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #d35400;" class="mycode_color">player</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">update</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">player</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">pos</span><span style="color: #4e5b61;" class="mycode_color"> == </span><span style="color: #d35400;" class="mycode_color">item</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">pos</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">        </span><span style="color: #d35400;" class="mycode_color">player</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">size</span><span style="color: #4e5b61;" class="mycode_color">++;</span><br />
<span style="color: #4e5b61;" class="mycode_color">        </span><span style="color: #d35400;" class="mycode_color">item</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">spawn</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #434f54;" class="mycode_color">}</span> <span style="color: #728e00;" class="mycode_color">else</span> <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">isGameOver</span><span style="color: #434f54;" class="mycode_color">())</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">        gameState = GAMEOVER_STATE;</span><br />
<span style="color: #4e5b61;" class="mycode_color">        isWantDisplayFlickeing = </span><span style="color: #005c5f;" class="mycode_color">true</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">        lastDisplayFlickering = </span><span style="color: #d35400;" class="mycode_color">millis</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #d35400;" class="mycode_color">render</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #728e00;" class="mycode_color">break</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #728e00;" class="mycode_color">case</span><span style="color: #4e5b61;" class="mycode_color"> GAMEOVER_STATE:</span><br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #d35400;" class="mycode_color">playGameover</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">digitalRead</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">SW_PIN</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color"> == LOW</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">        isWantDisplayFlickeing = </span><span style="color: #005c5f;" class="mycode_color">true</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">        lastDisplayFlickering = </span><span style="color: #d35400;" class="mycode_color">millis</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">        </span><span style="color: #d35400;" class="mycode_color">resetGame</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">        gameState = GAMEPLAY_STATE;</span><br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #728e00;" class="mycode_color">break</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">handelDisplayFlickring</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">isWantDisplayFlickeing</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">millis</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color"> &lt;= lastDisplayFlickering + </span><span style="color: #005c5f;" class="mycode_color">50</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">invertDisplay</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">true</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #434f54;" class="mycode_color">}</span> <span style="color: #728e00;" class="mycode_color">else</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">invertDisplay</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">false</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
</span></span></span>]]></description>
			<content:encoded><![CDATA[witam<br />
mam problem z ekranem oled chcialem wgrac kod ale w pokazuje blad "Compilation error: bitmaps.h: No such file or directory" ktos wie jak to naprawic?<br />
kod:<br />
<span style="color: #4e5b61;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: Consolas,;" class="mycode_font"><span style="color: #728e00;" class="mycode_color">#include</span> <span style="color: #005c5f;" class="mycode_color">&lt;Wire.h&gt;</span><br />
<span style="color: #728e00;" class="mycode_color">#include</span> <span style="color: #005c5f;" class="mycode_color">&lt;Adafruit_SSD1306.h&gt;</span><br />
<span style="color: #728e00;" class="mycode_color">#include</span> <span style="color: #005c5f;" class="mycode_color">&lt;EEPROM.h&gt;</span><br />
<span style="color: #728e00;" class="mycode_color">#include</span> <span style="color: #005c5f;" class="mycode_color">"bitmaps.h"</span><br />
<span style="color: #728e00;" class="mycode_color">#include</span> <span style="color: #005c5f;" class="mycode_color">"pitches.h"</span><br />
<br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">TURN_UP</span> <span style="color: #005c5f;" class="mycode_color">0</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">TURN_RIGHT</span> <span style="color: #005c5f;" class="mycode_color">1</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">TURN_LEFT</span> <span style="color: #005c5f;" class="mycode_color">3</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">TURN_DOWN</span> <span style="color: #005c5f;" class="mycode_color">2</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">SW_PIN</span><span style="color: #4e5b61;" class="mycode_color"> A3</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">VRY</span><span style="color: #4e5b61;" class="mycode_color"> A6</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">VRX</span><span style="color: #4e5b61;" class="mycode_color"> A7</span><br />
<br />
<span style="color: #00979d;" class="mycode_color">const</span> <span style="color: #00979d;" class="mycode_color">int</span><span style="color: #4e5b61;" class="mycode_color"> screenWidth = </span><span style="color: #005c5f;" class="mycode_color">128</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #00979d;" class="mycode_color">const</span> <span style="color: #00979d;" class="mycode_color">int</span><span style="color: #4e5b61;" class="mycode_color"> screenHeight = </span><span style="color: #005c5f;" class="mycode_color">64</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #00979d;" class="mycode_color">const</span> <span style="color: #00979d;" class="mycode_color">int</span><span style="color: #4e5b61;" class="mycode_color"> gameWidth = </span><span style="color: #005c5f;" class="mycode_color">64</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #00979d;" class="mycode_color">const</span> <span style="color: #00979d;" class="mycode_color">int</span><span style="color: #4e5b61;" class="mycode_color"> gameHeight = </span><span style="color: #005c5f;" class="mycode_color">32</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #00979d;" class="mycode_color">const</span> <span style="color: #00979d;" class="mycode_color">int</span><span style="color: #4e5b61;" class="mycode_color"> maxLength = </span><span style="color: #005c5f;" class="mycode_color">464</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #00979d;" class="mycode_color">const</span> <span style="color: #00979d;" class="mycode_color">int</span><span style="color: #4e5b61;" class="mycode_color"> startLength = </span><span style="color: #005c5f;" class="mycode_color">6</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">Adafruit_SSD1306 </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">screenWidth, screenHeight, &amp;</span><span style="color: #434f54;" class="mycode_color">Wire</span><span style="color: #4e5b61;" class="mycode_color">, -</span><span style="color: #005c5f;" class="mycode_color">1</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<br />
<span style="color: #00979d;" class="mycode_color">enum</span><span style="color: #4e5b61;" class="mycode_color"> GameState </span><span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">WELCOME_STATE</span><span style="color: #4e5b61;" class="mycode_color">,</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">GAMEPLAY_STATE</span><span style="color: #4e5b61;" class="mycode_color">,</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">GAMEOVER_STATE</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<br />
<span style="color: #00979d;" class="mycode_color">int</span><span style="color: #4e5b61;" class="mycode_color"> gameState = WELCOME_STATE;</span><br />
<br />
<span style="color: #00979d;" class="mycode_color">bool</span><span style="color: #4e5b61;" class="mycode_color"> isWantDisplayFlickeing = </span><span style="color: #005c5f;" class="mycode_color">false</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #00979d;" class="mycode_color">unsigned</span> <span style="color: #00979d;" class="mycode_color">long</span><span style="color: #4e5b61;" class="mycode_color"> lastDisplayFlickering = </span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<br />
<br />
<br />
<span style="color: #00979d;" class="mycode_color">struct</span><span style="color: #4e5b61;" class="mycode_color"> Position </span><span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #00979d;" class="mycode_color">int</span><span style="color: #4e5b61;" class="mycode_color"> x, y;</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #00979d;" class="mycode_color">bool</span><span style="color: #4e5b61;" class="mycode_color"> operator==</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #00979d;" class="mycode_color">const</span><span style="color: #4e5b61;" class="mycode_color"> Position</span><span style="color: #00979d;" class="mycode_color">&amp;</span> <span style="color: #434f54;" class="mycode_color">other)</span> <span style="color: #00979d;" class="mycode_color">const</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #728e00;" class="mycode_color">return</span><span style="color: #4e5b61;" class="mycode_color"> x == </span><span style="color: #d35400;" class="mycode_color">other</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">x</span><span style="color: #4e5b61;" class="mycode_color"> &amp;&amp; y == </span><span style="color: #d35400;" class="mycode_color">other</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">y</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">  Position</span><span style="color: #00979d;" class="mycode_color">&amp;</span><span style="color: #4e5b61;" class="mycode_color"> operator+=</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #00979d;" class="mycode_color">const</span><span style="color: #4e5b61;" class="mycode_color"> Position</span><span style="color: #00979d;" class="mycode_color">&amp;</span> <span style="color: #434f54;" class="mycode_color">other)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">    x += </span><span style="color: #d35400;" class="mycode_color">other</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">x</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    y += </span><span style="color: #d35400;" class="mycode_color">other</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">y</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #728e00;" class="mycode_color">return</span><span style="color: #4e5b61;" class="mycode_color"> *</span><span style="color: #434f54;" class="mycode_color">this</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">draw_square</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">Position </span><span style="color: #434f54;" class="mycode_color">pos</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #00979d;" class="mycode_color">int</span> <span style="color: #434f54;" class="mycode_color">color</span><span style="color: #4e5b61;" class="mycode_color"> = WHITE</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">fillRect</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">pos</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">x</span><span style="color: #4e5b61;" class="mycode_color"> * </span><span style="color: #005c5f;" class="mycode_color">2</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #d35400;" class="mycode_color">pos</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">y</span><span style="color: #4e5b61;" class="mycode_color"> * </span><span style="color: #005c5f;" class="mycode_color">2</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #005c5f;" class="mycode_color">2</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #005c5f;" class="mycode_color">2</span><span style="color: #4e5b61;" class="mycode_color">, color</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #00979d;" class="mycode_color">bool</span> <span style="color: #d35400;" class="mycode_color">test_position</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">Position </span><span style="color: #434f54;" class="mycode_color">pos)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #728e00;" class="mycode_color">return</span> <span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">getPixel</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">pos</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">x</span><span style="color: #4e5b61;" class="mycode_color"> * </span><span style="color: #005c5f;" class="mycode_color">2</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #d35400;" class="mycode_color">pos</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">y</span><span style="color: #4e5b61;" class="mycode_color"> * </span><span style="color: #005c5f;" class="mycode_color">2</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #00979d;" class="mycode_color">const</span><span style="color: #4e5b61;" class="mycode_color"> Position </span><span style="color: #d35400;" class="mycode_color">kDirPos</span><span style="color: #4e5b61;" class="mycode_color">[</span><span style="color: #005c5f;" class="mycode_color">4</span><span style="color: #4e5b61;" class="mycode_color">] = </span><span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">{</span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #4e5b61;" class="mycode_color">,-</span><span style="color: #005c5f;" class="mycode_color">1</span><span style="color: #434f54;" class="mycode_color">}</span><span style="color: #4e5b61;" class="mycode_color">,</span><span style="color: #95a5a6;" class="mycode_color"> // Up</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">{</span><span style="color: #005c5f;" class="mycode_color">1</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #434f54;" class="mycode_color">}</span><span style="color: #4e5b61;" class="mycode_color">,</span><span style="color: #95a5a6;" class="mycode_color"> // Right</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">{</span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #005c5f;" class="mycode_color">1</span><span style="color: #434f54;" class="mycode_color">}</span><span style="color: #4e5b61;" class="mycode_color">,</span><span style="color: #95a5a6;" class="mycode_color">  // Down</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">{</span><span style="color: #4e5b61;" class="mycode_color">-</span><span style="color: #005c5f;" class="mycode_color">1</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #434f54;" class="mycode_color">}</span><span style="color: #95a5a6;" class="mycode_color"> // Left</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<br />
<span style="color: #00979d;" class="mycode_color">struct</span><span style="color: #4e5b61;" class="mycode_color"> Player </span><span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">Player</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #434f54;" class="mycode_color">{</span> <br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">reset</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">; </span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">  Position pos;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #00979d;" class="mycode_color">unsigned</span> <span style="color: #00979d;" class="mycode_color">char</span> <span style="color: #d35400;" class="mycode_color">tail</span><span style="color: #4e5b61;" class="mycode_color">[maxLength];</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #00979d;" class="mycode_color">unsigned</span> <span style="color: #00979d;" class="mycode_color">char</span><span style="color: #4e5b61;" class="mycode_color"> direction;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #00979d;" class="mycode_color">int</span><span style="color: #4e5b61;" class="mycode_color"> size, moved;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">reset</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">    pos = </span><span style="color: #434f54;" class="mycode_color">{</span><span style="color: #005c5f;" class="mycode_color">32</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #005c5f;" class="mycode_color">16</span><span style="color: #434f54;" class="mycode_color">}</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    direction = </span><span style="color: #005c5f;" class="mycode_color">1</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    size = startLength;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">memset</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">tail, </span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #4e5b61;" class="mycode_color">, sizeof</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">tail</span><span style="color: #434f54;" class="mycode_color">))</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    moved = </span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #00979d;" class="mycode_color">bool</span> <span style="color: #d35400;" class="mycode_color">isTurningDirIsVaild</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #00979d;" class="mycode_color">int</span> <span style="color: #434f54;" class="mycode_color">dir)</span> <span style="color: #434f54;" class="mycode_color">{</span> <br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">dir == TURN_LEFT &amp;&amp; direction == TURN_RIGHT</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #728e00;" class="mycode_color">return</span> <span style="color: #005c5f;" class="mycode_color">false</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #434f54;" class="mycode_color">}</span> <span style="color: #728e00;" class="mycode_color">else</span> <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">dir == TURN_RIGHT &amp;&amp; direction == TURN_LEFT</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #728e00;" class="mycode_color">return</span> <span style="color: #005c5f;" class="mycode_color">false</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #434f54;" class="mycode_color">}</span> <span style="color: #728e00;" class="mycode_color">else</span> <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">dir == TURN_DOWN &amp;&amp; direction == TURN_UP</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #728e00;" class="mycode_color">return</span> <span style="color: #005c5f;" class="mycode_color">false</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #434f54;" class="mycode_color">}</span> <span style="color: #728e00;" class="mycode_color">else</span> <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">dir == TURN_UP &amp;&amp; direction == TURN_DOWN</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #728e00;" class="mycode_color">return</span> <span style="color: #005c5f;" class="mycode_color">false</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #728e00;" class="mycode_color">return</span> <span style="color: #005c5f;" class="mycode_color">true</span><span style="color: #4e5b61;" class="mycode_color">; </span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">turn</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #00979d;" class="mycode_color">int</span> <span style="color: #434f54;" class="mycode_color">dir)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">!</span><span style="color: #d35400;" class="mycode_color">isTurningDirIsVaild</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">dir</span><span style="color: #434f54;" class="mycode_color">))</span> <span style="color: #728e00;" class="mycode_color">return</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">    direction = dir;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">update</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #728e00;" class="mycode_color">for</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #00979d;" class="mycode_color">int</span><span style="color: #4e5b61;" class="mycode_color"> i = maxLength - </span><span style="color: #005c5f;" class="mycode_color">1</span><span style="color: #4e5b61;" class="mycode_color">; i &gt; </span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #4e5b61;" class="mycode_color">; --i</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #d35400;" class="mycode_color">tail</span><span style="color: #4e5b61;" class="mycode_color">[i] = </span><span style="color: #d35400;" class="mycode_color">tail</span><span style="color: #4e5b61;" class="mycode_color">[i] &lt;&lt; </span><span style="color: #005c5f;" class="mycode_color">2</span><span style="color: #4e5b61;" class="mycode_color"> | </span><span style="color: #434f54;" class="mycode_color">((</span><span style="color: #d35400;" class="mycode_color">tail</span><span style="color: #4e5b61;" class="mycode_color">[i - </span><span style="color: #005c5f;" class="mycode_color">1</span><span style="color: #4e5b61;" class="mycode_color">] &gt;&gt; </span><span style="color: #005c5f;" class="mycode_color">6</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color"> &amp; </span><span style="color: #005c5f;" class="mycode_color">3</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">tail</span><span style="color: #4e5b61;" class="mycode_color">[</span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #4e5b61;" class="mycode_color">] = </span><span style="color: #d35400;" class="mycode_color">tail</span><span style="color: #4e5b61;" class="mycode_color">[</span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #4e5b61;" class="mycode_color">] &lt;&lt; </span><span style="color: #005c5f;" class="mycode_color">2</span><span style="color: #4e5b61;" class="mycode_color"> | </span><span style="color: #434f54;" class="mycode_color">((</span><span style="color: #4e5b61;" class="mycode_color">direction + </span><span style="color: #005c5f;" class="mycode_color">2</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color"> % </span><span style="color: #005c5f;" class="mycode_color">4</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    pos += </span><span style="color: #d35400;" class="mycode_color">kDirPos</span><span style="color: #4e5b61;" class="mycode_color">[direction];</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #728e00;" class="mycode_color">if</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">moved &lt; size</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">      moved++;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">render</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #00979d;" class="mycode_color">const</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">draw_square</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">pos</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #728e00;" class="mycode_color">if</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">moved &lt; size</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #728e00;" class="mycode_color">return</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">    Position tailpos = pos;</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #728e00;" class="mycode_color">for</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #00979d;" class="mycode_color">int</span><span style="color: #4e5b61;" class="mycode_color"> i = </span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #4e5b61;" class="mycode_color">; i &lt; size; ++i</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">      tailpos += </span><span style="color: #d35400;" class="mycode_color">kDirPos</span><span style="color: #4e5b61;" class="mycode_color">[</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">tail</span><span style="color: #4e5b61;" class="mycode_color">[</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">i &gt;&gt; </span><span style="color: #005c5f;" class="mycode_color">2</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">] &gt;&gt; </span><span style="color: #434f54;" class="mycode_color">((</span><span style="color: #4e5b61;" class="mycode_color">i &amp; </span><span style="color: #005c5f;" class="mycode_color">3</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color"> * </span><span style="color: #005c5f;" class="mycode_color">2</span><span style="color: #434f54;" class="mycode_color">))</span><span style="color: #4e5b61;" class="mycode_color"> &amp; </span><span style="color: #005c5f;" class="mycode_color">3</span><span style="color: #4e5b61;" class="mycode_color">];</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">draw_square</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">tailpos, BLACK</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><span style="color: #4e5b61;" class="mycode_color"> player;</span><br />
<br />
<span style="color: #00979d;" class="mycode_color">struct</span><span style="color: #4e5b61;" class="mycode_color"> Item </span><span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">  Position pos;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">spawn</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">pos</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">x</span><span style="color: #4e5b61;" class="mycode_color"> = </span><span style="color: #d35400;" class="mycode_color">random</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">1</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #005c5f;" class="mycode_color">63</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">pos</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">y</span><span style="color: #4e5b61;" class="mycode_color"> = </span><span style="color: #d35400;" class="mycode_color">random</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">1</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #005c5f;" class="mycode_color">31</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">render</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #00979d;" class="mycode_color">const</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">draw_square</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">pos</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><span style="color: #4e5b61;" class="mycode_color"> item;</span><br />
<br />
<br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">pushToStart</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">setCursor</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">26</span><span style="color: #4e5b61;" class="mycode_color">,</span><span style="color: #005c5f;" class="mycode_color">57</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">print</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">F</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">"Push to start"</span><span style="color: #434f54;" class="mycode_color">))</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">playIntro</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">clearDisplay</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">drawBitmap</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">18</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #4e5b61;" class="mycode_color">, kSplashScreen, </span><span style="color: #005c5f;" class="mycode_color">92</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #005c5f;" class="mycode_color">56</span><span style="color: #4e5b61;" class="mycode_color">, WHITE</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">pushToStart</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">playGameover</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">clearDisplay</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">drawBitmap</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">4</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #4e5b61;" class="mycode_color">, kGameOver, </span><span style="color: #005c5f;" class="mycode_color">124</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #005c5f;" class="mycode_color">38</span><span style="color: #4e5b61;" class="mycode_color">, WHITE</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #00979d;" class="mycode_color">int</span><span style="color: #4e5b61;" class="mycode_color"> score = </span><span style="color: #d35400;" class="mycode_color">player</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">size</span><span style="color: #4e5b61;" class="mycode_color"> - startLength;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">setCursor</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">26</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #005c5f;" class="mycode_color">34</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">print</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">F</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">"Score: "</span><span style="color: #434f54;" class="mycode_color">))</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">print</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">score</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #00979d;" class="mycode_color">int</span><span style="color: #4e5b61;" class="mycode_color"> hiscore;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">EEPROM</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">get</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #4e5b61;" class="mycode_color">, hiscore</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #728e00;" class="mycode_color">if</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">score &gt; hiscore</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">EEPROM</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">put</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #4e5b61;" class="mycode_color">, score</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    hiscore = score;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">setCursor</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">4</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #005c5f;" class="mycode_color">44</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">print</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">F</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">"NEW"</span><span style="color: #434f54;" class="mycode_color">))</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">setCursor</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">26</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #005c5f;" class="mycode_color">44</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">print</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">F</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">"Hi-Score: "</span><span style="color: #434f54;" class="mycode_color">))</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">print</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">hiscore</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">pushToStart</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">resetGame</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">clearDisplay</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #728e00;" class="mycode_color">for</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #00979d;" class="mycode_color">int</span><span style="color: #4e5b61;" class="mycode_color"> x = </span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #4e5b61;" class="mycode_color">; x &lt; gameWidth; ++x</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">draw_square</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">{x, </span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #4e5b61;" class="mycode_color">}</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">draw_square</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">{x, </span><span style="color: #005c5f;" class="mycode_color">31</span><span style="color: #4e5b61;" class="mycode_color">}</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #728e00;" class="mycode_color">for</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #00979d;" class="mycode_color">int</span><span style="color: #4e5b61;" class="mycode_color"> y = </span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #4e5b61;" class="mycode_color">; y &lt; gameHeight; ++y</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">draw_square</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">{</span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #4e5b61;" class="mycode_color">, y}</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">draw_square</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">{</span><span style="color: #005c5f;" class="mycode_color">63</span><span style="color: #4e5b61;" class="mycode_color">, y}</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">player</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">reset</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">item</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">spawn</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">updateGame</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">player</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">update</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #00979d;" class="mycode_color">bool</span> <span style="color: #d35400;" class="mycode_color">isGameOver</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">player</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">pos</span><span style="color: #4e5b61;" class="mycode_color"> == </span><span style="color: #d35400;" class="mycode_color">item</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">pos</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #728e00;" class="mycode_color">return</span> <span style="color: #005c5f;" class="mycode_color">false</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #728e00;" class="mycode_color">return</span> <span style="color: #d35400;" class="mycode_color">test_position</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">player</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">pos</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">input</span><span style="color: #434f54;" class="mycode_color">()</span> <br />
<span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #00979d;" class="mycode_color">int</span><span style="color: #4e5b61;" class="mycode_color"> x = </span><span style="color: #d35400;" class="mycode_color">analogRead</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">VRX</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #00979d;" class="mycode_color">int</span><span style="color: #4e5b61;" class="mycode_color"> y = </span><span style="color: #d35400;" class="mycode_color">analogRead</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">VRY</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">x &lt;= </span><span style="color: #005c5f;" class="mycode_color">100</span><span style="color: #4e5b61;" class="mycode_color"> - </span><span style="color: #005c5f;" class="mycode_color">50</span><span style="color: #434f54;" class="mycode_color">)</span> <br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">player</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">turn</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">TURN_DOWN</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span> <br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #728e00;" class="mycode_color">else</span> <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">x &gt;= </span><span style="color: #005c5f;" class="mycode_color">900</span><span style="color: #4e5b61;" class="mycode_color"> + </span><span style="color: #005c5f;" class="mycode_color">100</span><span style="color: #434f54;" class="mycode_color">)</span> <br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">player</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">turn</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">TURN_UP</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span> <br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #728e00;" class="mycode_color">else</span> <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">y &lt;= </span><span style="color: #005c5f;" class="mycode_color">100</span><span style="color: #4e5b61;" class="mycode_color"> - </span><span style="color: #005c5f;" class="mycode_color">50</span><span style="color: #434f54;" class="mycode_color">)</span> <br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">player</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">turn</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">TURN_LEFT</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span> <br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #728e00;" class="mycode_color">else</span> <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">y &gt;= </span><span style="color: #005c5f;" class="mycode_color">900</span><span style="color: #4e5b61;" class="mycode_color"> + </span><span style="color: #005c5f;" class="mycode_color">100</span><span style="color: #434f54;" class="mycode_color">)</span> <br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">player</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">turn</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">TURN_RIGHT</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">render</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">player</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">render</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">item</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">render</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">setup</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">pinMode</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">VRX, INPUT</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">pinMode</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">VRY, INPUT</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">pinMode</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">SW_PIN, INPUT</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">SW_PIN, HIGH</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">begin</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">SSD1306_SWITCHCAPVCC, 0x</span><span style="color: #005c5f;" class="mycode_color">3C</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">setRotation</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">2</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">setTextColor</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">WHITE</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;  </span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">loop</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">handelGameState</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">handelDisplayFlickring</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">handelGameState</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #728e00;" class="mycode_color">switch</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">gameState</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #728e00;" class="mycode_color">case</span><span style="color: #4e5b61;" class="mycode_color"> WELCOME_STATE:</span><br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #d35400;" class="mycode_color">playIntro</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">digitalRead</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">SW_PIN</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color"> == LOW</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">        isWantDisplayFlickeing = </span><span style="color: #005c5f;" class="mycode_color">true</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">        lastDisplayFlickering = </span><span style="color: #d35400;" class="mycode_color">millis</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">        </span><span style="color: #d35400;" class="mycode_color">resetGame</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">        gameState = GAMEPLAY_STATE;</span><br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #728e00;" class="mycode_color">break</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #728e00;" class="mycode_color">case</span><span style="color: #4e5b61;" class="mycode_color"> GAMEPLAY_STATE:</span><br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #d35400;" class="mycode_color">input</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #d35400;" class="mycode_color">player</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">update</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">player</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">pos</span><span style="color: #4e5b61;" class="mycode_color"> == </span><span style="color: #d35400;" class="mycode_color">item</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">pos</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">        </span><span style="color: #d35400;" class="mycode_color">player</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">size</span><span style="color: #4e5b61;" class="mycode_color">++;</span><br />
<span style="color: #4e5b61;" class="mycode_color">        </span><span style="color: #d35400;" class="mycode_color">item</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">spawn</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #434f54;" class="mycode_color">}</span> <span style="color: #728e00;" class="mycode_color">else</span> <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">isGameOver</span><span style="color: #434f54;" class="mycode_color">())</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">        gameState = GAMEOVER_STATE;</span><br />
<span style="color: #4e5b61;" class="mycode_color">        isWantDisplayFlickeing = </span><span style="color: #005c5f;" class="mycode_color">true</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">        lastDisplayFlickering = </span><span style="color: #d35400;" class="mycode_color">millis</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #d35400;" class="mycode_color">render</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #728e00;" class="mycode_color">break</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #728e00;" class="mycode_color">case</span><span style="color: #4e5b61;" class="mycode_color"> GAMEOVER_STATE:</span><br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #d35400;" class="mycode_color">playGameover</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">digitalRead</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">SW_PIN</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color"> == LOW</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">        isWantDisplayFlickeing = </span><span style="color: #005c5f;" class="mycode_color">true</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">        lastDisplayFlickering = </span><span style="color: #d35400;" class="mycode_color">millis</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">        </span><span style="color: #d35400;" class="mycode_color">resetGame</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">        gameState = GAMEPLAY_STATE;</span><br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #728e00;" class="mycode_color">break</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">handelDisplayFlickring</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">isWantDisplayFlickeing</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">millis</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color"> &lt;= lastDisplayFlickering + </span><span style="color: #005c5f;" class="mycode_color">50</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">invertDisplay</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">true</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #434f54;" class="mycode_color">}</span> <span style="color: #728e00;" class="mycode_color">else</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #d35400;" class="mycode_color">lcd</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">invertDisplay</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">false</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
</span></span></span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[potrzebna pomoc]]></title>
			<link>https://forum.arduinopolska.pl/watek-potrzebna-pomoc</link>
			<pubDate>Thu, 05 Mar 2026 11:49:31 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.arduinopolska.pl/member.php?action=profile&uid=37833">pkorkosz@op.pl</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.arduinopolska.pl/watek-potrzebna-pomoc</guid>
			<description><![CDATA[Witam. Robię sobie prędkościomierz do auta na esp32 w Arduino iDE. Potrzebuję pomocy by ktoś poprawił mój skrypt tak by prędkość była wyświetlana na środku ekranu oled 128x64 SSD1306. Poniżej skrypt który dostosowałem do swoich potrzeb ale wyśrodkowanie prędkości mnie przerasta. Proszę o weryfikację skryptu. Z góry dziękuję. Pozdrawiam.<br />
<br />
<span style="color: #4e5b61;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: Consolas,;" class="mycode_font"><span style="color: #728e00;" class="mycode_color">#include</span> <span style="color: #005c5f;" class="mycode_color">&lt;TinyGPSPlus.h&gt;</span><br />
<span style="color: #728e00;" class="mycode_color">#include</span> <span style="color: #005c5f;" class="mycode_color">&lt;Wire.h&gt;</span><span style="color: #4e5b61;" class="mycode_color">                    </span><span style="color: #95a5a6;" class="mycode_color">// I2C communication library</span><br />
<span style="color: #728e00;" class="mycode_color">#include</span> <span style="color: #005c5f;" class="mycode_color">&lt;Adafruit_GFX.h&gt;</span><span style="color: #4e5b61;" class="mycode_color">            </span><span style="color: #95a5a6;" class="mycode_color">// Graphics library for OLED</span><br />
<span style="color: #728e00;" class="mycode_color">#include</span> <span style="color: #005c5f;" class="mycode_color">&lt;Adafruit_SSD1306.h&gt;</span><span style="color: #4e5b61;" class="mycode_color">        </span><span style="color: #95a5a6;" class="mycode_color">// SSD1306 OLED display driver</span><br />
<br />
<span style="color: #95a5a6;" class="mycode_color">// OLED display dimensions (128x64 pixels standard)</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">SCREEN_WIDTH</span> <span style="color: #005c5f;" class="mycode_color">128</span><span style="color: #95a5a6;" class="mycode_color">    // OLED screen width in pixels</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">SCREEN_HEIGHT</span> <span style="color: #005c5f;" class="mycode_color">64</span><span style="color: #95a5a6;" class="mycode_color">    // OLED screen height in pixels</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">ADDRESS</span><span style="color: #4e5b61;" class="mycode_color"> 0x</span><span style="color: #005c5f;" class="mycode_color">3C</span><span style="color: #95a5a6;" class="mycode_color">        // Replace this with the I2C address of your OLED display</span><br />
<br />
<span style="color: #95a5a6;" class="mycode_color">// OLED reset pin configuration (-1 means use Arduino reset pin)</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">OLED_RESET</span><span style="color: #4e5b61;" class="mycode_color"> -</span><span style="color: #005c5f;" class="mycode_color">1</span><span style="color: #95a5a6;" class="mycode_color">                // No dedicated reset pin, share Arduino reset</span><br />
<br />
<span style="color: #95a5a6;" class="mycode_color">// Create OLED display object with specified dimensions, I2C interface, and reset pin</span><br />
<span style="color: #4e5b61;" class="mycode_color">Adafruit_SSD1306 </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">SCREEN_WIDTH, SCREEN_HEIGHT, &amp;</span><span style="color: #434f54;" class="mycode_color">Wire</span><span style="color: #4e5b61;" class="mycode_color">, OLED_RESET</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<br />
<span style="color: #95a5a6;" class="mycode_color">// Create GPS parser object</span><br />
<span style="color: #4e5b61;" class="mycode_color">TinyGPSPlus gps;</span><span style="color: #95a5a6;" class="mycode_color">                     // TinyGPSPlus object for NMEA sentence parsing</span><br />
<br />
<span style="color: #95a5a6;" class="mycode_color">// Define GPS serial port and pin assignments for ESP32 DEV KIT V1</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">gpsSerial</span><span style="color: #4e5b61;" class="mycode_color"> Serial2</span><span style="color: #95a5a6;" class="mycode_color">              // Use hardware Serial2 (UART2) for GPS</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">RX_PIN</span> <span style="color: #005c5f;" class="mycode_color">16</span><span style="color: #95a5a6;" class="mycode_color">                      // ESP32 RX2/GPIO16 (RX pin)  GPS TX</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">TX_PIN</span> <span style="color: #005c5f;" class="mycode_color">17</span><span style="color: #95a5a6;" class="mycode_color">                      // ESP32 TX2/GPIO17 (TX pin)  GPS RX (optional)</span><br />
<br />
<span style="color: #95a5a6;" class="mycode_color">// Setup function - runs once at startup</span><br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">setup</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #95a5a6;" class="mycode_color">  // Initialize GPS serial port on Serial2 with specified pins and GPS baud rate (9600)</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">gpsSerial</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">begin</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">9600</span><span style="color: #4e5b61;" class="mycode_color">, SERIAL_8N1, RX_PIN, TX_PIN</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><span style="color: #95a5a6;" class="mycode_color">  // 8 data bits, no parity, 1 stop bit</span><br />
<br />
<span style="color: #95a5a6;" class="mycode_color">  // Initialize OLED display with internal power supply and I2C address</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">!</span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">begin</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">SSD1306_SWITCHCAPVCC, ADDRESS</span><span style="color: #434f54;" class="mycode_color">))</span> <span style="color: #434f54;" class="mycode_color">{</span><span style="color: #95a5a6;" class="mycode_color">   // Try to start OLED at I2C address</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">Serial</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">println</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">F</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">"SSD1306 allocation failed"</span><span style="color: #434f54;" class="mycode_color">))</span><span style="color: #4e5b61;" class="mycode_color">;</span><span style="color: #95a5a6;" class="mycode_color">      // Print error if OLED fails</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #728e00;" class="mycode_color">for</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">;;</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><span style="color: #95a5a6;" class="mycode_color">                                            // Infinite loop if OLED fails</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #95a5a6;" class="mycode_color">  // Clear OLED display buffer</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">clearDisplay</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<br />
<span style="color: #95a5a6;" class="mycode_color">  // Configure OLED text rendering settings</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">setTextSize</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">1</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><span style="color: #95a5a6;" class="mycode_color">               // Set text size to 1 (smallest)</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">setTextColor</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">SSD1306_WHITE</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><span style="color: #95a5a6;" class="mycode_color">  // Set text color to white</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">setCursor</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><span style="color: #95a5a6;" class="mycode_color">              // Set text cursor to top-left corner (x=0, y=0)</span><br />
<br />
<span style="color: #95a5a6;" class="mycode_color">  // Display startup message on OLED</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">println</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">"Waiting for GPS..."</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><span style="color: #95a5a6;" class="mycode_color">                    // Update OLED with buffer contents</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #95a5a6;" class="mycode_color">// Main loop - runs continuously</span><br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">loop</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #95a5a6;" class="mycode_color">  // Read all available GPS data from serial port</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #728e00;" class="mycode_color">while</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">gpsSerial</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">available</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color"> &gt; </span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #95a5a6;" class="mycode_color">    // Read one byte from GPS serial port</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">gps</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">encode</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">gpsSerial</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">read</span><span style="color: #434f54;" class="mycode_color">()))</span> <span style="color: #434f54;" class="mycode_color">{</span><span style="color: #95a5a6;" class="mycode_color">     // Parse NMEA sentence, returns true if valid</span><br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #d35400;" class="mycode_color">displayLocationInfo</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><span style="color: #95a5a6;" class="mycode_color">                // Update display with GPS data when valid fix</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #95a5a6;" class="mycode_color">  // Check if 5 seconds passed with no GPS data (less than 10 chars processed)</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">millis</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color"> &gt; </span><span style="color: #005c5f;" class="mycode_color">5000</span><span style="color: #4e5b61;" class="mycode_color"> &amp;&amp; </span><span style="color: #d35400;" class="mycode_color">gps</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">charsProcessed</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color"> &lt; </span><span style="color: #005c5f;" class="mycode_color">10</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">clearDisplay</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><span style="color: #95a5a6;" class="mycode_color">                 // Clear OLED buffer</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">setCursor</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><span style="color: #95a5a6;" class="mycode_color">                // Reset cursor to top-left</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">println</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">"No GPS detected!"</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><span style="color: #95a5a6;" class="mycode_color">    // Show error message</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><span style="color: #95a5a6;" class="mycode_color">                      // Update OLED display</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #728e00;" class="mycode_color">while</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">true</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><span style="color: #95a5a6;" class="mycode_color">                           // Stop program execution</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #95a5a6;" class="mycode_color">// Function to display GPS location information on OLED</span><br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">displayLocationInfo</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">clearDisplay</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><span style="color: #95a5a6;" class="mycode_color">                   // Clear previous display content</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">setCursor</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">35</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #005c5f;" class="mycode_color">4</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">setTextSize</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">1</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">print</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">"FIAT PUNTO"</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">setCursor</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">21</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #005c5f;" class="mycode_color">16</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">setTextSize</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">5</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">print</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">gps</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">speed</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">kmph</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">setCursor</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">3</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #005c5f;" class="mycode_color">56</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">setTextSize</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">1</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">print</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">"Speed           km/h"</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">delay</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">1500</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">clearDisplay</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #434f54;" class="mycode_color">}</span></span></span></span>]]></description>
			<content:encoded><![CDATA[Witam. Robię sobie prędkościomierz do auta na esp32 w Arduino iDE. Potrzebuję pomocy by ktoś poprawił mój skrypt tak by prędkość była wyświetlana na środku ekranu oled 128x64 SSD1306. Poniżej skrypt który dostosowałem do swoich potrzeb ale wyśrodkowanie prędkości mnie przerasta. Proszę o weryfikację skryptu. Z góry dziękuję. Pozdrawiam.<br />
<br />
<span style="color: #4e5b61;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: Consolas,;" class="mycode_font"><span style="color: #728e00;" class="mycode_color">#include</span> <span style="color: #005c5f;" class="mycode_color">&lt;TinyGPSPlus.h&gt;</span><br />
<span style="color: #728e00;" class="mycode_color">#include</span> <span style="color: #005c5f;" class="mycode_color">&lt;Wire.h&gt;</span><span style="color: #4e5b61;" class="mycode_color">                    </span><span style="color: #95a5a6;" class="mycode_color">// I2C communication library</span><br />
<span style="color: #728e00;" class="mycode_color">#include</span> <span style="color: #005c5f;" class="mycode_color">&lt;Adafruit_GFX.h&gt;</span><span style="color: #4e5b61;" class="mycode_color">            </span><span style="color: #95a5a6;" class="mycode_color">// Graphics library for OLED</span><br />
<span style="color: #728e00;" class="mycode_color">#include</span> <span style="color: #005c5f;" class="mycode_color">&lt;Adafruit_SSD1306.h&gt;</span><span style="color: #4e5b61;" class="mycode_color">        </span><span style="color: #95a5a6;" class="mycode_color">// SSD1306 OLED display driver</span><br />
<br />
<span style="color: #95a5a6;" class="mycode_color">// OLED display dimensions (128x64 pixels standard)</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">SCREEN_WIDTH</span> <span style="color: #005c5f;" class="mycode_color">128</span><span style="color: #95a5a6;" class="mycode_color">    // OLED screen width in pixels</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">SCREEN_HEIGHT</span> <span style="color: #005c5f;" class="mycode_color">64</span><span style="color: #95a5a6;" class="mycode_color">    // OLED screen height in pixels</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">ADDRESS</span><span style="color: #4e5b61;" class="mycode_color"> 0x</span><span style="color: #005c5f;" class="mycode_color">3C</span><span style="color: #95a5a6;" class="mycode_color">        // Replace this with the I2C address of your OLED display</span><br />
<br />
<span style="color: #95a5a6;" class="mycode_color">// OLED reset pin configuration (-1 means use Arduino reset pin)</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">OLED_RESET</span><span style="color: #4e5b61;" class="mycode_color"> -</span><span style="color: #005c5f;" class="mycode_color">1</span><span style="color: #95a5a6;" class="mycode_color">                // No dedicated reset pin, share Arduino reset</span><br />
<br />
<span style="color: #95a5a6;" class="mycode_color">// Create OLED display object with specified dimensions, I2C interface, and reset pin</span><br />
<span style="color: #4e5b61;" class="mycode_color">Adafruit_SSD1306 </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">SCREEN_WIDTH, SCREEN_HEIGHT, &amp;</span><span style="color: #434f54;" class="mycode_color">Wire</span><span style="color: #4e5b61;" class="mycode_color">, OLED_RESET</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<br />
<span style="color: #95a5a6;" class="mycode_color">// Create GPS parser object</span><br />
<span style="color: #4e5b61;" class="mycode_color">TinyGPSPlus gps;</span><span style="color: #95a5a6;" class="mycode_color">                     // TinyGPSPlus object for NMEA sentence parsing</span><br />
<br />
<span style="color: #95a5a6;" class="mycode_color">// Define GPS serial port and pin assignments for ESP32 DEV KIT V1</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">gpsSerial</span><span style="color: #4e5b61;" class="mycode_color"> Serial2</span><span style="color: #95a5a6;" class="mycode_color">              // Use hardware Serial2 (UART2) for GPS</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">RX_PIN</span> <span style="color: #005c5f;" class="mycode_color">16</span><span style="color: #95a5a6;" class="mycode_color">                      // ESP32 RX2/GPIO16 (RX pin)  GPS TX</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">TX_PIN</span> <span style="color: #005c5f;" class="mycode_color">17</span><span style="color: #95a5a6;" class="mycode_color">                      // ESP32 TX2/GPIO17 (TX pin)  GPS RX (optional)</span><br />
<br />
<span style="color: #95a5a6;" class="mycode_color">// Setup function - runs once at startup</span><br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">setup</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #95a5a6;" class="mycode_color">  // Initialize GPS serial port on Serial2 with specified pins and GPS baud rate (9600)</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">gpsSerial</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">begin</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">9600</span><span style="color: #4e5b61;" class="mycode_color">, SERIAL_8N1, RX_PIN, TX_PIN</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><span style="color: #95a5a6;" class="mycode_color">  // 8 data bits, no parity, 1 stop bit</span><br />
<br />
<span style="color: #95a5a6;" class="mycode_color">  // Initialize OLED display with internal power supply and I2C address</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">!</span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">begin</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">SSD1306_SWITCHCAPVCC, ADDRESS</span><span style="color: #434f54;" class="mycode_color">))</span> <span style="color: #434f54;" class="mycode_color">{</span><span style="color: #95a5a6;" class="mycode_color">   // Try to start OLED at I2C address</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">Serial</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">println</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">F</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">"SSD1306 allocation failed"</span><span style="color: #434f54;" class="mycode_color">))</span><span style="color: #4e5b61;" class="mycode_color">;</span><span style="color: #95a5a6;" class="mycode_color">      // Print error if OLED fails</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #728e00;" class="mycode_color">for</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">;;</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><span style="color: #95a5a6;" class="mycode_color">                                            // Infinite loop if OLED fails</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #95a5a6;" class="mycode_color">  // Clear OLED display buffer</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">clearDisplay</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<br />
<span style="color: #95a5a6;" class="mycode_color">  // Configure OLED text rendering settings</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">setTextSize</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">1</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><span style="color: #95a5a6;" class="mycode_color">               // Set text size to 1 (smallest)</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">setTextColor</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #4e5b61;" class="mycode_color">SSD1306_WHITE</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><span style="color: #95a5a6;" class="mycode_color">  // Set text color to white</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">setCursor</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><span style="color: #95a5a6;" class="mycode_color">              // Set text cursor to top-left corner (x=0, y=0)</span><br />
<br />
<span style="color: #95a5a6;" class="mycode_color">  // Display startup message on OLED</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">println</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">"Waiting for GPS..."</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><span style="color: #95a5a6;" class="mycode_color">                    // Update OLED with buffer contents</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #95a5a6;" class="mycode_color">// Main loop - runs continuously</span><br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">loop</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #95a5a6;" class="mycode_color">  // Read all available GPS data from serial port</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #728e00;" class="mycode_color">while</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">gpsSerial</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">available</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color"> &gt; </span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #95a5a6;" class="mycode_color">    // Read one byte from GPS serial port</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">gps</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">encode</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">gpsSerial</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">read</span><span style="color: #434f54;" class="mycode_color">()))</span> <span style="color: #434f54;" class="mycode_color">{</span><span style="color: #95a5a6;" class="mycode_color">     // Parse NMEA sentence, returns true if valid</span><br />
<span style="color: #4e5b61;" class="mycode_color">      </span><span style="color: #d35400;" class="mycode_color">displayLocationInfo</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><span style="color: #95a5a6;" class="mycode_color">                // Update display with GPS data when valid fix</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #95a5a6;" class="mycode_color">  // Check if 5 seconds passed with no GPS data (less than 10 chars processed)</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">millis</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color"> &gt; </span><span style="color: #005c5f;" class="mycode_color">5000</span><span style="color: #4e5b61;" class="mycode_color"> &amp;&amp; </span><span style="color: #d35400;" class="mycode_color">gps</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">charsProcessed</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color"> &lt; </span><span style="color: #005c5f;" class="mycode_color">10</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">clearDisplay</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><span style="color: #95a5a6;" class="mycode_color">                 // Clear OLED buffer</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">setCursor</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><span style="color: #95a5a6;" class="mycode_color">                // Reset cursor to top-left</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">println</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">"No GPS detected!"</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><span style="color: #95a5a6;" class="mycode_color">    // Show error message</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><span style="color: #95a5a6;" class="mycode_color">                      // Update OLED display</span><br />
<span style="color: #4e5b61;" class="mycode_color">    </span><span style="color: #728e00;" class="mycode_color">while</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">true</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><span style="color: #95a5a6;" class="mycode_color">                           // Stop program execution</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<br />
<span style="color: #95a5a6;" class="mycode_color">// Function to display GPS location information on OLED</span><br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">displayLocationInfo</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">clearDisplay</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><span style="color: #95a5a6;" class="mycode_color">                   // Clear previous display content</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">setCursor</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">35</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #005c5f;" class="mycode_color">4</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">setTextSize</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">1</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">print</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">"FIAT PUNTO"</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">setCursor</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">21</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #005c5f;" class="mycode_color">16</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">setTextSize</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">5</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">print</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">gps</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">speed</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">kmph</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">setCursor</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">3</span><span style="color: #4e5b61;" class="mycode_color">, </span><span style="color: #005c5f;" class="mycode_color">56</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">setTextSize</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">1</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">print</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">"Speed           km/h"</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">delay</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">1500</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #4e5b61;" class="mycode_color">  </span><span style="color: #d35400;" class="mycode_color">display</span><span style="color: #4e5b61;" class="mycode_color">.</span><span style="color: #d35400;" class="mycode_color">clearDisplay</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #4e5b61;" class="mycode_color">;</span><br />
<span style="color: #434f54;" class="mycode_color">}</span></span></span></span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Moduł audio]]></title>
			<link>https://forum.arduinopolska.pl/watek-modu%C5%82-audio</link>
			<pubDate>Tue, 03 Mar 2026 15:10:04 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.arduinopolska.pl/member.php?action=profile&uid=37820">Stefan_N</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.arduinopolska.pl/watek-modu%C5%82-audio</guid>
			<description><![CDATA[Cześć,<br />
<br />
opracowałem moduł obsługujący odtwarzanie i nagrywanie plików audio (m.in. mp3). Moduł pracuje na VS1063. Pliki są pobierane i zapisywane na pendrive poprzez układ CH376. Oba układy są sterowane za pomocą ATMegi328. Mam zmontowane i oprogramowane kilka takich układów, ale na płytkach prototypowych. Szukam kogoś, kto opracowałby i wykonał do tego płytkę drukowaną.]]></description>
			<content:encoded><![CDATA[Cześć,<br />
<br />
opracowałem moduł obsługujący odtwarzanie i nagrywanie plików audio (m.in. mp3). Moduł pracuje na VS1063. Pliki są pobierane i zapisywane na pendrive poprzez układ CH376. Oba układy są sterowane za pomocą ATMegi328. Mam zmontowane i oprogramowane kilka takich układów, ale na płytkach prototypowych. Szukam kogoś, kto opracowałby i wykonał do tego płytkę drukowaną.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[różnica między kontrolerami UNO a UNO R4]]></title>
			<link>https://forum.arduinopolska.pl/watek-r%C3%B3%C5%BCnica-mi%C4%99dzy-kontrolerami-uno-a-uno-r4</link>
			<pubDate>Mon, 02 Mar 2026 13:32:11 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.arduinopolska.pl/member.php?action=profile&uid=37811">Go John Deer</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.arduinopolska.pl/watek-r%C3%B3%C5%BCnica-mi%C4%99dzy-kontrolerami-uno-a-uno-r4</guid>
			<description><![CDATA[Witam, posiadam zwykły kontroler Arduino UNO a prosty program mam napisany na Arduino R4 MINIMA, czy mogę podmienić płytki zmieniając oczywiście treść kodu, czym ogólnie różnią się płytki od siebie, obstawiam że prędkościami pracy na pewno i możliwością przyłączania podzespołów, ale czymś jeszcze?]]></description>
			<content:encoded><![CDATA[Witam, posiadam zwykły kontroler Arduino UNO a prosty program mam napisany na Arduino R4 MINIMA, czy mogę podmienić płytki zmieniając oczywiście treść kodu, czym ogólnie różnią się płytki od siebie, obstawiam że prędkościami pracy na pewno i możliwością przyłączania podzespołów, ale czymś jeszcze?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[witam]]></title>
			<link>https://forum.arduinopolska.pl/watek-witam--5099</link>
			<pubDate>Mon, 02 Mar 2026 13:23:13 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.arduinopolska.pl/member.php?action=profile&uid=37811">Go John Deer</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.arduinopolska.pl/watek-witam--5099</guid>
			<description><![CDATA[nie znam się, chce się nauczyć.]]></description>
			<content:encoded><![CDATA[nie znam się, chce się nauczyć.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Esp32s3 i xbox controller]]></title>
			<link>https://forum.arduinopolska.pl/watek-esp32s3-i-xbox-controller</link>
			<pubDate>Tue, 24 Feb 2026 10:41:45 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.arduinopolska.pl/member.php?action=profile&uid=37758">Przemek 4x4</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.arduinopolska.pl/watek-esp32s3-i-xbox-controller</guid>
			<description><![CDATA[Witam. Potrzebuję pomocy w ogarnięciu tematu sterowania kontrolerem xbox poprzez esp32s3 6-ciu esc poprzez PWM. Zastosowałem bibliotekę bluepad32 oraz Servo. Z połączeniem się kontrolerem z ESP nie mam problemu. Łączy się przez bluetooth. Nie potrafię wysterowac osobno wszystkich 6-ciu wyjść. Chciał bym aby lewy drążek w górę sterował 4 i 5 wyjściem. Drążek w lewo wyjście 4. Drążek w prawo wyjście 5. Drążek w dół wyjście 6 i 7. R2 wyjście 15. L2 wyjście 16. Załączam program:<br />
<br />
#<span style="color: #000000;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: sans-serif;" class="mycode_font">include &lt;Bluepad32.h&gt;<br />
#include &lt;ESP32Servo.h&gt;</span></span></span><br />
<span style="color: #000000;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: sans-serif;" class="mycode_font">// Definicja pinów dla ESC (ESP32-S3 GPIO)<br />
#define ESC1_PIN 4<br />
#define ESC2_PIN 5<br />
#define ESC3_PIN 6<br />
#define ESC4_PIN 7<br />
#define ESC5_PIN 15 // R2<br />
#define ESC6_PIN 16 // L2</span></span></span><br />
<span style="color: #000000;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: sans-serif;" class="mycode_font">Servo esc1, esc2, esc3, esc4, esc5, esc6;<br />
ControllerPtr myControllers[BP32_MAX_GAMEPADS];</span></span></span><br />
<span style="color: #000000;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: sans-serif;" class="mycode_font">void setup() {<br />
    Serial.begin(115200);<br />
   <br />
    // Inicjalizacja i Uzbrajanie ESC (Arming)<br />
    esc1.attach(ESC1_PIN, 1000, 2000);<br />
    esc2.attach(ESC2_PIN, 1000, 2000);<br />
    esc3.attach(ESC3_PIN, 1000, 2000);<br />
    esc4.attach(ESC4_PIN, 1000, 2000);<br />
    esc5.attach(ESC5_PIN, 1000, 2000);<br />
    esc6.attach(ESC6_PIN, 1000, 2000);</span></span></span><br />
<span style="color: #000000;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: sans-serif;" class="mycode_font">    Serial.println("Uzbrajanie ESC... Czekaj 2s");<br />
    armESC();</span></span></span><br />
<span style="color: #000000;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: sans-serif;" class="mycode_font">    // Konfiguracja Bluepad32<br />
    BP32.setup(&amp;onConnectedController, &amp;onDisconnectedController);<br />
}</span></span></span><br />
<span style="color: #000000;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: sans-serif;" class="mycode_font">void armESC() {<br />
    esc1.writeMicroseconds(1000);<br />
    esc2.writeMicroseconds(1000);<br />
    esc3.writeMicroseconds(1000);<br />
    esc4.writeMicroseconds(1000);<br />
    esc5.writeMicroseconds(1000);<br />
    esc6.writeMicroseconds(1000);<br />
    delay(2000); // Czas na inicjalizację kontrolera ESC<br />
    Serial.println("Gotowy!");<br />
}</span></span></span><br />
<span style="color: #000000;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: sans-serif;" class="mycode_font">void processGamepad(ControllerPtr ctl) {<br />
    // Odczyt drążków (-511 do 512) i triggerów (0 do 1023)<br />
    int lx = ctl-&gt;axisX();<br />
    int ly = ctl-&gt;axisY();<br />
    int r2 = ctl-&gt;throttle(); // R2/RT<br />
    int l2 = ctl-&gt;brake();    // L2/LT</span></span></span><br />
<span style="color: #000000;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: sans-serif;" class="mycode_font">    // Mapowanie 1-4 (Drążek Lewy)<br />
    // Bluepad32: góra/lewo to wartości ujemne<br />
    int speed = map(max(abs(lx), abs(ly)), 0, 512, 1000, 2000);</span></span></span><br />
<span style="color: #000000;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: sans-serif;" class="mycode_font">    // ESC 1: Lewo + Góra<br />
    esc1.writeMicroseconds((lx &lt; -100 &amp;&amp; ly &lt; -100) ? speed : 1000);<br />
    // ESC 2: Prawo + Góra (Poprawka: W opisie było 2x lewo+góra, przyjąłem logiczny rozkład)<br />
    esc2.writeMicroseconds((lx &gt; 100 &amp;&amp; ly &lt; -100) ? speed : 1000);<br />
    // ESC 3: Lewo + Dół<br />
    esc3.writeMicroseconds((lx &lt; -100 &amp;&amp; ly &gt; 100) ? speed : 1000);<br />
    // ESC 4: Prawo + Dół<br />
    esc4.writeMicroseconds((lx &gt; 100 &amp;&amp; ly &gt; 100) ? speed : 1000);</span></span></span><br />
<span style="color: #000000;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: sans-serif;" class="mycode_font">    // ESC 5 i 6 (Triggery)<br />
    esc5.writeMicroseconds(map(r2, 0, 1023, 1000, 2000));<br />
    esc6.writeMicroseconds(map(l2, 0, 1023, 1000, 2000));<br />
}</span></span></span><br />
<span style="color: #000000;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: sans-serif;" class="mycode_font">// Obsługa połączenia (naprawia brak reakcji)<br />
void onConnectedController(ControllerPtr ctl) {<br />
    bool foundEmptySlot = false;<br />
    for (int i = 0; i &lt; BP32_MAX_GAMEPADS; i++) {<br />
        if (myControllers[i] == nullptr) {<br />
            myControllers[i] = ctl;<br />
            foundEmptySlot = true;<br />
            Serial.println("Kontroler Xbox podłączony!");<br />
            break;<br />
        }<br />
    }<br />
}</span></span></span><br />
<span style="color: #000000;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: sans-serif;" class="mycode_font">void onDisconnectedController(ControllerPtr ctl) {<br />
    for (int i = 0; i &lt; BP32_MAX_GAMEPADS; i++) {<br />
        if (myControllers[i] == ctl) {<br />
            myControllers[i] = nullptr;<br />
            Serial.println("Kontroler odłączony!");<br />
            break;<br />
        }<br />
    }<br />
}</span></span></span><br />
<span style="color: #000000;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: sans-serif;" class="mycode_font">void loop() {<br />
    BP32.update();<br />
    for (int i = 0; i &lt; BP32_MAX_GAMEPADS; i++) {<br />
        ControllerPtr myController = myControllers[i];<br />
        if (myController &amp;&amp; myController-&gt;isConnected()) {<br />
            processGamepad(myController);<br />
        }<br />
    }<br />
    delay(10);<br />
}</span></span></span><br />
<br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: sans-serif;" class="mycode_font">Program się kompiluje w wgrywa. Tylko nie wiem czemu działa poprawnie tylko Drążek góra oraz lewo prawo i to na wszystkich 6-ciu wyjściach parami. To jest 4,6,15 razem i 5,7,16 też razem. Proszę o pomoc. Pozdrawiam. </span></span></span>]]></description>
			<content:encoded><![CDATA[Witam. Potrzebuję pomocy w ogarnięciu tematu sterowania kontrolerem xbox poprzez esp32s3 6-ciu esc poprzez PWM. Zastosowałem bibliotekę bluepad32 oraz Servo. Z połączeniem się kontrolerem z ESP nie mam problemu. Łączy się przez bluetooth. Nie potrafię wysterowac osobno wszystkich 6-ciu wyjść. Chciał bym aby lewy drążek w górę sterował 4 i 5 wyjściem. Drążek w lewo wyjście 4. Drążek w prawo wyjście 5. Drążek w dół wyjście 6 i 7. R2 wyjście 15. L2 wyjście 16. Załączam program:<br />
<br />
#<span style="color: #000000;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: sans-serif;" class="mycode_font">include &lt;Bluepad32.h&gt;<br />
#include &lt;ESP32Servo.h&gt;</span></span></span><br />
<span style="color: #000000;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: sans-serif;" class="mycode_font">// Definicja pinów dla ESC (ESP32-S3 GPIO)<br />
#define ESC1_PIN 4<br />
#define ESC2_PIN 5<br />
#define ESC3_PIN 6<br />
#define ESC4_PIN 7<br />
#define ESC5_PIN 15 // R2<br />
#define ESC6_PIN 16 // L2</span></span></span><br />
<span style="color: #000000;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: sans-serif;" class="mycode_font">Servo esc1, esc2, esc3, esc4, esc5, esc6;<br />
ControllerPtr myControllers[BP32_MAX_GAMEPADS];</span></span></span><br />
<span style="color: #000000;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: sans-serif;" class="mycode_font">void setup() {<br />
    Serial.begin(115200);<br />
   <br />
    // Inicjalizacja i Uzbrajanie ESC (Arming)<br />
    esc1.attach(ESC1_PIN, 1000, 2000);<br />
    esc2.attach(ESC2_PIN, 1000, 2000);<br />
    esc3.attach(ESC3_PIN, 1000, 2000);<br />
    esc4.attach(ESC4_PIN, 1000, 2000);<br />
    esc5.attach(ESC5_PIN, 1000, 2000);<br />
    esc6.attach(ESC6_PIN, 1000, 2000);</span></span></span><br />
<span style="color: #000000;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: sans-serif;" class="mycode_font">    Serial.println("Uzbrajanie ESC... Czekaj 2s");<br />
    armESC();</span></span></span><br />
<span style="color: #000000;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: sans-serif;" class="mycode_font">    // Konfiguracja Bluepad32<br />
    BP32.setup(&amp;onConnectedController, &amp;onDisconnectedController);<br />
}</span></span></span><br />
<span style="color: #000000;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: sans-serif;" class="mycode_font">void armESC() {<br />
    esc1.writeMicroseconds(1000);<br />
    esc2.writeMicroseconds(1000);<br />
    esc3.writeMicroseconds(1000);<br />
    esc4.writeMicroseconds(1000);<br />
    esc5.writeMicroseconds(1000);<br />
    esc6.writeMicroseconds(1000);<br />
    delay(2000); // Czas na inicjalizację kontrolera ESC<br />
    Serial.println("Gotowy!");<br />
}</span></span></span><br />
<span style="color: #000000;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: sans-serif;" class="mycode_font">void processGamepad(ControllerPtr ctl) {<br />
    // Odczyt drążków (-511 do 512) i triggerów (0 do 1023)<br />
    int lx = ctl-&gt;axisX();<br />
    int ly = ctl-&gt;axisY();<br />
    int r2 = ctl-&gt;throttle(); // R2/RT<br />
    int l2 = ctl-&gt;brake();    // L2/LT</span></span></span><br />
<span style="color: #000000;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: sans-serif;" class="mycode_font">    // Mapowanie 1-4 (Drążek Lewy)<br />
    // Bluepad32: góra/lewo to wartości ujemne<br />
    int speed = map(max(abs(lx), abs(ly)), 0, 512, 1000, 2000);</span></span></span><br />
<span style="color: #000000;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: sans-serif;" class="mycode_font">    // ESC 1: Lewo + Góra<br />
    esc1.writeMicroseconds((lx &lt; -100 &amp;&amp; ly &lt; -100) ? speed : 1000);<br />
    // ESC 2: Prawo + Góra (Poprawka: W opisie było 2x lewo+góra, przyjąłem logiczny rozkład)<br />
    esc2.writeMicroseconds((lx &gt; 100 &amp;&amp; ly &lt; -100) ? speed : 1000);<br />
    // ESC 3: Lewo + Dół<br />
    esc3.writeMicroseconds((lx &lt; -100 &amp;&amp; ly &gt; 100) ? speed : 1000);<br />
    // ESC 4: Prawo + Dół<br />
    esc4.writeMicroseconds((lx &gt; 100 &amp;&amp; ly &gt; 100) ? speed : 1000);</span></span></span><br />
<span style="color: #000000;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: sans-serif;" class="mycode_font">    // ESC 5 i 6 (Triggery)<br />
    esc5.writeMicroseconds(map(r2, 0, 1023, 1000, 2000));<br />
    esc6.writeMicroseconds(map(l2, 0, 1023, 1000, 2000));<br />
}</span></span></span><br />
<span style="color: #000000;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: sans-serif;" class="mycode_font">// Obsługa połączenia (naprawia brak reakcji)<br />
void onConnectedController(ControllerPtr ctl) {<br />
    bool foundEmptySlot = false;<br />
    for (int i = 0; i &lt; BP32_MAX_GAMEPADS; i++) {<br />
        if (myControllers[i] == nullptr) {<br />
            myControllers[i] = ctl;<br />
            foundEmptySlot = true;<br />
            Serial.println("Kontroler Xbox podłączony!");<br />
            break;<br />
        }<br />
    }<br />
}</span></span></span><br />
<span style="color: #000000;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: sans-serif;" class="mycode_font">void onDisconnectedController(ControllerPtr ctl) {<br />
    for (int i = 0; i &lt; BP32_MAX_GAMEPADS; i++) {<br />
        if (myControllers[i] == ctl) {<br />
            myControllers[i] = nullptr;<br />
            Serial.println("Kontroler odłączony!");<br />
            break;<br />
        }<br />
    }<br />
}</span></span></span><br />
<span style="color: #000000;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: sans-serif;" class="mycode_font">void loop() {<br />
    BP32.update();<br />
    for (int i = 0; i &lt; BP32_MAX_GAMEPADS; i++) {<br />
        ControllerPtr myController = myControllers[i];<br />
        if (myController &amp;&amp; myController-&gt;isConnected()) {<br />
            processGamepad(myController);<br />
        }<br />
    }<br />
    delay(10);<br />
}</span></span></span><br />
<br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: sans-serif;" class="mycode_font">Program się kompiluje w wgrywa. Tylko nie wiem czemu działa poprawnie tylko Drążek góra oraz lewo prawo i to na wszystkich 6-ciu wyjściach parami. To jest 4,6,15 razem i 5,7,16 też razem. Proszę o pomoc. Pozdrawiam. </span></span></span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Witam wszystkich użytkowników]]></title>
			<link>https://forum.arduinopolska.pl/watek-witam-wszystkich-u%C5%BCytkownik%C3%B3w</link>
			<pubDate>Tue, 24 Feb 2026 10:08:21 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.arduinopolska.pl/member.php?action=profile&uid=37758">Przemek 4x4</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.arduinopolska.pl/watek-witam-wszystkich-u%C5%BCytkownik%C3%B3w</guid>
			<description><![CDATA[Witam i pozdrawiam całe forum. Dopiero się uczę arduino.]]></description>
			<content:encoded><![CDATA[Witam i pozdrawiam całe forum. Dopiero się uczę arduino.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Pomoc przy prostym projekcie]]></title>
			<link>https://forum.arduinopolska.pl/watek-pomoc-przy-prostym-projekcie</link>
			<pubDate>Fri, 20 Feb 2026 09:40:57 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.arduinopolska.pl/member.php?action=profile&uid=37685">Pomiform</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.arduinopolska.pl/watek-pomoc-przy-prostym-projekcie</guid>
			<description><![CDATA[<a href="https://imgbox.com/xMGNjACu" target="_blank" rel="noopener" class="mycode_url"><img src="https://images2.imgbox.com/b8/0b/xMGNjACu_o.png" alt="[Obrazek: xMGNjACu_o.png]" class="mycode_img" /></a><br />
<br />
Witam wszystkich, uczę się arduino od podstaw i mam problem, który wydaje mi się dość podstawowy. Próbuję zrealizować projekt, w którym kontroluje się kąt mikro serwomechanizmu za pomocą potencjometru. Zdjęcie pokazuje obwód, który wykonałem w programie TinkerCad i tam działał, ale kiedy sam zbudowałem obwód, serwomechanizm nie podążał za kątem potencjometru, tylko obracał się w sposób ciągły, a potencjometr kontrolował prędkość obrotową.<br />
<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>#include &lt;Servo.h&gt;<br />
Servo Servo1;<br />
<br />
<br />
int servoPin = 9;<br />
int potPin = A0;<br />
void setup()<br />
{<br />
  Servo1.attach(servoPin);<br />
}<br />
<br />
<br />
void loop() {<br />
  int reading = analogRead(potPin);<br />
  int angle = map(reading, 0,1023,0,180);<br />
 &nbsp;&nbsp;<br />
  Servo1.write(angle);<br />
 &nbsp;&nbsp;<br />
    }</code></div></div><br />
<br />
Używam mikro serwomechanizmu SG90.<br />
Co robię nie tak?<br />
Z góry dziękuję za pomoc.]]></description>
			<content:encoded><![CDATA[<a href="https://imgbox.com/xMGNjACu" target="_blank" rel="noopener" class="mycode_url"><img src="https://images2.imgbox.com/b8/0b/xMGNjACu_o.png" alt="[Obrazek: xMGNjACu_o.png]" class="mycode_img" /></a><br />
<br />
Witam wszystkich, uczę się arduino od podstaw i mam problem, który wydaje mi się dość podstawowy. Próbuję zrealizować projekt, w którym kontroluje się kąt mikro serwomechanizmu za pomocą potencjometru. Zdjęcie pokazuje obwód, który wykonałem w programie TinkerCad i tam działał, ale kiedy sam zbudowałem obwód, serwomechanizm nie podążał za kątem potencjometru, tylko obracał się w sposób ciągły, a potencjometr kontrolował prędkość obrotową.<br />
<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>#include &lt;Servo.h&gt;<br />
Servo Servo1;<br />
<br />
<br />
int servoPin = 9;<br />
int potPin = A0;<br />
void setup()<br />
{<br />
  Servo1.attach(servoPin);<br />
}<br />
<br />
<br />
void loop() {<br />
  int reading = analogRead(potPin);<br />
  int angle = map(reading, 0,1023,0,180);<br />
 &nbsp;&nbsp;<br />
  Servo1.write(angle);<br />
 &nbsp;&nbsp;<br />
    }</code></div></div><br />
<br />
Używam mikro serwomechanizmu SG90.<br />
Co robię nie tak?<br />
Z góry dziękuję za pomoc.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[ESP32-S3]]></title>
			<link>https://forum.arduinopolska.pl/watek-esp32-s3</link>
			<pubDate>Fri, 13 Feb 2026 09:32:49 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.arduinopolska.pl/member.php?action=profile&uid=37370">ImmigFub</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.arduinopolska.pl/watek-esp32-s3</guid>
			<description><![CDATA[Jestem początkującym użytkownikiem. Używałem kilku różnych modułów ESP32-S3 z ESPHOME w Home Assistant. Używałem również Thonny do flashowania Raspberry Pi Pico.<br />
Teraz chciałem po prostu wypróbować czujniki w Arduino...<br />
Spędziłem już 3 godziny na pobieraniu i instalowaniu różnych sterowników/zasobów, aby Arduino IDE rozpoznało mój ESP32-S3. Jak dotąd bezskutecznie. Jak to możliwe, że tak prosty proces flashowania arduino stanowi tak trudną przeszkodę do pokonania?]]></description>
			<content:encoded><![CDATA[Jestem początkującym użytkownikiem. Używałem kilku różnych modułów ESP32-S3 z ESPHOME w Home Assistant. Używałem również Thonny do flashowania Raspberry Pi Pico.<br />
Teraz chciałem po prostu wypróbować czujniki w Arduino...<br />
Spędziłem już 3 godziny na pobieraniu i instalowaniu różnych sterowników/zasobów, aby Arduino IDE rozpoznało mój ESP32-S3. Jak dotąd bezskutecznie. Jak to możliwe, że tak prosty proces flashowania arduino stanowi tak trudną przeszkodę do pokonania?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[666]]></title>
			<link>https://forum.arduinopolska.pl/watek-666</link>
			<pubDate>Wed, 11 Feb 2026 12:40:59 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.arduinopolska.pl/member.php?action=profile&uid=37661">kokoszka</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.arduinopolska.pl/watek-666</guid>
			<description><![CDATA[<iframe width="560" height="315" src="//www.youtube.com/embed/gwUHTg_VgA0" frameborder="0" allowfullscreen></iframe>]]></description>
			<content:encoded><![CDATA[<iframe width="560" height="315" src="//www.youtube.com/embed/gwUHTg_VgA0" frameborder="0" allowfullscreen></iframe>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[ZOBACZ ZANIM ZROBISZ TATUAŻ]]></title>
			<link>https://forum.arduinopolska.pl/watek-zobacz-zanim-zrobisz-tatua%C5%BC</link>
			<pubDate>Wed, 11 Feb 2026 12:37:38 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.arduinopolska.pl/member.php?action=profile&uid=37661">kokoszka</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.arduinopolska.pl/watek-zobacz-zanim-zrobisz-tatua%C5%BC</guid>
			<description><![CDATA[<iframe width="560" height="315" src="//www.youtube.com/embed/nXNdkgNrXfE" frameborder="0" allowfullscreen></iframe>]]></description>
			<content:encoded><![CDATA[<iframe width="560" height="315" src="//www.youtube.com/embed/nXNdkgNrXfE" frameborder="0" allowfullscreen></iframe>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Sterowanie RC]]></title>
			<link>https://forum.arduinopolska.pl/watek-sterowanie-rc</link>
			<pubDate>Mon, 09 Feb 2026 19:52:51 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.arduinopolska.pl/member.php?action=profile&uid=37638">tomaszostry</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.arduinopolska.pl/watek-sterowanie-rc</guid>
			<description><![CDATA[Cześć<br />
<br />
Od kilku miesięcy uczę się programować.<br />
Powoli robię coraz bardziej skomplikowane kody.<br />
Zaczynałem od świecącej diody, potem przycisk, miganie, dwie diody oddzielnie, buzzer.<br />
Jakiś czas temu syn kupił sobie auto zdalnie sterowane. Bez bajerów. Pomyślałem, że zrobię kod do sterowania oświetleniem i buzzerem.<br />
Na razie dla jednego kanału wszystko działa, ale jak próbuje dwa kody połączyć w jeden by na jednym kanałem włączyć diodę a drugim wlaczyć buzzer to nie mogę tego ogarnać.<br />
Osobno na oddzielnych kodach wszystko działa poprawnie.<br />
Kod poniżej:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>const int pinRC5 = 5; &nbsp;&nbsp;// Kanał 5<br />
const int pinRC6 = 6; &nbsp;&nbsp;// Kanał 6<br />
const int led1 = 8;<br />
const int led2 = 9;<br />
const int buzzerPin = 12; &nbsp;&nbsp;// Pin buzzera<br />
const int buttonPin = 2;   &nbsp;&nbsp;// pin przycisku – nie używany - testowy<br />
int buttonState = 0;       &nbsp;&nbsp;// zmienna do odczytu stanu przycisku - testowy<br />
<br />
unsigned long czas4, czas5, czas6;<br />
unsigned long previousMillis = 0;<br />
const unsigned long interval = 40; // czas między zmianami stanu diody<br />
<br />
int stepCounter = 0; // krok sekwencji<br />
bool ledState = false;<br />
<br />
// Parametry syreny<br />
unsigned long lastToneChange = 0;<br />
unsigned long toneInterval &nbsp;&nbsp;= 5; // co ile ms zmieniać częstotliwość<br />
int toneFreq = 400;                // aktualna częstotliwość<br />
int toneStep = 15;                  // krok zmiany częstotliwości<br />
int minFreq  = 400;               &nbsp;&nbsp;// dolny zakres<br />
int maxFreq  = 1000;                // górny zakres<br />
bool freqUp  = true;               &nbsp;&nbsp;// kierunek zmiany częstotliwości<br />
<br />
void setup() {<br />
  pinMode(led1, OUTPUT);<br />
  pinMode(led2, OUTPUT);<br />
  pinMode(pinRC5, INPUT);<br />
  pinMode(pinRC6, INPUT);<br />
  pinMode(buzzerPin, OUTPUT);<br />
  pinMode(buttonPin, INPUT_PULLUP);<br />
  Serial.begin(9600);<br />
<br />
}<br />
<br />
void loop()<br />
{<br />
czas5 = pulseIn(pinRC5, HIGH, 25000);<br />
czas6 = pulseIn(pinRC6, HIGH, 25000);<br />
unsigned long currentMillis = millis();<br />
buttonState = digitalRead(buttonPin); // testowy<br />
<br />
if (czas5 &gt; 1700)<br />
  {<br />
    if (currentMillis - previousMillis &gt;= interval)<br />
    {<br />
    previousMillis = currentMillis;<br />
<br />
    switch (stepCounter)<br />
      {<br />
      case 0: case 2: // dioda 1 miga dwa razy<br />
        ledState = !ledState;<br />
        digitalWrite(led1, ledState);<br />
        if (!ledState) stepCounter++;<br />
        break;<br />
<br />
      case 4: case 6: // dioda 2 miga dwa razy<br />
        ledState = !ledState;<br />
        digitalWrite(led2, ledState);<br />
        if (!ledState) stepCounter++;<br />
        break;<br />
<br />
      default:<br />
        stepCounter++;<br />
        if (stepCounter &gt; 7) stepCounter = 0; // restart sekwencji<br />
        break;<br />
      }<br />
    }<br />
else {digitalWrite(led1, LOW);<br />
      digitalWrite(led2, LOW);<br />
      }<br />
  }<br />
<br />
if (czas6 &gt; 1700)<br />
  {  if (currentMillis - lastToneChange &gt;= toneInterval) {<br />
    lastToneChange = currentMillis;<br />
<br />
    // Zmiana częstotliwości w górę/dół<br />
    if (freqUp) {<br />
      toneFreq += toneStep;<br />
      if (toneFreq &gt;= maxFreq) freqUp = false;<br />
    } else {<br />
      toneFreq -= toneStep;<br />
      if (toneFreq &lt;= minFreq) freqUp = true;<br />
    }<br />
    // Generowanie tonu<br />
    tone(buzzerPin, toneFreq);<br />
  }<br />
  }<br />
else {noTone(buzzerPin);}<br />
}</code></div></div>Co poprawić by dwa kanały działały niezależnie?<br />
Potem będę próbował dodać kolejne.<br />
Serwo i ślinik steruje bezpośrednio z odbiornika 8 kanałowego nie będę przepuszczał przez zestaw Arduino.]]></description>
			<content:encoded><![CDATA[Cześć<br />
<br />
Od kilku miesięcy uczę się programować.<br />
Powoli robię coraz bardziej skomplikowane kody.<br />
Zaczynałem od świecącej diody, potem przycisk, miganie, dwie diody oddzielnie, buzzer.<br />
Jakiś czas temu syn kupił sobie auto zdalnie sterowane. Bez bajerów. Pomyślałem, że zrobię kod do sterowania oświetleniem i buzzerem.<br />
Na razie dla jednego kanału wszystko działa, ale jak próbuje dwa kody połączyć w jeden by na jednym kanałem włączyć diodę a drugim wlaczyć buzzer to nie mogę tego ogarnać.<br />
Osobno na oddzielnych kodach wszystko działa poprawnie.<br />
Kod poniżej:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>const int pinRC5 = 5; &nbsp;&nbsp;// Kanał 5<br />
const int pinRC6 = 6; &nbsp;&nbsp;// Kanał 6<br />
const int led1 = 8;<br />
const int led2 = 9;<br />
const int buzzerPin = 12; &nbsp;&nbsp;// Pin buzzera<br />
const int buttonPin = 2;   &nbsp;&nbsp;// pin przycisku – nie używany - testowy<br />
int buttonState = 0;       &nbsp;&nbsp;// zmienna do odczytu stanu przycisku - testowy<br />
<br />
unsigned long czas4, czas5, czas6;<br />
unsigned long previousMillis = 0;<br />
const unsigned long interval = 40; // czas między zmianami stanu diody<br />
<br />
int stepCounter = 0; // krok sekwencji<br />
bool ledState = false;<br />
<br />
// Parametry syreny<br />
unsigned long lastToneChange = 0;<br />
unsigned long toneInterval &nbsp;&nbsp;= 5; // co ile ms zmieniać częstotliwość<br />
int toneFreq = 400;                // aktualna częstotliwość<br />
int toneStep = 15;                  // krok zmiany częstotliwości<br />
int minFreq  = 400;               &nbsp;&nbsp;// dolny zakres<br />
int maxFreq  = 1000;                // górny zakres<br />
bool freqUp  = true;               &nbsp;&nbsp;// kierunek zmiany częstotliwości<br />
<br />
void setup() {<br />
  pinMode(led1, OUTPUT);<br />
  pinMode(led2, OUTPUT);<br />
  pinMode(pinRC5, INPUT);<br />
  pinMode(pinRC6, INPUT);<br />
  pinMode(buzzerPin, OUTPUT);<br />
  pinMode(buttonPin, INPUT_PULLUP);<br />
  Serial.begin(9600);<br />
<br />
}<br />
<br />
void loop()<br />
{<br />
czas5 = pulseIn(pinRC5, HIGH, 25000);<br />
czas6 = pulseIn(pinRC6, HIGH, 25000);<br />
unsigned long currentMillis = millis();<br />
buttonState = digitalRead(buttonPin); // testowy<br />
<br />
if (czas5 &gt; 1700)<br />
  {<br />
    if (currentMillis - previousMillis &gt;= interval)<br />
    {<br />
    previousMillis = currentMillis;<br />
<br />
    switch (stepCounter)<br />
      {<br />
      case 0: case 2: // dioda 1 miga dwa razy<br />
        ledState = !ledState;<br />
        digitalWrite(led1, ledState);<br />
        if (!ledState) stepCounter++;<br />
        break;<br />
<br />
      case 4: case 6: // dioda 2 miga dwa razy<br />
        ledState = !ledState;<br />
        digitalWrite(led2, ledState);<br />
        if (!ledState) stepCounter++;<br />
        break;<br />
<br />
      default:<br />
        stepCounter++;<br />
        if (stepCounter &gt; 7) stepCounter = 0; // restart sekwencji<br />
        break;<br />
      }<br />
    }<br />
else {digitalWrite(led1, LOW);<br />
      digitalWrite(led2, LOW);<br />
      }<br />
  }<br />
<br />
if (czas6 &gt; 1700)<br />
  {  if (currentMillis - lastToneChange &gt;= toneInterval) {<br />
    lastToneChange = currentMillis;<br />
<br />
    // Zmiana częstotliwości w górę/dół<br />
    if (freqUp) {<br />
      toneFreq += toneStep;<br />
      if (toneFreq &gt;= maxFreq) freqUp = false;<br />
    } else {<br />
      toneFreq -= toneStep;<br />
      if (toneFreq &lt;= minFreq) freqUp = true;<br />
    }<br />
    // Generowanie tonu<br />
    tone(buzzerPin, toneFreq);<br />
  }<br />
  }<br />
else {noTone(buzzerPin);}<br />
}</code></div></div>Co poprawić by dwa kanały działały niezależnie?<br />
Potem będę próbował dodać kolejne.<br />
Serwo i ślinik steruje bezpośrednio z odbiornika 8 kanałowego nie będę przepuszczał przez zestaw Arduino.]]></content:encoded>
		</item>
	</channel>
</rss>