<?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=30&amp;t=11944&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-06-14T18:55:53+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=30&amp;t=11944&amp;mode</id>
<entry>
<author><name><![CDATA[mczarny]]></name></author>
<updated>2015-06-14T18:55:53+01:00</updated>
<published>2015-06-14T18:55:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131745#p131745</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131745#p131745"/>
<title type="html"><![CDATA[Re: Mam dość matryc led]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131745#p131745"><![CDATA[
witam <br /><br />Problem rozwiązany. W sumie to banalna sprawa, ale jak się do tego dojdzie to każdy problem jest banalny.<br />Wielkie podziękowania dla Kolegi <strong>Krausera</strong> - za funkcje zapisujące fonty do bufora i na matryce<br />i dla Kolegi <strong>mokrowskiego</strong> - za ustawienie kolejności wierszy w przerwaniu<br />bez nich pewnie jeszcze bym się motał  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br /><br />Teraz dołączam kolejne matryce i zobaczę co z tego wyjdzie a całość przedstawię w dziale projektów.<br /><br />pozdrawiam Marek<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4651">mczarny</a> — 14 cze 2015, o 18:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zaba]]></name></author>
<updated>2015-06-14T13:06:31+01:00</updated>
<published>2015-06-14T13:06:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131726#p131726</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131726#p131726"/>
<title type="html"><![CDATA[Re: Mam dość matryc led]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131726#p131726"><![CDATA[
Jeszcze zauważyłem że u Ciebie font masz zdefiniowany w liniach pionowych<br />a w font.h chyba jest definiowany w liniach poziomych<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1044">Zaba</a> — 14 cze 2015, o 13:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[marcin_c]]></name></author>
<updated>2015-06-14T12:32:48+01:00</updated>
<published>2015-06-14T12:32:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131720#p131720</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131720#p131720"/>
<title type="html"><![CDATA[Re: Mam dość matryc led]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131720#p131720"><![CDATA[
Cześć,<br /><div class="quotetitle">mczarny napisał(a):</div><div class="quotecontent"><br />pobawiłem się trochę buforem i poustawiałem kolejność bitów, ale tak to nie może być bo przecież funkcja przepisywania kolumn korzysta z pliku &quot;fonty.h&quot;  <img src="https://forum.atnel.pl/images/smilies/icon_rolleyes.gif" alt=":roll:" title="Udaje, że to nie on" /> więc tam musiałbym ustawić ponownie fonty - bez sensu <img src="https://forum.atnel.pl/images/smilies/icon_mad.gif" alt=":x" title="Wściekły" /><br /></div><br />a próbowałeś ładować font do bufora wyświetlacza od końca fontu? powinien zniknąć efekt odbicia lustrzanego.<br /><br />Marcin<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3619">marcin_c</a> — 14 cze 2015, o 12:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mczarny]]></name></author>
<updated>2015-06-13T16:41:13+01:00</updated>
<published>2015-06-13T16:41:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131678#p131678</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131678#p131678"/>
<title type="html"><![CDATA[Re: Mam dość matryc led]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131678#p131678"><![CDATA[
pobawiłem się trochę buforem i poustawiałem kolejność bitów, ale tak to nie może być bo przecież funkcja przepisywania kolumn korzysta z pliku &quot;fonty.h&quot;  <img src="https://forum.atnel.pl/images/smilies/icon_rolleyes.gif" alt=":roll:" title="Udaje, że to nie on" /> więc tam musiałbym ustawić ponownie fonty - bez sensu <img src="https://forum.atnel.pl/images/smilies/icon_mad.gif" alt=":x" title="Wściekły" /> <br /><br />wygląd bufora<br />[syntax=c]//bufor wyświetlacza<br />  uint8_t display&#91;&#93; = {<br /><br />    0x00, 0x7E, 0x11, 0x11, 0x11, 0x7E, 0x00, 0x00,<br />    0x04, 0x7F, 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01,<br />    0x49, 0x49, 0x49, 0x7F, 0x00, 0x7F, 0x10, 0x08,<br />    0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x7F, 0x00,<br /><br />    };[/syntax]<br /><br />i widok matrycy<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/4651/74ff680b000a489311ba49b150e112fb.JPG"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/4651/74ff680b000a489311ba49b150e112fb.JPG" alt="Obrazek" /></a><br /><br />dodam jeszcze, że zmiana ustawienia fontów w buforze inaczej niż w osmiowierszowe pozycje daje totalną kaszanę na wyświetlaczu<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4651">mczarny</a> — 13 cze 2015, o 16:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mczarny]]></name></author>
<updated>2015-06-13T08:38:36+01:00</updated>
<published>2015-06-13T08:38:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131641#p131641</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131641#p131641"/>
<title type="html"><![CDATA[Re: Mam dość matryc led]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131641#p131641"><![CDATA[
cześć<br /><br />Na razie chciałem zobaczyć jak działa funkcja Send_Row<br /><br />po wpisaniu bufora i funkcji mamy coś takiego<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/4651/fe83f4f269d982267a6ffca4e18e5221.JPG"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/4651/fe83f4f269d982267a6ffca4e18e5221.JPG" alt="Obrazek" /></a><br /><br />mamy lustrzane odbicie znaków i w dodatku pomieszana kolejność <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> <br /><br />wpisałem do bufora same litery &quot;A&quot; to lepiej to widać<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/4651/f0e2e43d30ccdebbc5a14da8936de992.JPG"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/4651/f0e2e43d30ccdebbc5a14da8936de992.JPG" alt="Obrazek" /></a><br /><br />trzeba chyba wysyłać od razu cały wiersz i funkcja powinna pozwalać na budowanie dowolnie długiego wiersza....<br />w tej chwili to dla każdej matrycy budujemy osobny bajt - zgoda przy załóżmy 20 matrycach zbudujemy 20 bajtów, ale ta kolejność.....<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4651">mczarny</a> — 13 cze 2015, o 08:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2015-06-11T22:49:44+01:00</updated>
<published>2015-06-11T22:49:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131539#p131539</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131539#p131539"/>
<title type="html"><![CDATA[Re: Mam dość matryc led]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131539#p131539"><![CDATA[
Najlepiej to mieć bufor jako tablicę kolumn. Jest to bardziej naturalne można dowolnie rozszerzać i łatwo wtedy z jednego bufora kopiować do drugiego jednocześnie załatwiając sprawę przewijania. Skomplikuje to wysyłanie danych na wyświetlacz, ale uprości wpisywanie znaku do bufora:<br />[syntax=c]//bufor wyświetlacza<br />uint8_t display&#91;32&#93; = { <br />0x7E, 0x11, 0x11, 0x11, 0x7E,// A<br />0x00,<br />0x01, 0x01, 0x7F, 0x01, 0x01,// T<br />0x00,<br />0x7F, 0x04, 0x08, 0x10, 0x7F,// N<br />0x00,<br />0x7F, 0x49, 0x49, 0x49, 0x41,// E<br />0x00,<br />0x7F, 0x40, 0x40, 0x40, 0x40,// L<br />0x00,<br />0x00,<br />0x00,<br />};<br /> <br />void Send_Row(uint8_t rowNumber)<br />{<br />   uint8_t buf;<br />   for(uint8_t i = 0; i &lt; 4; ++i) // 4 razy po 1/4 wiersza zostanie wysłane po SPI<br />   {<br />      buf = 0;<br />      for(uint8_t k = 0; k &lt; 8; ++k)  //budowany bajt ma 8 bitów<br />      {<br />         buf |= ((display&#91;i * 8 + k&#93; &gt;&gt; rowNumber) &amp; 0x01) &lt;&lt; k; // 1/4 wiersza zbudowana z 8 bitów o numerze zgodnym z rowNumber<br />         //jak rowNumber = 5 to każdy bit  numer 5 z kolejnych 8 bajtów tworzy bajt do wysłania<br />      }<br />      Send_SPI(buf);<br />   }<br />}<br /><br />ISR(TIMER0_COMP_vect)<br />{<br />   const static uint8_t multiplex_tablica1234&#91;&#93; PROGMEM = {~ROW1,~ROW2,~ROW3,~ROW4,255,255,255,255 };<br />   const static uint8_t multiplex_tablica5678&#91;&#93; PROGMEM = {255,255,255,255,~ROW5,~ROW6,~ROW7,~ROW8 };<br />   static uint8_t licznik = 0;<br />   Row_Off();<br />   Send_Row(licznik);  //tylko numer wiersza<br />   ROWPORT1234 = (ROWPORT1234 &amp; ~ROW1234_MASK) | (pgm_read_byte(&amp;multiplex_tablica1234&#91;licznik&#93;) &amp; ROW1234_MASK);<br />   ROWPORT5678 = (ROWPORT5678 &amp; ~ROW5678_MASK) | (pgm_read_byte(&amp;multiplex_tablica5678&#91;licznik&#93;) &amp; ROW5678_MASK);<br />   licznik++;<br />   licznik &amp;= 0x07;<br />}<br /><br />//setPixel i clearPixel nie będą używane dla pracy tekstowej<br /><br />void putChar(uint8_t x, char c, uint8_t * buf) //dodatkowo wskaźnik do bufora co pozwoli albo wprost wyświetlić albo użyć bufora pośredniczącego<br />{<br />   for(uint8_t col = 0; col &lt; 5; ++col) //5 kolumn<br />   {<br />      *(buf + x + col) = pgm_read_byte(font5x8 + (c - ' ') * 5 + col); //font5x8 - tablica czcionek, ' ' - 1 znak w tablicy spacja<br />      //kolumna znaku jest kopiowana w wybrane miejsce w buforze      <br />   }<br />}<br /><br />void putStringP(uint8_t x, const char * s, uint8_t * buf)<br />{<br />   char c;<br />   while( (c = pgm_read_byte(s++) ) )<br />   {<br />      putChar(x, c, buf);<br />      x += 6;<br />   }<br />}[/syntax]<br /><br />Jak to zadziała to można pokusić się o coś takiego:<br />[syntax=c]const char PROGMEM dlugiNapis&#91;&#93;= {&quot;Dlugi napis&quot;};<br />uint8_t textBuffer&#91;11*6&#93;; //musi pomieścić wszystkie znaki<br /><br />//gdzieś w main<br />putStringP(0, dlugiNapis, textBuffer); //nie na wyświetlacz tylko do bufora pośredniczącego<br />while(1)<br />{<br />   for(uint8_t i = 0; i &lt; 30; ++i)<br />   {<br />      _delay_ms(100);<br />      for(uint8_t k = 0; k &lt; 32; ++k) //opcja for(uint8_t k = 0; k &lt; sizeof(display); ++k)<br />      {<br />         display&#91;k&#93; = textBuffer&#91;k + i&#93;; //skopiowanie tylko 32 bajtów  do bufora wyświetlacza<br />      }<br />   }<br /><br />   for(uint8_t i = 30; i &gt; 0; --i)<br />   {<br />      _delay_ms(100);<br />      for(uint8_t k = 0; k &lt; 32; ++k)<br />      {<br />         display&#91;k&#93; = textBuffer&#91;k + i&#93;;<br />      }<br />   }<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 11 cze 2015, o 22:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mczarny]]></name></author>
<updated>2015-06-11T12:24:59+01:00</updated>
<published>2015-06-11T12:24:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131484#p131484</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131484#p131484"/>
<title type="html"><![CDATA[Re: Mam dość matryc led]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131484#p131484"><![CDATA[
<div class="quotetitle">mokrowski napisał(a):</div><div class="quotecontent"><br />A long int, a long long int <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /><br /></div><br /><br /><br />taaak  <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> <br />jak mam wybierać to na zajętości pamięci mi nie zależy<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4651">mczarny</a> — 11 cze 2015, o 12:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mczarny]]></name></author>
<updated>2015-06-11T09:57:32+01:00</updated>
<published>2015-06-11T09:57:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131475#p131475</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131475#p131475"/>
<title type="html"><![CDATA[Re: Mam dość matryc led]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131475#p131475"><![CDATA[
ok. wiem już wszystko, ale mam jeszcze jedną wątpliwość<br /><br />bufor &quot;display&quot; jest typu uint32_t i wiem dlaczego, ale jakbym chciał dołączyć kolejne matryce czy nawet powiększyć bufor do przewijania napisu tak żeby napis się chował to zabraknie mi typu nie sądzisz?<br />chyba, że ja to źle rozumiem<br /><br />pozdrawiam Marek<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4651">mczarny</a> — 11 cze 2015, o 09:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2015-06-10T20:02:43+01:00</updated>
<published>2015-06-10T20:02:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131451#p131451</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131451#p131451"/>
<title type="html"><![CDATA[Re: Mam dość matryc led]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131451#p131451"><![CDATA[
W funkcjach setPixel i clearPixel zmieniany jest bit w buforze o nazwie display<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 10 cze 2015, o 20:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mczarny]]></name></author>
<updated>2015-06-10T12:05:08+01:00</updated>
<published>2015-06-10T12:05:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131402#p131402</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131402#p131402"/>
<title type="html"><![CDATA[Re: Mam dość matryc led]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131402#p131402"><![CDATA[
cześć<br /><br />patrzę na te funkcje i mam jeszcze jedno pytanie - w którym momencie są zapisywane dane do bufora wyświetlacza?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4651">mczarny</a> — 10 cze 2015, o 12:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2015-06-09T21:35:38+01:00</updated>
<published>2015-06-09T21:35:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131367#p131367</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131367#p131367"/>
<title type="html"><![CDATA[Re: Mam dość matryc led]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131367#p131367"><![CDATA[
<div class="quotetitle">mczarny napisał(a):</div><div class="quotecontent"><br />Jak będę miał pytania jeszcze to mogę pisać na PW?<br /></div><br />Jak chcesz pytać o sprawy związane z programowaniem czy mikrokontolerami to pisz w temacie, bo w końcu od tego jest forum. Jak chcesz wyskoczyć na soczek  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> to pisz na PW.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 9 cze 2015, o 21:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mczarny]]></name></author>
<updated>2015-06-09T04:44:22+01:00</updated>
<published>2015-06-09T04:44:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131307#p131307</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131307#p131307"/>
<title type="html"><![CDATA[Re: Mam dość matryc led]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131307#p131307"><![CDATA[
cześć <strong>Krauser</strong><br /><br />no tak wyświetlacze 7-segmentowe, ale to nie różni się niczym od tego co napisałem w pierwszym poście tylko zamiast wierszy mamy anody lub katody wyświetlaczy<br /><br />Muszę teraz to wszystko przetrawić.....<br />Jak będę miał pytania jeszcze to mogę pisać na PW?<br />Należy Ci się dobra flaszka <img src="https://forum.atnel.pl/images/smilies/icon_cool.gif" alt="8-)" title="Cool" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4651">mczarny</a> — 9 cze 2015, o 04:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2015-06-08T20:18:31+01:00</updated>
<published>2015-06-08T20:18:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131286#p131286</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131286#p131286"/>
<title type="html"><![CDATA[Re: Mam dość matryc led]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131286#p131286"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />jestem w szoku - napisałeś to na poczekaniu czy już miałeś?<br /></div><br />Kolega programek pokazał mi swoje wypociny, więc miałem dużo łatwiej.<br /><div class="quotetitle">mczarny napisał(a):</div><div class="quotecontent"><br />może za wcześnie się porwałem na matryce?<br /></div><br />Pomiędzy diodami a matrycami są jeszcze wyświetlacze 7-segmentowe.<br /><br />Pomyśl o przewijaniu tego napisu albo i dłuższego. W zasadzie to już tylko operacje na tym buforze.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 8 cze 2015, o 20:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mczarny]]></name></author>
<updated>2015-06-08T19:44:59+01:00</updated>
<published>2015-06-08T19:44:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131279#p131279</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131279#p131279"/>
<title type="html"><![CDATA[Re: Mam dość matryc led]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131279#p131279"><![CDATA[
<strong>Krauser</strong><br /><br />jestem w szoku - napisałeś to na poczekaniu czy już miałeś?<br />zresztą nieważne - <strong>wielkie dzięki</strong><br /><br />Ja sprzętowo daję radę, ale programowanie mi jeszcze trochę nie idzie<br />może za wcześnie się porwałem na matryce? ale nie chce mi się już migać diodami <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br /><br />pozdrawiam Marek<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4651">mczarny</a> — 8 cze 2015, o 19:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2015-06-08T18:56:04+01:00</updated>
<published>2015-06-08T18:56:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131269#p131269</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131269#p131269"/>
<title type="html"><![CDATA[Re: Mam dość matryc led]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131269#p131269"><![CDATA[
To się funkcja wpisywania danych znaku do bufora zmieni:<br />[syntax=c]void putChar(uint8_t x, char c)<br />{<br />   uint8_t charCol;<br />   for(uint8_t col = 0; col &lt; 5; ++col) //5 kolumn<br />   {<br />      charCol = pgm_read_byte(font5x8 + (c - ' ') * 5 + col); //font5x8 - tablica czcionek, ' ' - 1 znak w tablicy spacja<br />      for(uint8_t row = 0; row &lt; 8; ++row) //8 pikseli w kolumnie<br />      {<br />         if(charCol &amp; (1&lt;&lt;row)) setPixel(x + col, row); //jak 1 to ustaw odpowiedni piksel<br />         else clearPixel(x + col, row);<br />      }      <br />   }<br />}[/syntax]<br /><br />Dodatkowo należy dorobić funkcję dla łańcuchów znaków z pamięci programu:<br />[syntax=c]void putStringP(uint8_t x, const char * s)<br />{<br />   char c;<br />   while( (c = pgm_read_byte(s++) ) )<br />   {<br />      putChar(x, c);<br />      x += 6;<br />   }<br />}[/syntax]<br /><br />Wywołanie:<br />[syntax=c]putStringP(0, Napis);[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 8 cze 2015, o 18:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mczarny]]></name></author>
<updated>2015-06-08T17:46:37+01:00</updated>
<published>2015-06-08T17:46:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131263#p131263</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131263#p131263"/>
<title type="html"><![CDATA[Re: Mam dość matryc led]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131263#p131263"><![CDATA[
dzięki <strong>Krauser</strong><br /><br />w sumie to zamiast moich &quot;ifów&quot; napisałeś fajną funkcję, ale chodziło mi też o to żeby można było napisać:<br />[syntax=c]static const char PROGMEM Napis&#91;&#93;= {&quot;MAREK&quot;}[/syntax]<br /><br />i z wykorzystaniem tablicy fontów 5x7<br />[syntax=c]// font.h<br />//<br />// Tablica czcionek 5x7 <br />// <br />#include &lt;avr/pgmspace.h&gt;<br />static const char PROGMEM  font5x8&#91;&#93; = {<br />0x00, 0x00, 0x00, 0x00, 0x00,// (spacja)<br />0x00, 0x00, 0x5F, 0x00, 0x00,// !<br />0x00, 0x07, 0x00, 0x07, 0x00,// &quot;<br />0x14, 0x7F, 0x14, 0x7F, 0x14,// #<br />0x24, 0x2A, 0x7F, 0x2A, 0x12,// $<br />0x23, 0x13, 0x08, 0x64, 0x62,// %<br />0x36, 0x49, 0x55, 0x22, 0x50,// &amp;<br />0x00, 0x05, 0x03, 0x00, 0x00,// '<br />0x00, 0x1C, 0x22, 0x41, 0x00,// (<br />0x00, 0x41, 0x22, 0x1C, 0x00,// )<br />0x08, 0x2A, 0x1C, 0x2A, 0x08,// *<br />0x08, 0x08, 0x3E, 0x08, 0x08,// +<br />0x00, 0x50, 0x30, 0x00, 0x00,// ,<br />0x08, 0x08, 0x08, 0x08, 0x08,// -<br />0x00, 0x30, 0x30, 0x00, 0x00,// .<br />0x20, 0x10, 0x08, 0x04, 0x02,// /<br />0x3E, 0x51, 0x49, 0x45, 0x3E,// 0<br />0x00, 0x42, 0x7F, 0x40, 0x00,// 1<br />0x42, 0x61, 0x51, 0x49, 0x46,// 2<br />0x21, 0x41, 0x45, 0x4B, 0x31,// 3<br />0x18, 0x14, 0x12, 0x7F, 0x10,// 4<br />0x27, 0x45, 0x45, 0x45, 0x39,// 5<br />0x3C, 0x4A, 0x49, 0x49, 0x30,// 6<br />0x01, 0x71, 0x09, 0x05, 0x03,// 7<br />0x36, 0x49, 0x49, 0x49, 0x36,// 8<br />0x06, 0x49, 0x49, 0x29, 0x1E,// 9<br />0x00, 0x36, 0x36, 0x00, 0x00,// :<br />0x00, 0x56, 0x36, 0x00, 0x00,// ;<br />0x00, 0x08, 0x14, 0x22, 0x41,// &lt;<br />0x14, 0x14, 0x14, 0x14, 0x14,// =<br />0x41, 0x22, 0x14, 0x08, 0x00,// &gt;<br />0x02, 0x01, 0x51, 0x09, 0x06,// ?<br />0x32, 0x49, 0x79, 0x41, 0x3E,// @<br />0x7E, 0x11, 0x11, 0x11, 0x7E,// A<br />0x7F, 0x49, 0x49, 0x49, 0x36,// B<br />0x3E, 0x41, 0x41, 0x41, 0x22,// C<br />0x7F, 0x41, 0x41, 0x22, 0x1C,// D<br />0x7F, 0x49, 0x49, 0x49, 0x41,// E<br />0x7F, 0x09, 0x09, 0x01, 0x01,// F<br />0x3E, 0x41, 0x41, 0x51, 0x32,// G<br />0x7F, 0x08, 0x08, 0x08, 0x7F,// H<br />0x00, 0x41, 0x7F, 0x41, 0x00,// I<br />0x20, 0x40, 0x41, 0x3F, 0x01,// J<br />0x7F, 0x08, 0x14, 0x22, 0x41,// K<br />0x7F, 0x40, 0x40, 0x40, 0x40,// L<br />0x7F, 0x02, 0x04, 0x02, 0x7F,// M<br />0x7F, 0x04, 0x08, 0x10, 0x7F,// N<br />0x3E, 0x41, 0x41, 0x41, 0x3E,// O<br />0x7F, 0x09, 0x09, 0x09, 0x06,// P<br />0x3E, 0x41, 0x51, 0x21, 0x5E,// Q<br />0x7F, 0x09, 0x19, 0x29, 0x46,// R<br />0x46, 0x49, 0x49, 0x49, 0x31,// S<br />0x01, 0x01, 0x7F, 0x01, 0x01,// T<br />0x3F, 0x40, 0x40, 0x40, 0x3F,// U<br />0x1F, 0x20, 0x40, 0x20, 0x1F,// V<br />0x7F, 0x20, 0x18, 0x20, 0x7F,// W<br />0x63, 0x14, 0x08, 0x14, 0x63,// X<br />0x03, 0x04, 0x78, 0x04, 0x03,// Y<br />0x61, 0x51, 0x49, 0x45, 0x43,// Z<br />0x00, 0x00, 0x7F, 0x41, 0x41,// &#91;<br />0x02, 0x04, 0x08, 0x10, 0x20,// &quot;\&quot;<br />0x41, 0x41, 0x7F, 0x00, 0x00,// &#93;<br />0x04, 0x02, 0x01, 0x02, 0x04,// ^<br />0x40, 0x40, 0x40, 0x40, 0x40,// _<br />0x00, 0x01, 0x02, 0x04, 0x00,// `<br />0x20, 0x54, 0x54, 0x54, 0x78,// a<br />0x7F, 0x48, 0x44, 0x44, 0x38,// b<br />0x38, 0x44, 0x44, 0x44, 0x20,// c<br />0x38, 0x44, 0x44, 0x48, 0x7F,// d<br />0x38, 0x54, 0x54, 0x54, 0x18,// e<br />0x08, 0x7E, 0x09, 0x01, 0x02,// f<br />0x08, 0x14, 0x54, 0x54, 0x3C,// g<br />0x7F, 0x08, 0x04, 0x04, 0x78,// h<br />0x00, 0x44, 0x7D, 0x40, 0x00,// i<br />0x20, 0x40, 0x44, 0x3D, 0x00,// j<br />0x00, 0x7F, 0x10, 0x28, 0x44,// k<br />0x00, 0x41, 0x7F, 0x40, 0x00,// l<br />0x7C, 0x04, 0x18, 0x04, 0x78,// m<br />0x7C, 0x08, 0x04, 0x04, 0x78,// n<br />0x38, 0x44, 0x44, 0x44, 0x38,// o<br />0x7C, 0x14, 0x14, 0x14, 0x08,// p<br />0x08, 0x14, 0x14, 0x18, 0x7C,// q<br />0x7C, 0x08, 0x04, 0x04, 0x08,// r<br />0x48, 0x54, 0x54, 0x54, 0x20,// s<br />0x04, 0x3F, 0x44, 0x40, 0x20,// t<br />0x3C, 0x40, 0x40, 0x20, 0x7C,// u<br />0x1C, 0x20, 0x40, 0x20, 0x1C,// v<br />0x3C, 0x40, 0x30, 0x40, 0x3C,// w<br />0x44, 0x28, 0x10, 0x28, 0x44,// x<br />0x0C, 0x50, 0x50, 0x50, 0x3C,// y<br />0x44, 0x64, 0x54, 0x4C, 0x44,// z<br />0x00, 0x08, 0x36, 0x41, 0x00,// {<br />0x00, 0x00, 0x7F, 0x00, 0x00,// |<br />0x00, 0x41, 0x36, 0x08, 0x00,// }<br />0x08, 0x08, 0x2A, 0x1C, 0x08,// -&gt;<br />0x08, 0x1C, 0x2A, 0x08, 0x08 // &lt;-<br />};<br />//[/syntax]<br /><br />móc tworzyć dowolny napis.<br /><br />Taki sposób jak Ty przedstawiłeś z fontami też jest ok. ale fonty są bardziej pracochłonne - chyba <br />Chodzi też o to żebym mógł podmienić napis w trakcie wyświetlania no ale z tym to sobie poradzę - mam nadzieję  <img src="https://forum.atnel.pl/images/smilies/icon_rolleyes.gif" alt=":roll:" title="Udaje, że to nie on" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4651">mczarny</a> — 8 cze 2015, o 17:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2015-06-07T21:22:05+01:00</updated>
<published>2015-06-07T21:22:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131209#p131209</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131209#p131209"/>
<title type="html"><![CDATA[Re: Mam dość matryc led]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131209#p131209"><![CDATA[
Trochę bym zmienił organizację danych, aby łatwiej manipulować buforem wyświetlacza:<br />[syntax=c]uint32_t display&#91;8&#93;={<br />0x89cf3e88,<br />0xda28a090,<br />0xaa28a0a0,<br />0x8bef38c0,<br />0x8a2a20a0,<br />0x8a292090,<br />0x8a28be88,<br />0x00000000<br />};<br /><br />void Send_Row(uint32_t row)<br />{<br />   Send_SPI( (uint8_t)(row&gt;&gt;24) );<br />   Send_SPI( (uint8_t)(row&gt;&gt;16) );<br />   Send_SPI( (uint8_t)(row&gt;&gt;8) );<br />   Send_SPI( (uint8_t)(row) );<br />}<br /><br />ISR(TIMER0_COMP_vect)<br />{<br />   const static uint8_t multiplex_tablica1234&#91;&#93; PROGMEM = {~ROW1,~ROW2,~ROW3,~ROW4,255,255,255,255 };<br />   const static uint8_t multiplex_tablica5678&#91;&#93; PROGMEM = {255,255,255,255,~ROW5,~ROW6,~ROW7,~ROW8 };<br />   static uint8_t licznik = 0;<br />   Row_Off();<br />   Send_Row(display&#91;licznik&#93;);<br />   ROWPORT1234 = (ROWPORT1234 &amp; ~ROW1234_MASK) | (pgm_read_byte(&amp;multiplex_tablica1234&#91;licznik&#93;) &amp; ROW1234_MASK);<br />   ROWPORT5678 = (ROWPORT5678 &amp; ~ROW5678_MASK) | (pgm_read_byte(&amp;multiplex_tablica5678&#91;licznik&#93;) &amp; ROW5678_MASK);<br />   licznik++;<br />   licznik &amp;= 0x07;<br />}[/syntax]<br /><br />Należy wyjść od najprostszych funkcji:<br />[syntax=c]void setPixel(uint8_t x, uint8_t y) //lewy górny róg to 0,0<br />{<br />   y &amp;= 7; //ograniczenie<br />   x &amp;= 31; //ograniczenie<br />   display&#91;y&#93; |= (1UL&lt;&lt;x);<br />}<br /><br />void clearPixel(uint8_t x, uint8_t y) //lewy górny róg to 0,0<br />{<br />   y &amp;= 7; //ograniczenie<br />   x &amp;= 31; //ograniczenie<br />   display&#91;y&#93; &amp;= ~(1UL&lt;&lt;x);<br />}[/syntax]<br />Potem znak:<br />[syntax=c]void putChar(uint8_t x, char c)<br />{<br />   uint8_t charRow;<br />   for(uint8_t row = 0; row &lt; 8; ++row) //8 wierszy<br />   {<br />      charRow = pgm_read_byte(tab + (c - START_CHAR)*8 + row); //tab - tablica czcionek, START_CHAR - 1 znak w tablicy<br />      for(uint8_t col = 0; col &lt; 5; ++col) //5 pikseli w wierszu<br />      {<br />         if(charRow &amp; (1&lt;&lt;col)) setPixel(x + col, row); //jak 1 to ustaw odpowiedni piksel<br />         else clearPixel(x + col, row);<br />      }      <br />   }<br />}[/syntax]<br />A na końcu napis:<br />[syntax=c]void putString(uint8_t x, char * s)<br />{<br />   while(*s)<br />   {<br />      putChar(x, *s++);<br />      x += 6;<br />   }<br />}[/syntax]<br />Przykładowa tablica:<br />[syntax=c]#define START_CHAR !<br />const uint8_t tab&#91;&#93; PROGMEM = {<br />//!<br />0b00100,<br />0b00100,<br />0b00100,<br />0b00100,<br />0b00100,<br />0b00000,<br />0b00100,<br />0b00000,<br />//&quot;<br />0b01010,<br />0b01010,<br />0b00000,<br />0b00000,<br />0b00000,<br />0b00000,<br />0b00000,<br />0b00000,<br />//...<br /><br />//M<br />0b10001,<br />0b11011,<br />0b10101,<br />0b10001,<br />0b10001,<br />0b10001,<br />0b10001,<br />0b00000,<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 7 cze 2015, o 21:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[1bobik1]]></name></author>
<updated>2015-06-07T20:41:46+01:00</updated>
<published>2015-06-07T20:41:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131201#p131201</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131201#p131201"/>
<title type="html"><![CDATA[Re: Mam dość matryc led]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131201#p131201"><![CDATA[
[syntax=c]void LCD_writeChar (unsigned char ch)<br />{<br />   unsigned char j;<br /><br />   for(j=0; j&lt;5; j++)<br />     LCD_writeData(smallFont &#91;(ch-32)*5 + j&#93;);<br />     LCD_writeData(0x00);<br /><br />}[/syntax]<br /><br />Przykład z biblioteki do wyświetlacza z nokii 3310<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=464">1bobik1</a> — 7 cze 2015, o 20:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mczarny]]></name></author>
<updated>2015-06-07T19:10:00+01:00</updated>
<published>2015-06-07T19:10:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131178#p131178</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131178#p131178"/>
<title type="html"><![CDATA[Mam dość matryc led]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11944&amp;p=131178#p131178"><![CDATA[
witam<br />piszę w dziale rybnym bo liczę na to, że Ktoś się pochyli nad moim problemem.<br /><br />Zmontowałem sobie matrycę led składającą się z czterech modułów czyli 32x8<br />Do sterowania wierszy trochę nieszczęśliwie wybrałek kolejność pinów w procku i nie mogłem tego multipleksować za pomocą prostego przesunięcia bitowego tak jak opisuje to P.Mirek w BB, ale pomógł mi Kol.<strong>mokrowski</strong> za co wielkie dzięki.<br />Napisałem obsługę przerwania i prostą funkcję wysyłającą napis na matrycę i to działa:<br /><a href="http://forum.atnel.pl/_obrazki/o/4651/52629d8d8bd1701582da6333f4046015.JPG"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/4651/52629d8d8bd1701582da6333f4046015.JPG" alt="Obrazek" /></a><br /><br />fragmenty kodu<br />funkcje wysyłające napis do matrycy<br />[syntax=c]void Send_SPI(uint8_t a )                  //funkcja wysyłająca pojedynczy bajt<br />{<br />SPDR=a;<br />while(!(SPSR&amp;(1&lt;&lt;SPIF)));<br /><br />LATCH_ON;<br />LATCH_OFF;<br />}<br /><br /><br /><br />void Send_Napis(uint8_t *napis,uint8_t col)  //funkcja wysyłająca dowolną ilosć bajtów<br />{<br />  for(uint8_t i=0; i&lt;col; i++)<br />{<br /><br />  Send_SPI(*napis++);<br /><br />}<br />}[/syntax]<br /><br />obsługa przerwania<br /><br />[syntax=c]ISR(TIMER0_COMP_vect)<br /><br />{<br /><br /><br />const static uint8_t multiplex_tablica1234&#91;&#93; PROGMEM = {~ROW1,~ROW2,~ROW3,~ROW4,255,255,255,255 };<br /><br />    const static uint8_t multiplex_tablica5678&#91;&#93; PROGMEM = {255,255,255,255,~ROW5,~ROW6,~ROW7,~ROW8 };<br /><br /><br />static uint8_t licznik = 0;<br /><br /><br />      Row_Off();<br /><br /><br /><br /><br /><br /><br />                 if(licznik==0)<br />                     Send_Napis(napis0,4);<br />                 if(licznik==1)<br />                     Send_Napis(napis1,4);<br />                 if(licznik==2)<br />                   Send_Napis(napis2,4);<br />                 if(licznik==3)<br />                   Send_Napis(napis3,4);<br />                 if(licznik==4)<br />                   Send_Napis(napis4,4);<br />                 if(licznik==5)<br />                  Send_Napis(napis5,4);<br />                 if(licznik==6)<br />                  Send_Napis(napis6,4);<br />                 if(licznik==7)<br />                  Send_Napis(napis7,4);<br /><br /><br /><br />ROWPORT1234 = (ROWPORT1234 &amp; ~ROW1234_MASK) | (pgm_read_byte(&amp;multiplex_tablica1234&#91;licznik&#93;) &amp; ROW1234_MASK);<br />ROWPORT5678 = (ROWPORT5678 &amp; ~ROW5678_MASK) | (pgm_read_byte(&amp;multiplex_tablica5678&#91;licznik&#93;) &amp; ROW5678_MASK);<br /><br />       licznik++;<br />       licznik &amp;= 0x07;<br />}[/syntax]<br /><br /><br />i zdefiniowane tablice poszczególnych wierszy<br /><br />[syntax=c]uint8_t napis0&#91;&#93;={0x89,0xcf,0x3e,0x88};<br /> uint8_t napis1&#91;&#93;={0xda,0x28,0xa0,0x90};<br /> uint8_t napis2&#91;&#93;={0xaa,0x28,0xa0,0xa0};<br /> uint8_t napis3&#91;&#93;={0x8b,0xef,0x38,0xc0};<br /> uint8_t napis4&#91;&#93;={0x8a,0x2a,0x20,0xa0};<br /> uint8_t napis5&#91;&#93;={0x8a,0x29,0x20,0x90};<br /> uint8_t napis6&#91;&#93;={0x8a,0x28,0xbe,0x88};<br /> uint8_t napis7&#91;&#93;={0x00,0x00,0x00,0x00};[/syntax]<br /><br /><br /><br />Wiem, że wyświetlanie w ten sposób to masakra jak powiedzą zawodowcy.<br />Potrafię stworzyć tablicę fontów, ale za cholerę nie wiem jak napisać funkcję która będzie mi pobierała dany znak z tablicy i pozwalała go wyświetlić na matrycy.<br />Pomożecie? <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br /><br />pozdrawiam Marek<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4651">mczarny</a> — 7 cze 2015, o 19:10</p><hr />
]]></content>
</entry>
</feed>