<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=4&amp;t=23630&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2021-02-25T23:26:54+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=23630&amp;mode</id>
<entry>
<author><name><![CDATA[Morales]]></name></author>
<updated>2021-02-25T23:26:54+01:00</updated>
<published>2021-02-25T23:26:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23630&amp;p=231214#p231214</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23630&amp;p=231214#p231214"/>
<title type="html"><![CDATA[Re: SSD1306 OLED - Przesuwanie się bitmap.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23630&amp;p=231214#p231214"><![CDATA[
To był dobry strzał! Bufor się wysyła, ale pixel nadal się przesuwa. Dodatkowo na ekranie pojawiły się 3 dziwne pixele, nie określone przeze mnie w buforze. Pojawiają się i od razu znikają. Wychodzi na to, że problem musi być w tych 3 funkcjach... <br /><br />[syntax=c]mk_ssd1306_cmd(SSD1306_SETLOWCOLUMN);<br />mk_ssd1306_cmd(SSD1306_SETHIGHCOLUMN);<br />mk_ssd1306_cmd(SSD1306_SETSTARTLINE);[/syntax]<br /><br />EDIT : Wychodzi na to, że problem został zażegnany... Te 3 komendy co wymieniłem powyżej okazały się niepotrzebne. Nawet jak użyłem dokładnych komend, które wykorzystuje Adafruit w swojej bibliotece to problem nadal występował. Ostatecznie spróbowałem wgrać kod, beż nich i sukces! Bitmapy zmieniam przy pomocy przycisku i nic się nie przesuwa! Bardzo dziękuję za pomoc użytkownikowi xentis. Fajnie mnie nakierowałeś... Wychodziłem z założenia, ze display() jest poprawnie napisana i szukałem w dwóch pozostałych funkcjach. Dzięki!<br /><br />Poprawna funkcja: <br />[syntax=c]void mk_ssd1306_display() { // Wysłanie bufora z pamięci RAM do SSD1306<br /><br />#if USE_CS == 1<br />CS_HI;<br />#endif<br />DC_HI;<br />#if USE_CS == 1<br />CS_LOW;<br />#endif<br /><br />for (uint16_t i = 0; i &lt; BUF_SIZE; i++) {<br />SendSpi(ssd1306_buf&#91;i&#93;);<br />}<br /><br />#if USE_CS == 1<br />CS_HI;<br />#endif<br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=21510">Morales</a> — 25 lut 2021, o 23:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xentis]]></name></author>
<updated>2021-02-25T21:47:31+01:00</updated>
<published>2021-02-25T21:47:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23630&amp;p=231213#p231213</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23630&amp;p=231213#p231213"/>
<title type="html"><![CDATA[Re: SSD1306 OLED - Przesuwanie się bitmap.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23630&amp;p=231213#p231213"><![CDATA[
Ok, to może inaczej, oprócz funkcji o których wspomniałeś, za to co się wyświetla na ekranie odpowiedzialna jest również ta do wysyłania bufora czyli mk_ssd1306_display().<br />Ja bym zrobił to tak:<br />w buforze umieściłbym 1 piksel, po czym samej zawartości bufora bym już nie ruszał, a cyklicznie co np 1 sekundę wysyłałbym bufor do wyświetlacza (ewentualnie można by tu podpiąć migniecie jakąś diodą przy każdej wysyłce by ewentualnie dla oka wiedzieć kiedy jest wysyłka) jeśli piksel będzie nieruchomy to wiemy że funkcja wysyłająca bufor jest ok, i można szukać dalej...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6265">xentis</a> — 25 lut 2021, o 21:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Morales]]></name></author>
<updated>2021-02-25T21:38:50+01:00</updated>
<published>2021-02-25T21:38:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23630&amp;p=231212#p231212</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23630&amp;p=231212#p231212"/>
<title type="html"><![CDATA[Re: SSD1306 OLED - Przesuwanie się bitmap.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23630&amp;p=231212#p231212"><![CDATA[
Poprawiłem tę linijkę i kompletnie nic to nie zmieniło... Próbowałem również funkcji z najnowszej wersji Adafruit bo tam odrobinę się one różnią i również nie pomogło...<br />Myślałem również, że może mam za dużo zajętej pamięci RAM i że do wartości tych współrzędnych trafiają śmieci, ale mam zajęte 54% RAM, więc jeszcze mam trochę zapasu oraz bitmapy i narysowane linie, zawsze przesuwają się o taką samą wartość, więc to nie mogą być śmieci...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=21510">Morales</a> — 25 lut 2021, o 21:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xentis]]></name></author>
<updated>2021-02-25T21:23:05+01:00</updated>
<published>2021-02-25T21:23:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23630&amp;p=231211#p231211</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23630&amp;p=231211#p231211"/>
<title type="html"><![CDATA[Re: SSD1306 OLED - Przesuwanie się bitmap.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23630&amp;p=231211#p231211"><![CDATA[
W drugim listingu kodu z pierwszego posta (nazwanego &quot;Funkcję do obsługi wyświetlacza:&quot;) w linijce 143 powinno być CS_LOW, nie wiem czy to to jest problemem, ale dziwne że wogule cokolwiek się wyświetla na wyświetlaczu bo w takim wypadku przed wysyłką bufora wyświetlacz nie jest aktywowany do komunikacji...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6265">xentis</a> — 25 lut 2021, o 21:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Morales]]></name></author>
<updated>2021-02-25T18:15:36+01:00</updated>
<published>2021-02-25T18:15:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23630&amp;p=231208#p231208</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23630&amp;p=231208#p231208"/>
<title type="html"><![CDATA[Re: SSD1306 OLED - Przesuwanie się bitmap.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23630&amp;p=231208#p231208"><![CDATA[
Sprawdziłem to w taki sposób. Teoretycznie linia powinna się cały czas rysować na tej samej wysokości Y, jednak tak nie jest. Zrobiłem dwa zdjęcia. Na wyświetlaczu ta linia cały czas się rysuje, jednak jej współrzędne startowe przesuwają się o daną odległość... Dodatkowo pojawiła się jakaś dziwna kropka, która również przesuwa się wraz z linią... Ja już nie rozumiem w czym jest problem... Aktualnie zająłem się programowanie RTC, bo tutaj nie umiem znaleźć rozwiązania.<br /><br />[syntax=c]for(uint8_t i = 0; i &lt; 128; i++) {<br />mk_ssd1306_setPixel(i, 23, 1);<br />}<br />mk_ssd1306_display();<br />mk_ssd1306_clearDisplay();[/syntax]<br /><br />[syntax=c]void mk_ssd1306_setPixel(int x, int y, uint8_t bw) {<br />if ((x &lt; 0) || (x &gt;= SSD1306_WIDTH) || (y &lt; 0) || (y &gt;= SSD1306_HEIGHT))<br />return;<br /><br />if (bw)<br />ssd1306_buf&#91;x + (y / 8) * SSD1306_WIDTH&#93; |= (1 &lt;&lt; (y % 8)); // zapal pixel<br />else<br />ssd1306_buf&#91;x + (y / 8) * SSD1306_WIDTH&#93; &amp;= ~(1 &lt;&lt; (y % 8)); // zgas pixel<br /><br />}[/syntax]<br /><br /><a href="https://obrazkiforum.atnel.pl/21510/b7afe0a7227e736eb621ababd9ae8cc6.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/21510/b7afe0a7227e736eb621ababd9ae8cc6.jpg" alt="Obrazek" /></a><a href="https://obrazkiforum.atnel.pl/21510/07cb338a718270acc2091338e8759895.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/21510/07cb338a718270acc2091338e8759895.jpg" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=21510">Morales</a> — 25 lut 2021, o 18:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xentis]]></name></author>
<updated>2021-02-24T17:38:55+01:00</updated>
<published>2021-02-24T17:38:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23630&amp;p=231195#p231195</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23630&amp;p=231195#p231195"/>
<title type="html"><![CDATA[Re: SSD1306 OLED - Przesuwanie się bitmap.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23630&amp;p=231195#p231195"><![CDATA[
<div class="quotetitle">Morales napisał(a):</div><div class="quotecontent"><br />Problem musi tkwić albo w funkcji mk_ssd1306_drawBitmap_P albo mk_ssd1306_setPixel<br /></div>No to nie &quot;albo&quot; tylko sprawdź to na żywym organizmie. Zamiast bitmapy wysyłaj jeden piksel i będziesz widział czy też się przesuwa...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6265">xentis</a> — 24 lut 2021, o 17:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Morales]]></name></author>
<updated>2021-02-23T23:19:07+01:00</updated>
<published>2021-02-23T23:19:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23630&amp;p=231194#p231194</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23630&amp;p=231194#p231194"/>
<title type="html"><![CDATA[Re: SSD1306 OLED - Przesuwanie się bitmap.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23630&amp;p=231194#p231194"><![CDATA[
Próbowałem już wcześniej zmienić typy zmiennych int na uint16_t, jednak żadnego efektu to nie przeniosło... Problem musi tkwić albo w funkcji mk_ssd1306_drawBitmap_P albo mk_ssd1306_setPixel. Ewidentnie wywołanie bitmapy powoduje przesunięcie się jakby punktu początkowego całego obrazu w prawą stronę. Tak przesunięty obraz &quot;wychodzi&quot; z drugiej strony i przesuwa logo... Analizowałem obie te funkcję i naprawdę nie widzę tam błędu. W filmach Pana Mirka takie rozwiązanie działało... Dodam, że używam wyświetlacza z pinami D/C, CS, REST<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=21510">Morales</a> — 23 lut 2021, o 23:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Draxter32]]></name></author>
<updated>2021-02-23T23:00:12+01:00</updated>
<published>2021-02-23T23:00:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23630&amp;p=231193#p231193</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23630&amp;p=231193#p231193"/>
<title type="html"><![CDATA[Re: SSD1306 OLED - Przesuwanie się bitmap.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23630&amp;p=231193#p231193"><![CDATA[
Nie wiem jakiego kompilatora używasz i jakiej architektury ale może spróbuj zmienić typ zmiennej z <strong>int </strong>na przynajmniej <strong>uint8_t </strong>lub <strong>uint16_t</strong>. Być może dochodzi do overflow jeśli użyty int faktycznie posiada przedział wartości <em>&lt;-128 ... 127&gt;</em><br /><br />[syntax=c]int i, j, byteWidth = (w + 7) / 8;[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8185">Draxter32</a> — 23 lut 2021, o 23:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Morales]]></name></author>
<updated>2021-02-23T19:17:16+01:00</updated>
<published>2021-02-23T19:17:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23630&amp;p=231192#p231192</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23630&amp;p=231192#p231192"/>
<title type="html"><![CDATA[Re: SSD1306 OLED - Przesuwanie się bitmap.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23630&amp;p=231192#p231192"><![CDATA[
Niestety nie pomogło ;/<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=21510">Morales</a> — 23 lut 2021, o 19:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Draxter32]]></name></author>
<updated>2021-02-23T16:49:59+01:00</updated>
<published>2021-02-23T16:49:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23630&amp;p=231191#p231191</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23630&amp;p=231191#p231191"/>
<title type="html"><![CDATA[Re: SSD1306 OLED - Przesuwanie się bitmap.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23630&amp;p=231191#p231191"><![CDATA[
Spróbuj zmienić w funkcji <em>mk_ssd1306_drawBitmap_P</em>, linię (numer 7 poniżej):<br /><br />[syntax=c]void mk_ssd1306_drawBitmap_P(int x, int y, const uint8_t *bitmap, uint8_t w,<br />                uint8_t h, uint8_t color) {<br /> <br />        int i, j, byteWidth = (w + 7) / 8;<br />        for (j = 0; j &lt; h; j++) {<br />                for (i = 0; i &lt; w; i++) {<br />                        if (pgm_read_byte(bitmap + j * byteWidth + i / 8) &amp; (128 &gt;&gt; (i &amp; 7))) {<br />                                mk_ssd1306_setPixel(x + i, y + j, color);<br />                        }<br />                }<br />        }<br />}[/syntax]<br /><br />na coś takiego:<br /><br />[syntax=c]if (pgm_read_byte(bitmap + j * byteWidth + i / 8) &amp; (B10000000 &gt;&gt; (i % 8))) {<br />...<br />}[/syntax]<br /><br />lub takiego<br /><br />[syntax=c]if (pgm_read_byte(bitmap + j * byteWidth + i / 8) &amp; (128 &gt;&gt; (i % 7))) {<br />...<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8185">Draxter32</a> — 23 lut 2021, o 16:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Morales]]></name></author>
<updated>2021-02-22T23:52:06+01:00</updated>
<published>2021-02-22T23:52:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23630&amp;p=231184#p231184</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23630&amp;p=231184#p231184"/>
<title type="html"><![CDATA[SSD1306 OLED - Przesuwanie się bitmap.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23630&amp;p=231184#p231184"><![CDATA[
Cześć! Aktualnie pracuję nad zegarkiem na rękę z wyświetlaczem OLED 0,96 cala, komunikacja SPI. Przy pomocy programu PixelFactor na licencji z greenbooka stworzyłem sobie dwie bitmapy, prezentujące dwie wersje tego samego logo. Wyświetlanie owych bitmap uwarunkowałem poprzez wciśnięcie przycisków. W tym momencie pojawił mi się pewien problem... Całą bibliotekę tworzę razem z Panem Mirkiem na podstawie jego filmików o SSD1306, więc wykorzystuję funkcję zawarte w jego filmach. W momencie wywołania bitmapy, wyświetla się ona na OLEDZIE, jednak jej współrzędne tak jakby zostają przesunięte. Z tego powodu każdorazowa zmiana bitmapy powoduję, że wyświetla się ona przesunięta o daną ilość miejsc. Analizowałem kod i nie mogę znaleźć miejsca, w którym mógłbym naprawić to przesunięcie... Wstawiam kod programu oraz zdjęcia prezentujące pracę układu. Dodam, że wgranie takiej samej bitmapy kilka razy z rzędu również przesuwa współrzędne. Proszę o pomoc.<br /><br />Plik main.c:<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;string.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;stdlib.h&gt;<br /><br />#include &quot;MK_OLED_SSD1306/MK_SSD1306.h&quot;<br />#include &quot;BD_OLED_WATCH/OLED_WATCH.h&quot;<br />#include &quot;SPI/SPI.h&quot;<br /><br />int main (void) {<br />mk_ssd1306_init(SSD1306_SWITCHCAPVCC, REFRESH_MID); // Inicjalizacja wyswietlacza OLED<br />mk_ssd1306_display();<br />init_key();<br /><br />while(1){<br /><br /><br />/* Obsluga trzech przyciskow przy pomocy funkcji SuperDebounce */<br />SuperDebounce(&amp;k1, &amp;PINC, KL1, DEFAULT, DEFAULT, BITMAP1, DEFAULT);<br />SuperDebounce(&amp;k2, &amp;PINC, KL2, DEFAULT, DEFAULT, BITMAP2, DEFAULT);<br />SuperDebounce(&amp;k3, &amp;PINC, KL3, DEFAULT, DEFAULT, led_xor, led_xor);<br /><br />}<br /><br />}[/syntax]<br /><br />Funkcję do obsługi wyświetlacza:<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;string.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;stdlib.h&gt;<br /><br />#include &quot;MK_SSD1306.h&quot;<br />#include &quot;C:\workspace_mars\OLED_LIB\SPI\SPI.h&quot; // Do poprawnego działania biblioteki wymagana jest komunikacja SPI<br /><br />uint8_t ssd1306_buf&#91;BUF_SIZE&#93; = { 0x00, 0x00, 0x60, 0xE0, 0x80, 0x00, 0xE0,<br />0xE0, 0x00, 0x80, 0xE0, 0x60, 0x00, 0xE0, 0xE0, 0x20, 0x20, 0x20, 0x00,<br />0x60, 0xE0, 0x80, 0x80, 0xE0, 0x60, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00,<br />0x80, 0xE0, 0xE0, 0x80, 0x00, 0x00, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0xE0,<br />0xE0, 0x00, 0xE0, 0xE0, 0x20, 0x20, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x60, 0xE0, 0x80, 0x80, 0xE0, 0x60, 0xE0, 0xE0, 0x00, 0x00,<br />0x00, 0xE0, 0xE0, 0x00, 0x20, 0x20, 0xE0, 0xE0, 0x20, 0x20, 0x00, 0x80,<br />0xE0, 0xE0, 0x80, 0x00, 0x00, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0xE0, 0xE0,<br />0x00, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x20, 0x20, 0x40,<br />0x00, 0xC0, 0xE0, 0x20, 0x20, 0x20, 0xE0, 0xC0, 0x00, 0xE0, 0xE0, 0x20,<br />0x20, 0xE0, 0xC0, 0x00, 0xE0, 0xE0, 0x20, 0xE0, 0xC0, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x03, 0x1F, 0x1C, 0x03, 0x03, 0x1C, 0x1F, 0x03,<br />0x00, 0x00, 0x1F, 0x1F, 0x11, 0x11, 0x11, 0x00, 0x00, 0x01, 0x1F, 0x1F,<br />0x01, 0x00, 0x1F, 0x1F, 0x10, 0x10, 0x00, 0x1E, 0x1F, 0x04, 0x04, 0x1F,<br />0x1E, 0x00, 0x1F, 0x1F, 0x00, 0x03, 0x0C, 0x1F, 0x1F, 0x00, 0x1F, 0x1F,<br />0x10, 0x10, 0x18, 0x0F, 0x07, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x01,<br />0x1F, 0x1F, 0x01, 0x00, 0x0F, 0x1F, 0x10, 0x10, 0x10, 0x1F, 0x0F, 0x00,<br />0x00, 0x00, 0x1F, 0x1F, 0x00, 0x00, 0x1E, 0x1F, 0x04, 0x04, 0x1F, 0x1E,<br />0x00, 0x1F, 0x1F, 0x00, 0x03, 0x0C, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, 0x00,<br />0x00, 0x00, 0x00, 0x0F, 0x1F, 0x10, 0x10, 0x08, 0x00, 0x0F, 0x1F, 0x10,<br />0x10, 0x10, 0x1F, 0x0F, 0x00, 0x1F, 0x1F, 0x01, 0x03, 0x1F, 0x1C, 0x00,<br />0x1F, 0x1F, 0x02, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x1F,<br />0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,<br />0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFC, 0xF8, 0xF0, 0xE0, 0xC1, 0x83, 0x07,<br />0x0F, 0x1F, 0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,<br />0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0,<br />0xF8, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,<br />0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE,<br />0xFC, 0xF8, 0xF0, 0xE0, 0xC1, 0x83, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF,<br />0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F,<br />0x1F, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE, 0xFF, 0xFF,<br />0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,<br />0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,<br />0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,<br />0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFC, 0xF8, 0xF0,<br />0xE0, 0xC1, 0x83, 0x07, 0x0F, 0x1F, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0,<br />0xF8, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,<br />0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x3F, 0x7F, 0xFF,<br />0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,<br />0xFF, 0xFF, 0xFF, 0xFE, 0xFC, 0xF8, 0xF0, 0xE0, 0xC1, 0x83, 0x07, 0x0F,<br />0x1F, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE, 0xFF, 0xFF,<br />0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,<br />0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF, 0xFF,<br />0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,<br />0xFE, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,<br />0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07,<br />0x83, 0xC1, 0xE0, 0xF0, 0xF8, 0xF8, 0xF0, 0xE0, 0xC1, 0x83, 0x07, 0x0F,<br />0x1F, 0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,<br />0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFC, 0xFE, 0xFF, 0xFF,<br />0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,<br />0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x1F,<br />0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,<br />0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07,<br />0x83, 0xC1, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,<br />0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFC, 0xF8, 0xF0, 0xE0,<br />0xC1, 0x83, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,<br />0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,<br />0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x70, 0x00, 0x00, 0xF0,<br />0x10, 0x10, 0xF0, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0,<br />0x00, 0x00, 0x00, 0xF0, 0x10, 0x10, 0xE0, 0x00, 0xF0, 0x00, 0xF0, 0xC0,<br />0x00, 0xF0, 0x00, 0xE0, 0x10, 0x10, 0x60, 0x00, 0x00, 0x00, 0xF0, 0x10,<br />0x10, 0xF0, 0x00, 0xF0, 0x10, 0x10, 0x00, 0x10, 0xF0, 0x10, 0x00, 0x10,<br />0xF0, 0x10, 0x00, 0xF0, 0x10, 0x10, 0x00, 0xF0, 0x10, 0x10, 0xF0, 0x00,<br />0x00, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xE0, 0x10, 0x10, 0xE0,<br />0x00, 0xF0, 0x10, 0x10, 0xF0, 0x00, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0x10,<br />0x10, 0xE0, 0x00, 0x60, 0x90, 0x10, 0x60, 0x00, 0x00, 0x70, 0x00, 0x70,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x11, 0x11, 0x1E, 0x00,<br />0x0F, 0x10, 0x10, 0x0F, 0x00, 0x1F, 0x00, 0x1F, 0x10, 0x10, 0x00, 0x1F,<br />0x10, 0x10, 0x0F, 0x00, 0x1F, 0x00, 0x1F, 0x01, 0x06, 0x1F, 0x00, 0x0F,<br />0x10, 0x11, 0x0F, 0x00, 0x00, 0x00, 0x1F, 0x11, 0x11, 0x1E, 0x00, 0x1F,<br />0x11, 0x11, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F,<br />0x11, 0x11, 0x00, 0x1F, 0x00, 0x07, 0x19, 0x00, 0x00, 0x00, 0x01, 0x1F,<br />0x00, 0x1F, 0x01, 0x00, 0x0F, 0x10, 0x10, 0x0F, 0x00, 0x1F, 0x00, 0x07,<br />0x19, 0x00, 0x1F, 0x10, 0x10, 0x00, 0x1F, 0x10, 0x10, 0x0F, 0x00, 0x08,<br />0x11, 0x13, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Bufor wyswietlacza OLED<br /><br />};<br /><br />void mk_ssd1306_clearDisplay(void) {<br />memset(ssd1306_buf, 0x00, BUF_SIZE);<br />}<br /><br />void mk_ssd1306_cmd(uint8_t cmd) { // Funkcja do wysłania komendy do wyświetlacza OLED<br /><br />#if USE_CS == 1<br />CS_HI;<br />#endif<br />DC_LOW; // PIN D/C w stan niski aby OLED przeszedł w tryb komend<br />#if USE_CS == 1<br />CS_LOW;<br />#endif<br />SendSpi(cmd); // Wysłanie komendy<br />#if USE_CS == 1<br />CS_HI;<br />#endif<br />}<br /><br />void mk_ssd1306_data(uint8_t data) { // Funkcja do wysłania danych do wyświetlacza OLED<br /><br />#if USE_CS == 1<br />CS_HI;<br />#endif<br />DC_HI; // PIN D/C w stan wysokii aby OLED przeszedł w tryb wgrywania danych<br />#if USE_CS == 1<br />CS_LOW;<br />#endif<br />SendSpi(data); // Wysyłanie danych<br />#if USE_CS == 1<br />CS_HI;<br />#endif<br />}<br /><br />void mk_ssd1306_display() { // Wysłanie bufora z pamięci RAM do SSD1306<br />mk_ssd1306_cmd(SSD1306_SETLOWCOLUMN);<br />mk_ssd1306_cmd(SSD1306_SETHIGHCOLUMN);<br />mk_ssd1306_cmd(SSD1306_SETSTARTLINE);<br /><br />#if USE_CS == 1<br />CS_HI;<br />#endif<br />DC_HI;<br />#if USE_CS == 1<br />CS_HI;<br />#endif<br /><br />for (uint16_t i = 0; i &lt; BUF_SIZE; i++) {<br />SendSpi(ssd1306_buf&#91;i&#93;);<br />}<br /><br />#if USE_CS == 1<br />CS_HI;<br />#endif<br /><br />}<br /><br />void mk_ssd1306_setPixel(int x, int y, uint8_t bw) {<br />if ((x &lt; 0) &amp;&amp; (x &gt;= SSD1306_WIDTH) &amp;&amp; (y &lt; 0) &amp;&amp; (y &gt;= SSD1306_HEIGHT))<br />return;<br /><br />if (bw)<br />ssd1306_buf&#91;x + (y / 8) * SSD1306_WIDTH&#93; |= (1 &lt;&lt; (y % 8)); // zapal pixel<br />else<br />ssd1306_buf&#91;x + (y / 8) * SSD1306_WIDTH&#93; &amp;= ~(1 &lt;&lt; (y % 8)); // zgas pixel<br /><br />}<br /><br />void mk_ssd1306_init(uint8_t vcc, uint8_t refresh) { // Inicjalizacja wyswietlacza OLED<br />InitSpi();<br />#if USE_RST == 1<br />RST_HI;<br />_delay_ms(75); // Czas odswiezenia<br />RST_LOW;<br />_delay_ms(75); // Czas odswiezenia<br />RST_HI;<br />#else<br />CS_HI;<br />_delay_ms(75);<br />CS_LOW;<br />_delay_ms(75);<br />CS_HI;<br />#endif<br /><br />mk_ssd1306_cmd(SSD1306_DISPLAYOFF);<br />mk_ssd1306_cmd(SSD1306_SETDISPLAYCLOCKDIV);<br />mk_ssd1306_cmd(refresh);<br /><br />mk_ssd1306_cmd(SSD1306_SETDISPLAYOFFSET);<br />mk_ssd1306_cmd(0x00);<br />mk_ssd1306_cmd(SSD1306_SETSTARTLINE | 0x0);<br />mk_ssd1306_cmd(SSD1306_CHARGEPUMP);<br /><br />if (vcc == SSD1306_EXTERNALVCC)<br />mk_ssd1306_cmd(0x10);<br />else<br />mk_ssd1306_cmd(0x14);<br /><br />mk_ssd1306_cmd(SSD1306_MEMORYMODE);<br />mk_ssd1306_cmd(0x00);<br />mk_ssd1306_cmd(SSD1306_SEGREMAP | 0x1);<br />mk_ssd1306_cmd(SSD1306_COMSCANDEC);<br />mk_ssd1306_cmd(SSD1306_SETCONTRAST);<br /><br />if (vcc == SSD1306_EXTERNALVCC)<br />mk_ssd1306_cmd(0x9F);<br />else<br />mk_ssd1306_cmd(0xCF);<br /><br />mk_ssd1306_cmd(SSD1306_SETPRECHARGE);<br /><br />#if defined SSD1306_128_32<br />mk_ssd1306_cmd(SSD1306_SETMULTIPLEX);<br />mk_ssd1306_cmd(0x1F);<br /><br />mk_ssd1306_cmd(SSD1306_SETCOMPINS);<br />mk_ssd1306_cmd(0x02);<br />#endif<br /><br />#if defined SSD1306_128_64<br />mk_ssd1306_cmd(SSD1306_SETMULTIPLEX);<br />mk_ssd1306_cmd(0x3F);<br /><br />mk_ssd1306_cmd(SSD1306_SETCOMPINS);<br />mk_ssd1306_cmd(0x12);<br />#endif<br /><br />mk_ssd1306_cmd(SSD1306_SETVCOMDETECT);<br />mk_ssd1306_cmd(0x40);<br />mk_ssd1306_cmd(SSD1306_DISPLAYALLON_RESUME);<br />mk_ssd1306_cmd(SSD1306_NORMALDISPLAY);<br />mk_ssd1306_cmd(SSD1306_DISPLAYON);<br /><br />}<br /><br />void mk_ssd1306_drawBitmap_P(int x, int y, const uint8_t *bitmap, uint8_t w,<br />uint8_t h, uint8_t color) {<br /><br />int i, j, byteWidth = (w + 7) / 8;<br />for (j = 0; j &lt; h; j++) {<br />for (i = 0; i &lt; w; i++) {<br />if (pgm_read_byte(bitmap + j * byteWidth + i / 8) &amp; (128 &gt;&gt; (i &amp; 7))) {<br />mk_ssd1306_setPixel(x + i, y + j, color);<br />}<br />}<br />}<br />}[/syntax]<br /><br />Funkcję wykorzystywane w SuperDebounce i init_key();<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;string.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;stdlib.h&gt;<br /><br />#include &quot;C:\workspace_mars\OLED_LIB\MK_OLED_SSD1306\MK_SSD1306.h&quot;<br />#include &quot;OLED_WATCH.h&quot;<br /><br />const uint8_t bitmap1&#91;1024&#93; PROGMEM = {<br />// res: 128x64   - 781 bytes<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x19, 0x9B, 0xEC, 0xF0, 0x63, 0x1B, 0xE0, 0x33,<br />0xC6, 0xFC, 0xC6, 0x36, 0x0E, 0x3E, 0x7C, 0xF0, 0x19, 0x9B, 0x0C, 0xF0,<br />0x63, 0x9B, 0x30, 0x33, 0xC6, 0x30, 0xC7, 0x36, 0x19, 0x63, 0x66, 0xD8,<br />0x0D, 0xB3, 0x07, 0xB0, 0xF3, 0x9B, 0x18, 0x1E, 0xC6, 0x31, 0xE7, 0x36,<br />0x18, 0x63, 0x66, 0xD8, 0x0D, 0xB3, 0xE7, 0xB0, 0x93, 0x5B, 0x18, 0x1E,<br />0xC6, 0x31, 0x26, 0xB6, 0x18, 0x63, 0x7C, 0xD8, 0x0D, 0xB3, 0x03, 0x31,<br />0x9B, 0x5B, 0x1B, 0x8C, 0xC6, 0x33, 0x36, 0xB6, 0x18, 0x63, 0x6C, 0xF0,<br />0x06, 0x63, 0x03, 0x31, 0xFB, 0x3B, 0x18, 0x0C, 0xC6, 0x33, 0xF6, 0x76,<br />0x18, 0x63, 0x66, 0xC0, 0x06, 0x63, 0x03, 0x31, 0x9B, 0x3B, 0x30, 0x0C,<br />0xC6, 0x33, 0x36, 0x76, 0x19, 0x63, 0x66, 0xC0, 0x06, 0x63, 0xE3, 0x3D,<br />0x9B, 0x1B, 0xE0, 0x0C, 0x7C, 0x33, 0x36, 0x36, 0x0E, 0x3E, 0x66, 0xC0,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x3F, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF,<br />0xFF, 0x07, 0xFF, 0xFC, 0x3F, 0xFF, 0xF0, 0x7F, 0xFF, 0xFF, 0x07, 0xFF,<br />0xFF, 0xE0, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFC, 0x3F, 0xFF, 0xF8, 0x3F,<br />0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFC,<br />0x3F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF,<br />0xF8, 0x3F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFE, 0x0F, 0xFF, 0xF8, 0x3F, 0xFF,<br />0xFF, 0xFC, 0x1F, 0xFF, 0xF0, 0x7F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0x07,<br />0xFF, 0xF0, 0x7F, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xE0, 0xFF, 0xFF, 0xF8,<br />0x0F, 0xFF, 0xFF, 0x83, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF,<br />0xC1, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFF, 0xC1, 0xFF, 0xC1, 0xFF, 0xFF,<br />0xFF, 0xFF, 0x83, 0xFF, 0x83, 0xFF, 0xFF, 0xE0, 0x03, 0xFF, 0xFF, 0xE0,<br />0xFF, 0x83, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0xFF, 0x07, 0xFF, 0xFF, 0xC0,<br />0x01, 0xFF, 0xFF, 0xF0, 0x7F, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xFE,<br />0x0F, 0xFF, 0xFF, 0x80, 0x00, 0xFF, 0xFF, 0xF8, 0x3E, 0x0F, 0xFF, 0xFF,<br />0xFF, 0xFF, 0xF0, 0x7C, 0x1F, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xFF, 0xFC,<br />0x1C, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x38, 0x3F, 0xFF, 0xFE, 0x00,<br />0x00, 0x3F, 0xFF, 0xFE, 0x08, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x10,<br />0x7F, 0xFF, 0xFC, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xFF,<br />0xFF, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x0F, 0xFF, 0xFF,<br />0x80, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xF0, 0x00,<br />0x00, 0x07, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xFC, 0x3F, 0xFF, 0xFF, 0x83,<br />0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xF8,<br />0x1F, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x01, 0xFF, 0xFF,<br />0xF7, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0x80, 0x00,<br />0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x07, 0xFF, 0xFF, 0xFF,<br />0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1,<br />0x83, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF,<br />0xFF, 0xFF, 0xFF, 0x83, 0xC1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x00,<br />0x00, 0x00, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xE0, 0xFF, 0xFF, 0xFF,<br />0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFE, 0x0F,<br />0xF0, 0x7F, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF,<br />0xFF, 0xFF, 0xFC, 0x1F, 0xF8, 0x3F, 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0x00,<br />0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xF8, 0x3F, 0xFC, 0x1F, 0xFF, 0xFF,<br />0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xF0, 0x7F,<br />0xFE, 0x0F, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,<br />0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0x83, 0xFF, 0xFF,<br />0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0x83, 0xFF,<br />0xFF, 0xC1, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F,<br />0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF,<br />0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, 0xFC, 0x1F, 0xFF,<br />0xFF, 0xF8, 0x3F, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x3D, 0x2A, 0x39, 0x49, 0x87, 0xBB,<br />0xBB, 0xBC, 0x54, 0xCF, 0x47, 0x18, 0xA0, 0x00, 0x00, 0x05, 0x25, 0x2A,<br />0x25, 0x4A, 0x44, 0xA1, 0x12, 0x24, 0x55, 0x29, 0x44, 0xA4, 0xA0, 0x00,<br />0x00, 0x05, 0x25, 0x2A, 0x25, 0x6A, 0x44, 0xA1, 0x12, 0x24, 0x55, 0x29,<br />0x44, 0xA4, 0xA0, 0x00, 0x00, 0x00, 0x25, 0x2A, 0x25, 0x6A, 0x04, 0xA1,<br />0x12, 0x24, 0x55, 0x29, 0x44, 0x90, 0x00, 0x00, 0x00, 0x00, 0x39, 0x2A,<br />0x25, 0x6A, 0xC7, 0x39, 0x13, 0xAC, 0x6D, 0x2B, 0x44, 0x98, 0x00, 0x00,<br />0x00, 0x00, 0x25, 0x2A, 0x25, 0x5A, 0x44, 0xA1, 0x12, 0x28, 0x29, 0x2A,<br />0x44, 0x88, 0x00, 0x00, 0x00, 0x00, 0x25, 0x2A, 0x25, 0x5A, 0x44, 0xA1,<br />0x12, 0x28, 0x29, 0x2A, 0x44, 0x84, 0x00, 0x00, 0x00, 0x00, 0x25, 0x2A,<br />0x25, 0x4A, 0x44, 0xA1, 0x12, 0x24, 0x29, 0x29, 0x44, 0xA4, 0x00, 0x00,<br />0x00, 0x00, 0x3C, 0xCB, 0xB9, 0x49, 0x87, 0xB9, 0x13, 0xA4, 0x28, 0xC9,<br />0x77, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, };<br /><br />const uint8_t bitmap2&#91;1024&#93; PROGMEM = {<br />// res: 128x64   - 811 bytes<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x37, 0xD9, 0xE0,<br />0xC6, 0x37, 0xC0, 0x67, 0x8D, 0xF9, 0x8C, 0x6C, 0x1C, 0x7C, 0xF9, 0xE0,<br />0x33, 0x36, 0x19, 0xE0, 0xC7, 0x36, 0x60, 0x67, 0x8C, 0x61, 0x8E, 0x6C,<br />0x32, 0xC6, 0xCD, 0xB0, 0x1B, 0x66, 0x0F, 0x61, 0xE7, 0x36, 0x30, 0x3D,<br />0x8C, 0x63, 0xCE, 0x6C, 0x30, 0xC6, 0xCD, 0xB0, 0x1B, 0x67, 0xCF, 0x61,<br />0x26, 0xB6, 0x30, 0x3D, 0x8C, 0x62, 0x4D, 0x6C, 0x30, 0xC6, 0xF9, 0xB0,<br />0x1B, 0x66, 0x06, 0x63, 0x36, 0xB6, 0x37, 0x19, 0x8C, 0x66, 0x6D, 0x6C,<br />0x30, 0xC6, 0xD9, 0xE0, 0x0C, 0xC6, 0x06, 0x63, 0xF6, 0x76, 0x30, 0x19,<br />0x8C, 0x67, 0xEC, 0xEC, 0x30, 0xC6, 0xCD, 0x80, 0x0C, 0xC6, 0x06, 0x63,<br />0x36, 0x76, 0x60, 0x19, 0x8C, 0x66, 0x6C, 0xEC, 0x32, 0xC6, 0xCD, 0x80,<br />0x0C, 0xC7, 0xC6, 0x7B, 0x36, 0x37, 0xC0, 0x18, 0xF8, 0x66, 0x6C, 0x6C,<br />0x1C, 0x7C, 0xCD, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0x83, 0xFF,<br />0xFF, 0xC1, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x7F,<br />0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF,<br />0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF,<br />0xFC, 0x1F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFC, 0x1F, 0xFF,<br />0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x3F, 0xFF, 0xFE, 0x3F, 0xFF, 0xFE, 0x0F,<br />0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0xFC, 0x1F, 0xFF, 0xF0, 0x7F, 0xFF, 0xFC,<br />0x1F, 0xFF, 0xFF, 0x07, 0xFF, 0xF0, 0x7F, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF,<br />0xE0, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0x83, 0xFF, 0xE0, 0xFF, 0xFF,<br />0xFF, 0xFF, 0x07, 0xFF, 0xC1, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFF, 0xC1,<br />0xFF, 0xC1, 0xFF, 0xFF, 0xFF, 0xFF, 0x83, 0xFF, 0x83, 0xFF, 0xFF, 0xE0,<br />0x03, 0xFF, 0xFF, 0xE0, 0xFF, 0x83, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0xFF,<br />0x07, 0xFF, 0xFF, 0xC0, 0x01, 0xFF, 0xFF, 0xF0, 0x7F, 0x07, 0xFF, 0xFF,<br />0xFF, 0xFF, 0xE0, 0xFE, 0x0F, 0xFF, 0xFF, 0x80, 0x00, 0xFF, 0xFF, 0xF8,<br />0x3E, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x7C, 0x1F, 0xFF, 0xFF, 0x00,<br />0x00, 0x7F, 0xFF, 0xFC, 0x1C, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x38,<br />0x3F, 0xFF, 0xFE, 0x00, 0x00, 0x3F, 0xFF, 0xFE, 0x08, 0x3F, 0xFF, 0xFF,<br />0xFF, 0xFF, 0xFC, 0x10, 0x7F, 0xFF, 0xFC, 0x00, 0x00, 0x1F, 0xFF, 0xFF,<br />0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0xF8, 0x00,<br />0x00, 0x0F, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0x01,<br />0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xFC,<br />0x3F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x03, 0xFF, 0xFF,<br />0xE3, 0xFF, 0xFF, 0xF8, 0x1F, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0xC0, 0x00,<br />0x00, 0x01, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xEF,<br />0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0,<br />0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF,<br />0xFF, 0xFF, 0xFF, 0xC1, 0x83, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x00,<br />0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0x83, 0xC1, 0xFF, 0xFF, 0xFF,<br />0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0x07,<br />0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF,<br />0xFF, 0xFF, 0xFE, 0x0F, 0xF0, 0x7F, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00,<br />0x00, 0x00, 0x07, 0xFF, 0xFF, 0xFF, 0xFC, 0x1F, 0xF8, 0x3F, 0xFF, 0xFF,<br />0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xF8, 0x3F,<br />0xFC, 0x1F, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF,<br />0xFF, 0xFF, 0xF0, 0x7F, 0xFE, 0x0F, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0x07, 0xFF, 0xFF,<br />0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xC1, 0xFF,<br />0xFF, 0x83, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F,<br />0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF,<br />0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFE, 0x0F, 0xFF,<br />0xFF, 0xF0, 0x7F, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,<br />0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xE0, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x3D, 0x2A, 0x39, 0x49, 0x87, 0xBB,<br />0xBB, 0xBC, 0x54, 0xCF, 0x47, 0x18, 0xA0, 0x00, 0x00, 0x05, 0x25, 0x2A,<br />0x25, 0x4A, 0x44, 0xA1, 0x12, 0x24, 0x55, 0x29, 0x44, 0xA4, 0xA0, 0x00,<br />0x00, 0x05, 0x25, 0x2A, 0x25, 0x6A, 0x44, 0xA1, 0x12, 0x24, 0x55, 0x29,<br />0x44, 0xA4, 0xA0, 0x00, 0x00, 0x00, 0x25, 0x2A, 0x25, 0x6A, 0x04, 0xA1,<br />0x12, 0x24, 0x55, 0x29, 0x44, 0x90, 0x00, 0x00, 0x00, 0x00, 0x39, 0x2A,<br />0x25, 0x6A, 0xC7, 0x39, 0x13, 0xAC, 0x6D, 0x2B, 0x44, 0x98, 0x00, 0x00,<br />0x00, 0x00, 0x25, 0x2A, 0x25, 0x5A, 0x44, 0xA1, 0x12, 0x28, 0x29, 0x2A,<br />0x44, 0x88, 0x00, 0x00, 0x00, 0x00, 0x25, 0x2A, 0x25, 0x5A, 0x44, 0xA1,<br />0x12, 0x28, 0x29, 0x2A, 0x44, 0x84, 0x00, 0x00, 0x00, 0x00, 0x25, 0x2A,<br />0x25, 0x4A, 0x44, 0xA1, 0x12, 0x24, 0x29, 0x29, 0x44, 0xA4, 0x00, 0x00,<br />0x00, 0x00, 0x3C, 0xCB, 0xB9, 0x49, 0x87, 0xB9, 0x13, 0xA4, 0x28, 0xC9,<br />0x77, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,<br />0x00, 0x00, 0x00, 0x00, };<br /><br /><br />void led_xor(void) {<br />PORTC ^= LED;<br />}<br /><br />void init_key( void ) {<br /><br />DDRC |= LED;<br />PORT_KL |= KL1|KL2|KL3;<br /><br />/* Timer2 – inicjalizacja przerwania co 10ms */<br />TCCR2 |= (1&lt;&lt;WGM21);// tryb pracy CTC<br />TCCR2 |= (1&lt;&lt;CS22)|(1&lt;&lt;CS20);// preskaler = 1024<br />OCR2 = 107;// przerwanie porównania co 10ms (100Hz)<br />TIMSK |= (1&lt;&lt;OCIE2);// Odblokowanie przerwania CompareMatch<br /><br />sei(); //Zakomentowac, jezeli sei() jest juz w main.c<br />}<br /><br />void BITMAP1 (void) {<br />_delay_ms(50);<br />mk_ssd1306_clearDisplay();<br />mk_ssd1306_drawBitmap_P(0, 0, bitmap1, 128, 64, 1);<br />mk_ssd1306_display();<br />}<br /><br />void BITMAP2 (void) {<br />_delay_ms(50);<br />mk_ssd1306_clearDisplay();<br />mk_ssd1306_drawBitmap_P(0, 0, bitmap2, 128, 64, 1);<br />mk_ssd1306_display();<br />}[/syntax]<br /><br /><a href="https://obrazkiforum.atnel.pl/21510/7d94aac52ea57f938107847ef1dbbd93.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/21510/7d94aac52ea57f938107847ef1dbbd93.jpg" alt="Obrazek" /></a><br /><a href="https://obrazkiforum.atnel.pl/21510/f2d5b5bc580a0f2729d0f9d8c661c133.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/21510/f2d5b5bc580a0f2729d0f9d8c661c133.jpg" alt="Obrazek" /></a><br /><a href="https://obrazkiforum.atnel.pl/21510/50b7a51029ec56fda1aa34b518f70ac6.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/21510/50b7a51029ec56fda1aa34b518f70ac6.jpg" alt="Obrazek" /></a><br /><a href="https://obrazkiforum.atnel.pl/21510/947189f82e869c77663525cb4666ea28.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/21510/947189f82e869c77663525cb4666ea28.jpg" alt="Obrazek" /></a><br /><a href="https://obrazkiforum.atnel.pl/21510/740eb69e3244381a686eeac62ccfa2c4.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/21510/740eb69e3244381a686eeac62ccfa2c4.jpg" alt="Obrazek" /></a><br /><a href="https://obrazkiforum.atnel.pl/21510/6c434715644a28b7464cc9b724f62031.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/21510/6c434715644a28b7464cc9b724f62031.jpg" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=21510">Morales</a> — 22 lut 2021, o 23:52</p><hr />
]]></content>
</entry>
</feed>