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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-05-17T21:23:18+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=8&amp;t=854&amp;mode</id>
<entry>
<author><name><![CDATA[svistak2000]]></name></author>
<updated>2015-05-17T21:23:18+01:00</updated>
<published>2015-05-17T21:23:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=854&amp;p=129440#p129440</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=129440#p129440"/>
<title type="html"><![CDATA[Re: Matryca LED 8X8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=129440#p129440"><![CDATA[
Ok dzięki za pomoc! <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> W takim razie muszę się wyposażyć w te układy sct2110. Muszę teraz przerobić trochę układ w takim razie. Zgodnie z zaleceniami do sterowania kolumn użyję tych driverów sct2110, a wiersze będę multipleksował tranzystorami PNP bezpośrednio z portu uC. Część cyfrową zasilę 5V, a część zasilającą matrycę myślę że 7V wystarczy. Jutro się wezmę za przeróbki.<br /> Dodatkowo do matrycy planuję dorobić bluetooth rtc i czujnik temperatury i jak czasu starczy to może jakiś program na android <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1016">svistak2000</a> — 17 maja 2015, o 21:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mczarny]]></name></author>
<updated>2015-05-17T19:07:31+01:00</updated>
<published>2015-05-17T19:07:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=854&amp;p=129433#p129433</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=129433#p129433"/>
<title type="html"><![CDATA[Re: Matryca LED 8X8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=129433#p129433"><![CDATA[
cześć<br /><br />układy z serii SCT mają tą przewagę nad 74595, że nie musisz dodatkowo stosować tranzystorów lub driverów z serii ULN<br /><br />Część cyfrowa jest zasilana tradycyjnie z 5V natomiast na drivery możesz podać napięcie w bardzo szerokim zakresie.<br />Ja swoje matryce zasilam z 3V żeby ograniczyć straty mocy na tranzystorach sterujących wierszami, ale mogę tam podać nawet 17V (dla SCT2110)<br />Dodatkowo odpadają Ci rezystory ograniczające prąd bo prąd diod ustawiasz jednym rezystorem dla wszystkich ośmiu wyjść<br /><br />Rozdzielenie zasilania dla części cyfrowej i diod to jak najbardziej dobry pomysł (sam tak zaprojektowałem płytkę)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4651">mczarny</a> — 17 maja 2015, o 19:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Wirnick]]></name></author>
<updated>2015-05-17T18:40:58+01:00</updated>
<published>2015-05-17T18:40:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=854&amp;p=129430#p129430</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=129430#p129430"/>
<title type="html"><![CDATA[Re: Matryca LED 8X8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=129430#p129430"><![CDATA[
<div class="quotetitle">svistak2000 napisał(a):</div><div class="quotecontent"><br />W przyszłości zaprojektowałbym oddzielne zasilanie części cyfrowej i części zasilającej matrycy (2 napięcia 5V i 7V). Tylko teraz mi powiedzcie czy dobrze myślę?<br /></div><br />I tak najlepiej już teraz rozpocznij od narysowania schematu. Po naszych  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />  uwagach, przeniesiesz go na płytkę.<br />Sterowanie katod to sprawa prosta. Przy anodach układ się rozrośnie o kolejne tranzystory(lub diody Zenera) oraz o dodatkowe oporniki.<br />Wydaje mi się, że te podstawy dopasowania wyjść cyfrowych do wyższych napięć warto pokazać.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9272">Wirnick</a> — 17 maja 2015, o 18:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[svistak2000]]></name></author>
<updated>2015-05-17T18:02:50+01:00</updated>
<published>2015-05-17T18:02:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=854&amp;p=129427#p129427</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=129427#p129427"/>
<title type="html"><![CDATA[Re: Matryca LED 8X8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=129427#p129427"><![CDATA[
tak teraz myślę sobie na spokojnie: całość zasilam 5V... w matrycy jeden piksel to dwie czerwone diody LED czyli spadek napięcia 4,4V, plus 2 tranzystory czyli kolejny spadek napięcia jakieś 1,2V. W sumie mam większy TEORETYCZNY spadek napięcia(5,6V) niż całkowite zasilanie (5V)... Czybym już sobie odpowiedział na swoje pytanie? <br />I teraz jak rozwiązać ten problem? Mógłbym rzeczywiście podnieść napięcie zasilania tranzystorów które sterują matrycą na wyższe (przykładowo 7V) a zasilanie części cyfrowej oddzielić 4-oma diodami połączonymi szeregowo, wtedy napięcie części cyfrowej wynosiłoby 4,6V. (Czyli powinno być ok.) W przyszłości zaprojektowałbym oddzielne zasilanie części cyfrowej i części zasilającej matrycy (2 napięcia 5V i 7V). Tylko teraz mi powiedzcie czy dobrze myślę?<br /><br />P.S.<br />O tym układzie sct już myślałem tylko że w wersji sct-2024. Tylko że jeżeli problem tkwi w tym co napisałem powyżej i co napisał kolega &quot;Wirnick&quot; to chyba nawet sct tutaj nie pomoże... No chyba że się mylę, to proszę mnie poprawić <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1016">svistak2000</a> — 17 maja 2015, o 18:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Wirnick]]></name></author>
<updated>2015-05-16T09:08:20+01:00</updated>
<published>2015-05-16T09:08:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=854&amp;p=129275#p129275</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=129275#p129275"/>
<title type="html"><![CDATA[Re: Matryca LED 8X8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=129275#p129275"><![CDATA[
<div class="quotetitle">svistak2000 napisał(a):</div><div class="quotecontent"><br />Jednak mam nadal problem ze stosunkowo słabą jasnośćią diod LED. Zastosowałem rezystory 33ohm na kolumnach. Czy mam je zmniejszyć? Wszystko zasilam 5V z zasilacza laboratoryjnego (3A)<br />Drugi problem to taki że nie wszystki diody mają równą jasność świecenia.<br /></div><br />Myślę tak: 2*led RED to już 5V - praca na punkcie przewodzenia + spadki napięcia na R i tranzystorach, daje taki efekt. <br />Ja bym dał tranzystory pnp na zasilanie anod led i podniósł napięcie zasilania o 0,5V(mniej niż napięcie bazy). Część cyfrową zasilił przez diodę(napięcie przewodzenia 0,6V). Kolumny(katody) sterowane przez npn(do GND).<br />Zdaję sobie sprawę, że jest to rozwiązanie doraźne.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9272">Wirnick</a> — 16 maja 2015, o 09:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mczarny]]></name></author>
<updated>2015-05-16T08:12:45+01:00</updated>
<published>2015-05-16T08:12:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=854&amp;p=129270#p129270</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=129270#p129270"/>
<title type="html"><![CDATA[Re: Matryca LED 8X8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=129270#p129270"><![CDATA[
cześć<br />Już któryś raz piszę o tym, że do matryc trzeba stosować układy dedykowane jako drivery LED<br />SCT2110 to rejestr przesuwny plus drivery mocy ( 8 wyjść) w jednym - odpadają rezystory i problemy z jasnością świecenia<br /><br />no, ale jak ktoś lubi komplikować sobie życie.....<br />pozdrawiam Marek<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4651">mczarny</a> — 16 maja 2015, o 08:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[svistak2000]]></name></author>
<updated>2015-05-15T12:04:31+01:00</updated>
<published>2015-05-15T12:04:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=854&amp;p=129218#p129218</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=129218#p129218"/>
<title type="html"><![CDATA[Re: Matryca LED 8X8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=129218#p129218"><![CDATA[
Hmmm na bazach tranzystorów PNP i NPN mam rezystory 1K. Więc nie powinno być problemów. wczoraj zrobiłem eksperyment, tzn wywaliłem rejestr przesuwny (74hc595) i zapalałem diody tranzystorami. Wszystko świeciło jasno. Pod dodaniu rejestru przesuwnego dzieją się cuda. Rejestr przesuwny ma 70mA wydajności prądowej. Więc przy sterowaniu 5-cioma tranzystorami (BO TYLE JEST TRANZYSTORÓW NA KOLUMNACH) nie powinno być problemów. Spróbuje jeszcze zastosować mosfety (bo one są sterowane napięciowo). Dziwny przypadek ogólnie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1016">svistak2000</a> — 15 maja 2015, o 12:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2015-05-14T21:35:32+01:00</updated>
<published>2015-05-14T21:35:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=854&amp;p=129198#p129198</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=129198#p129198"/>
<title type="html"><![CDATA[Re: Matryca LED 8X8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=129198#p129198"><![CDATA[
A może te tranzystory co sterują wierszami wychodzą ze stanu nasycenia. Jeśli rezystory na bazie są zbyt duże to prąd kolektora ze wzoru IC = <em>B</em> * IB  jest mały i to na tyle mały, że prąd większej ilości LED byłby większy to napięcie UCE wzrośnie i jasność spadnie.<br /><br /><em>B</em> = hFE ~= 300, ale zależy od tranzystora<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 14 maja 2015, o 21:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[svistak2000]]></name></author>
<updated>2015-05-14T11:51:47+01:00</updated>
<published>2015-05-14T11:51:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=854&amp;p=129113#p129113</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=129113#p129113"/>
<title type="html"><![CDATA[Re: Matryca LED 8X8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=129113#p129113"><![CDATA[
Multipleksuje wiersze matrycy. Rezystory mam wpięte od strony katod diod (na kolumnach). Więc wydaję mi się że raczej jest poprawnie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1016">svistak2000</a> — 14 maja 2015, o 11:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2015-05-11T20:25:22+01:00</updated>
<published>2015-05-11T20:25:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=854&amp;p=128892#p128892</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=128892#p128892"/>
<title type="html"><![CDATA[Re: Matryca LED 8X8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=128892#p128892"><![CDATA[
<div class="quotetitle">svistak2000 napisał(a):</div><div class="quotecontent"><br />Drugi problem to taki że nie wszystki diody mają równą jasność świecenia. Tzn jeżeli w jednym wierszu zapalone jest więcej niż jedna dioda to ten wiersz świeci słabiej od wiersza w którym zapalona jest tylko jedna dioda...<br /></div><br /><br />Rezystory ograniczające prąd powinny być tam, gdzie zapalasz od 1 do n LED w tym samym czasie. Wpięcie rezystora na linie które są multipleksowane jest błędem. Zobacz jak masz u siebie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 11 maja 2015, o 20:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[svistak2000]]></name></author>
<updated>2015-05-11T16:52:42+01:00</updated>
<published>2015-05-11T16:52:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=854&amp;p=128853#p128853</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=128853#p128853"/>
<title type="html"><![CDATA[Re: Matryca LED 8X8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=128853#p128853"><![CDATA[
Ok, udało mi się. Zmieniłem w programie trochę funkcje odpowiadającą za przerwanie:<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &quot;font5x8.h&quot;<br /><br />//Te piny użyłem do sterowania rejestrem:<br />#define ShiftPort       PORTC<br />#define ShiftDDR        DDRC<br />#define LatchPin        (1 &lt;&lt; 0)<br />#define DataPin         (1 &lt;&lt; 1)<br />#define ClkPin          (1 &lt;&lt; 2)<br />#define OE                  (1 &lt;&lt; 3)<br /><br />//tymi pinami steruje wierszami:<br />#define RowPort         PORTD<br />#define RowDDR          DDRD<br />#define RowPin0         (1 &lt;&lt; 0) //ustawianie pinów jako wyjcia<br />#define RowPin1         (1 &lt;&lt; 1)<br />#define RowPin2         (1 &lt;&lt; 2)<br />#define RowPin3         (1 &lt;&lt; 3)<br />#define RowPin4         (1 &lt;&lt; 4)<br />#define RowPin5         (1 &lt;&lt; 5)<br />#define RowPin6         (1 &lt;&lt; 6)<br />#define RowPin7         (1 &lt;&lt; 7)<br /><br />// dla łatwiejszego zrozumienia w kodzie używam oznaczeń anglojezycznych w nazwach<br />// row = wiersze<br />// col = kolumny<br />// Kolumny sa sterowane przez rejestr przesuwny<br /><br /><br /><br />#define ScrollSpeed     80       // szybkość przewijania<br /><br />typedef unsigned char u8;<br />typedef unsigned int u16;<br /><br />u8 row_track = 0;<br /><br />volatile u8 row_buffer&#91;8&#93; = { 0, 0, 0, 0, 0, 0, 0, 0 }; // bufor dla wierszy (row)<br /><br />static const char PROGMEM Messages1&#91;&#93; = { &quot;VACA GORDA !&quot; };<br />static const char PROGMEM Messages2&#91;&#93; = { &quot;&quot; };<br /><br />void Delay_ms(int cnt)  //Funkcja podaje opóźnienie w milisekundach - jest zależna od F-CPU<br />{<br />  while (cnt--&gt;0) _delay_ms(1);<br />}<br /><br />static inline void InitPorts(void)      // Funkcja uzyta tylko raz w celu zainicjowania pinów<br />{<br />  ShiftDDR |= (LatchPin | ClkPin | DataPin | OE);       // ustawienie pinów controlnych rejestru jako wyjcia<br />  RowDDR |= (RowPin0 | RowPin1 | RowPin2 | RowPin3 | RowPin4 | RowPin5 | RowPin6 | RowPin7); // Ustawienie pinów wierszy jako wyjcie<br /><br />  ShiftPort |= OE; //shift port sterowany &quot;jedynkami&quot;<br />  RowPort |=(RowPin0); //row port sterowany &quot;jedynkami&quot;<br /><br />  ShiftPort |= LatchPin;                                //Ustawienie Zatrzasku na stan wysoki (hi)<br />  ShiftPort &amp;= ~(ClkPin | DataPin);     //Ustawienie ClkPin i DataPin na stan niski (low)<br />}<br /><br />static inline void InitTimers(void)         // Funkcja ustawia Timer  --- uzyta tylko raz<br />{<br />  TCCR1B |= 1&lt;&lt;WGM12 | 1&lt;&lt;CS11 | 1&lt;&lt;CS10;    //Start timer1 w trybie CTC prescaler 64<br />  TIMSK |= 1&lt;&lt;OCIE1A;                                        //właczenie porównania dla przerwania<br />  OCR1A = 20;                                                //wartość porównania ustawiona na  1 mSec<br />  sei();                                                             //Właczenie przerwań<br />}<br /><br />void Shift_Int(u8 shiftData)                           // Funkcja przesuwania danych<br />{<br />  ShiftPort &amp;= ~(LatchPin | ClkPin | DataPin);     //Wszystkie piny na (LOW) - LatchPin w stanie LOW = zapis<br /><br />  for (char i=0; i&lt;8; i++)<br />  {<br />    ShiftPort &amp;= ~ClkPin;                                          //UStawienie CLKPin na stan LOW<br /><br />    if (shiftData &amp; (1&lt;&lt;i)) ShiftPort |= DataPin;  //Jeśli aktualny bit = 1 to ustawia DataPin na HI<br />    else ShiftPort &amp;= ~DataPin;                                //Jeśli aktualny bit = 0 to ustawia DataPin na LOW<br /><br />    ShiftPort |= ClkPin;                                           //Ustawienie CLKPin na HI  = incrementacja rejestru<br />    ShiftPort &amp;= ~DataPin;                                         //UStawienie DataPin na LOW = przygotowanie do nastepnego zapisu<br />  }<br /><br />  ShiftPort |= LatchPin;                                        //Ustawienie Zatrzasku na HI sygnalizuje koniec zapisu<br />  ShiftPort &amp;= ~(ClkPin | DataPin);                     //Reset ClkPin i DataPin czyli dla obu stan niski (low)<br />}<br /><br />void each_led(void)                     //Ta funkcja włacza diody pojedyńczo<br />{<br />  for (u8 j=0; j&lt;8; j++)<br />  {<br />    cli();<br />    row_buffer&#91;j&#93; = 0x0001;<br />    sei();<br />    Delay_ms(50);<br />    for (char i=0; i&lt;8; i++)<br />    {<br />      cli();<br />      row_buffer&#91;j&#93; &lt;&lt;= 1;<br />      sei();<br />      Delay_ms(50);<br />    }<br />    cli();<br />    row_buffer&#91;j&#93; = 0x0000;<br />    sei();<br />  }<br />}<br /><br />void Write_Char(u8 letter)              //Funkcja zapisuje jeden znak do matrycy (bez przewijania)<br />{<br /><br /><br />  //litery sa pobierane do tablicy font5x8&#91;&#93; z pliku (font5x8.h)<br />  letter -= 32;                                         //Ustawienie indeksów tablicy na odpowiednie znaki<br />  char temp;<br />  for (char i=0; i&lt;5; i++)                              //odczyt jednej kolumny znaku<br />  {<br />    temp = pgm_read_byte((char *)((int)font5x8 + (5 * letter) + i));    //Pobranie kolumny z pamięci<br />    for (char j=0; j&lt;8; j++)<br />    {<br />      //Zapis bitów do odpowiednich komórek tablicy (row_buffer)<br />      if (temp &amp; (1&lt;&lt;j)) row_buffer&#91;7-j&#93; |= 1&lt;&lt;(4-i);<br />      else row_buffer&#91;7-j&#93; &amp;= ~(1&lt;&lt;(4-i));<br />    }<br />  }<br />}<br /><br />void shift_row_buffer_left(u8 columns)  //Funkcja przesuwa wszystkie wiersze w LEWO<br />{<br />  for (u8 buffer_index=0; buffer_index&lt;8; buffer_index++)<br />  {<br />    row_buffer&#91;buffer_index&#93; &lt;&lt;= columns;<br />  }<br />}<br /><br />void Scroll_Char (char myChar)  //Funkcja przewija Znak na matrycy od PRAWEJ do LEWEJ<br />{<br />  myChar -= 32;                 //Ustawienie wartości na odpowiednia z indexem<br />  char temp;<br />  shift_row_buffer_left(1);     //Wstawianie pustej kolumny przed każdą nową literę<br />  Delay_ms(ScrollSpeed);<br />  for (u8 i=0; i&lt;5; i++)<br />  {<br />    shift_row_buffer_left(1);<br />    temp = pgm_read_byte((char *)((int)font5x8 + (5 * myChar) + i));    //Pobranie nowej kolumny<br />    for (u8 j=0; j&lt;8; j++)<br />    {<br />      if (temp &amp; (1&lt;&lt;j)) row_buffer&#91;7-j&#93; |= 1&lt;&lt;0;<br />      else row_buffer&#91;7-j&#93; &amp;= ~(1&lt;&lt;0);<br />    }<br />    Delay_ms(ScrollSpeed);<br />  }<br />}<br />void Scroll_String(char * myString)     //Funkcja przewija po ekranie zadany napis<br />{<br />  while (*myString)                     //Powtarzanie aż zostanie napodkany znak NULL<br />  {<br />    Scroll_Char(*myString);             //Przewijanie nastepnego znaku<br />    ++myString;<br /><br />  }<br />}<br /><br />void Scroll_String_P(const char * myString)  //Funkcja odczytuje łańcuch z pamieci i wyswietla go na matrycy<br />{<br />  while (pgm_read_byte(myString))<br />  {<br />    Scroll_Char(pgm_read_byte(myString));<br />    ++myString;<br />  }<br />}<br /><br />void Scroll_Clear(void)                 //Funkcja czyści ekran<br />                                //w zasadzie przewijam wszystko w lewo<br />{<br />  for(u8 i=0; i&lt;8; i++)<br />  {<br />    shift_row_buffer_left(1);<br />    Delay_ms(ScrollSpeed);<br />  }<br />}<br /><br />int main(void)<br />{<br />  InitPorts();<br />  InitTimers();<br />  while(1)<br />  {<br />    //Scroll_String(&quot;POZDRAWIAM !&quot;);      //Troche mało optymalne wyświetlanie - zuzywa sporo ramu<br />    //Scroll_Clear();                             //Przewijanie w lewo aż do wyczyszczenia<br />    Scroll_String_P(Messages1);         //Wyswietlanie ciągu z pamieci programu -- zuzywa mało ramu<br />    Scroll_Clear();<br />    Scroll_String_P(Messages2);<br />   // Scroll_Clear();<br /><br />    //each_led();<br /><br />   // for (char x=33; x&lt;128; x++)         //Zapis znaków ascii<br />  //  {<br />   //   Write_Char(x);<br />   //   Delay_ms(500);<br />  //  }<br />  }<br />}<br /><br />ISR(TIMER1_COMPA_vect)                          //Interrupt Service Routine -- praca w przerwaniu<br />{<br />  if(++row_track == 8) row_track = 0;           //Śledzenie wiersza (ROW)<br />  Shift_Int(row_buffer&#91;row_track&#93;);             //przewijanie danych do nastepnego wiersza<br /><br />  ShiftPort &amp;= ~OE;                             //Uzyłem w celu zapobiegania zakłuceniom<br />                                //moze lepiej by było dać tu NOP ??<br />  if (row_track == 0)                           //Wyłaczenie controli<br />  {<br />    RowPort |= (1&lt;&lt;7);                         //Jeśli ROW0 to zatrzymaj na ROW7  -- chyba wiadomo dlaczego<br />  }<br />  else<br />  {<br />    RowPort |= (1&lt;&lt;(row_track-1));             //Wyłacz poprzedni wiersz<br />  }<br /><br />  ShiftPort |= LatchPin;<br />  RowPort &amp;= ~(1&lt;&lt;row_track);<br />  ShiftPort |= OE;<br />}[/syntax]<br /><br />Jednak mam nadal problem ze stosunkowo słabą jasnośćią diod LED. Zastosowałem rezystory 33ohm na kolumnach. Czy mam je zmniejszyć? Wszystko zasilam 5V z zasilacza laboratoryjnego (3A)<br />Drugi problem to taki że nie wszystki diody mają równą jasność świecenia. Tzn jeżeli w jednym wierszu zapalone jest więcej niż jedna dioda to ten wiersz świeci słabiej od wiersza w którym zapalona jest tylko jedna dioda...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1016">svistak2000</a> — 11 maja 2015, o 16:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[svistak2000]]></name></author>
<updated>2015-05-11T15:26:20+01:00</updated>
<published>2015-05-11T15:26:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=854&amp;p=128846#p128846</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=128846#p128846"/>
<title type="html"><![CDATA[Re: Matryca LED 8X8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=128846#p128846"><![CDATA[
Witam!<br />Czy mógłby mi ktoś pomóc przerobić ten program (kolegi sunRiver):<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &quot;font5x8.h&quot;<br /><br />//Te piny użyłem do sterowania rejestrem:<br />#define ShiftPort       PORTC<br />#define ShiftDDR        DDRC<br />#define LatchPin        (1 &lt;&lt; 0)<br />#define DataPin         (1 &lt;&lt; 1)<br />#define ClkPin          (1 &lt;&lt; 2)<br />#define OE                  (1 &lt;&lt; 3)<br /><br />//tymi pinami steruje wierszami:<br />#define RowPort         PORTD<br />#define RowDDR          DDRD<br />#define RowPin0         (1 &lt;&lt; 0) //ustawianie pinów jako wyjcia<br />#define RowPin1         (1 &lt;&lt; 1)<br />#define RowPin2         (1 &lt;&lt; 2)<br />#define RowPin3         (1 &lt;&lt; 3)<br />#define RowPin4         (1 &lt;&lt; 4)<br />#define RowPin5         (1 &lt;&lt; 5)<br />#define RowPin6         (1 &lt;&lt; 6)<br />#define RowPin7         (1 &lt;&lt; 7)<br /><br />// dla łatwiejszego zrozumienia w kodzie używam oznaczeń anglojezycznych w nazwach<br />// row = wiersze<br />// col = kolumny<br />// Kolumny sa sterowane przez rejestr przesuwny<br /><br /><br /><br />#define ScrollSpeed     80       // szybkość przewijania<br /><br />typedef unsigned char u8;<br />typedef unsigned int u16;<br /><br />u8 row_track = 0;<br /><br />volatile u8 row_buffer&#91;8&#93; = { 0, 0, 0, 0, 0, 0, 0, 0 }; // bufor dla wierszy (row)<br /><br />static const char PROGMEM Messages1&#91;&#93; = { &quot;VACA GORDA !&quot; };<br />static const char PROGMEM Messages2&#91;&#93; = { &quot;&quot; };<br /><br />void Delay_ms(int cnt)  //Funkcja podaje opóźnienie w milisekundach - jest zależna od F-CPU<br />{<br />  while (cnt--&gt;0) _delay_ms(1);<br />}<br /><br />static inline void InitPorts(void)      // Funkcja uzyta tylko raz w celu zainicjowania pinów<br />{<br />  ShiftDDR |= (LatchPin | ClkPin | DataPin | OE);       // ustawienie pinów controlnych rejestru jako wyjcia<br />  RowDDR |= (RowPin0 | RowPin1 | RowPin2 | RowPin3 | RowPin4 | RowPin5 | RowPin6 | RowPin7); // Ustawienie pinów wierszy jako wyjcie<br /><br />  ShiftPort |= OE; //shift port sterowany &quot;jedynkami&quot;<br />  RowPort |=(RowPin0); //row port sterowany &quot;jedynkami&quot;<br /><br />  ShiftPort |= LatchPin;                                //Ustawienie Zatrzasku na stan wysoki (hi)<br />  ShiftPort &amp;= ~(ClkPin | DataPin);     //Ustawienie ClkPin i DataPin na stan niski (low)<br />}<br /><br />static inline void InitTimers(void)         // Funkcja ustawia Timer  --- uzyta tylko raz<br />{<br />  TCCR1B |= 1&lt;&lt;WGM12 | 1&lt;&lt;CS11 | 1&lt;&lt;CS10;    //Start timer1 w trybie CTC prescaler 64<br />  TIMSK |= 1&lt;&lt;OCIE1A;                                        //właczenie porównania dla przerwania<br />  OCR1A = 9;                                                //wartość porównania ustawiona na  1 mSec<br />  sei();                                                             //Właczenie przerwań<br />}<br /><br />void Shift_Int(u8 shiftData)                           // Funkcja przesuwania danych<br />{<br />  ShiftPort &amp;= ~(LatchPin | ClkPin | DataPin);     //Wszystkie piny na (LOW) - LatchPin w stanie LOW = zapis<br /><br />  for (char i=0; i&lt;8; i++)<br />  {<br />    ShiftPort &amp;= ~ClkPin;                                          //UStawienie CLKPin na stan LOW<br /><br />    if (shiftData &amp; (1&lt;&lt;i)) ShiftPort |= DataPin;  //Jeśli aktualny bit = 1 to ustawia DataPin na HI<br />    else ShiftPort &amp;= ~DataPin;                                //Jeśli aktualny bit = 0 to ustawia DataPin na LOW<br /><br />    ShiftPort |= ClkPin;                                           //Ustawienie CLKPin na HI  = incrementacja rejestru<br />    ShiftPort &amp;= ~DataPin;                                         //UStawienie DataPin na LOW = przygotowanie do nastepnego zapisu<br />  }<br /><br />  ShiftPort |= LatchPin;                                        //Ustawienie Zatrzasku na HI sygnalizuje koniec zapisu<br />  ShiftPort &amp;= ~(ClkPin | DataPin);                     //Reset ClkPin i DataPin czyli dla obu stan niski (low)<br />}<br /><br />void each_led(void)                     //Ta funkcja włacza diody pojedyńczo<br />{<br />  for (u8 j=0; j&lt;8; j++)<br />  {<br />    cli();<br />    row_buffer&#91;j&#93; = 0x0001;<br />    sei();<br />    Delay_ms(50);<br />    for (char i=0; i&lt;8; i++)<br />    {<br />      cli();<br />      row_buffer&#91;j&#93; &lt;&lt;= 1;<br />      sei();<br />      Delay_ms(50);<br />    }<br />    cli();<br />    row_buffer&#91;j&#93; = 0x0000;<br />    sei();<br />  }<br />}<br /><br />void Write_Char(u8 letter)              //Funkcja zapisuje jeden znak do matrycy (bez przewijania)<br />{<br /><br /><br />  //litery sa pobierane do tablicy font5x8&#91;&#93; z pliku (font5x8.h)<br />  letter -= 32;                                         //Ustawienie indeksów tablicy na odpowiednie znaki<br />  char temp;<br />  for (char i=0; i&lt;5; i++)                              //odczyt jednej kolumny znaku<br />  {<br />    temp = pgm_read_byte((char *)((int)font5x8 + (5 * letter) + i));    //Pobranie kolumny z pamięci<br />    for (char j=0; j&lt;8; j++)<br />    {<br />      //Zapis bitów do odpowiednich komórek tablicy (row_buffer)<br />      if (temp &amp; (1&lt;&lt;j)) row_buffer&#91;7-j&#93; |= 1&lt;&lt;(4-i);<br />      else row_buffer&#91;7-j&#93; &amp;= ~(1&lt;&lt;(4-i));<br />    }<br />  }<br />}<br /><br />void shift_row_buffer_left(u8 columns)  //Funkcja przesuwa wszystkie wiersze w LEWO<br />{<br />  for (u8 buffer_index=0; buffer_index&lt;8; buffer_index++)<br />  {<br />    row_buffer&#91;buffer_index&#93; &lt;&lt;= columns;<br />  }<br />}<br /><br />void Scroll_Char (char myChar)  //Funkcja przewija Znak na matrycy od PRAWEJ do LEWEJ<br />{<br />  myChar -= 32;                 //Ustawienie wartości na odpowiednia z indexem<br />  char temp;<br />  shift_row_buffer_left(1);     //Wstawianie pustej kolumny przed każdą nową literę<br />  Delay_ms(ScrollSpeed);<br />  for (u8 i=0; i&lt;5; i++)<br />  {<br />    shift_row_buffer_left(1);<br />    temp = pgm_read_byte((char *)((int)font5x8 + (5 * myChar) + i));    //Pobranie nowej kolumny<br />    for (u8 j=0; j&lt;8; j++)<br />    {<br />      if (temp &amp; (1&lt;&lt;j)) row_buffer&#91;7-j&#93; |= 1&lt;&lt;0;<br />      else row_buffer&#91;7-j&#93; &amp;= ~(1&lt;&lt;0);<br />    }<br />    Delay_ms(ScrollSpeed);<br />  }<br />}<br />void Scroll_String(char * myString)     //Funkcja przewija po ekranie zadany napis<br />{<br />  while (*myString)                     //Powtarzanie aż zostanie napodkany znak NULL<br />  {<br />    Scroll_Char(*myString);             //Przewijanie nastepnego znaku<br />    ++myString;<br /><br />  }<br />}<br /><br />void Scroll_String_P(const char * myString)  //Funkcja odczytuje łańcuch z pamieci i wyswietla go na matrycy<br />{<br />  while (pgm_read_byte(myString))<br />  {<br />    Scroll_Char(pgm_read_byte(myString));<br />    ++myString;<br />  }<br />}<br /><br />void Scroll_Clear(void)                 //Funkcja czyści ekran<br />                                //w zasadzie przewijam wszystko w lewo<br />{<br />  for(u8 i=0; i&lt;8; i++)<br />  {<br />    shift_row_buffer_left(1);<br />    Delay_ms(ScrollSpeed);<br />  }<br />}<br /><br />int main(void)<br />{<br />  InitPorts();<br />  InitTimers();<br />  while(1)<br />  {<br />    //Scroll_String(&quot;POZDRAWIAM !&quot;);      //Troche mało optymalne wyświetlanie - zuzywa sporo ramu<br />    //Scroll_Clear();                             //Przewijanie w lewo aż do wyczyszczenia<br />    Scroll_String_P(Messages1);         //Wyswietlanie ciągu z pamieci programu -- zuzywa mało ramu<br />    Scroll_Clear();<br />    Scroll_String_P(Messages2);<br />   // Scroll_Clear();<br /><br />    //each_led();<br /><br />   // for (char x=33; x&lt;128; x++)         //Zapis znaków ascii<br />  //  {<br />   //   Write_Char(x);<br />   //   Delay_ms(500);<br />  //  }<br />  }<br />}<br /><br />ISR(TIMER1_COMPA_vect)                          //Interrupt Service Routine -- praca w przerwaniu<br />{<br />  if(++row_track == 8) row_track = 0;           //Śledzenie wiersza (ROW)<br />  Shift_Int(row_buffer&#91;row_track&#93;);             //przewijanie danych do nastepnego wiersza<br /><br />  ShiftPort &amp;= ~OE;                             //Uzyłem w celu zapobiegania zakłuceniom<br />                                //moze lepiej by było dać tu NOP ??<br />  if (row_track == 0)                           //Wyłaczenie controli<br />  {<br />    RowPort &amp;= ~(1&lt;&lt;7);                         //Jeśli ROW0 to zatrzymaj na ROW7  -- chyba wiadomo dlaczego<br />  }<br />  else<br />  {<br />    RowPort &amp;= ~(1&lt;&lt;(row_track-1));             //Wyłacz poprzedni wiersz<br />  }<br /><br />  ShiftPort |= LatchPin;<br />  RowPort |= (1&lt;&lt;row_track);<br />  ShiftPort |= OE;<br />}[/syntax]<br />Program działa jeżeli matryce podepnę bezpośrednio do portu mikrokontrolera. Jednak gdy zastosuje bufory w postaci tranzystorów pokazuje kompletne głupoty. Matrycę mam taką:<br /><a href="http://forum.atnel.pl/_obrazki/o/1016/f58ad9b15d2837028ba906a84a127bdb.GIF"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/1016/f58ad9b15d2837028ba906a84a127bdb.GIF" alt="Obrazek" /></a><br />Kolumny steruję za pomocą rejestru 74hc595, wyjścia rejestru są podłączone do tranzystorów PNP. Wiersze natomiast steruję z tranzystorów NPN które są podłączone do uC. Bez tranzystorów wszystko działa. Z tranzystorami zapala wszystkie diody i nie wyświetla tego co chce..... Proszę o pomoc <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1016">svistak2000</a> — 11 maja 2015, o 15:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[BIGjack]]></name></author>
<updated>2014-09-15T15:09:23+01:00</updated>
<published>2014-09-15T15:09:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=854&amp;p=95546#p95546</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=95546#p95546"/>
<title type="html"><![CDATA[Re: Matryca LED 8X8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=95546#p95546"><![CDATA[
Tak właśnie mi się wydawało że bez ULN-a przy rejestrze się nie obejdzie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1249">BIGjack</a> — 15 wrz 2014, o 15:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2014-09-14T22:11:58+01:00</updated>
<published>2014-09-14T22:11:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=854&amp;p=95494#p95494</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=95494#p95494"/>
<title type="html"><![CDATA[Re: Matryca LED 8X8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=95494#p95494"><![CDATA[
Wychodzi 22 mA na LED. Dla sterowania statycznego wystarczy, ale jak masz multipleksowanie wierszy to średni prąd jest 8 razy mniejszy. 74HC595 daje maksymalnie 35 mA więc dodaj tranzystory i zmniejsz rezystory, ale wtedy nie steruj już statycznie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 14 wrz 2014, o 22:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[BIGjack]]></name></author>
<updated>2014-09-05T08:53:32+01:00</updated>
<published>2014-09-05T08:53:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=854&amp;p=94323#p94323</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=94323#p94323"/>
<title type="html"><![CDATA[Re: Matryca LED 8X8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=94323#p94323"><![CDATA[
Projektuję właśnie urządzenie w którym wykorzystuję matryce czerwone matryce led8x8 podłączone w/g tego schematu;<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/1249/8415a21efd3501e3919dd03fb012cd6a.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/1249/8415a21efd3501e3919dd03fb012cd6a.jpg" alt="Obrazek" /></a><br /><br />Ze względu na matryce (LM-88HR07-CC) które posiadam użyłem UDN2981 zamiast ULN2803 i R z 220R0 na 150R0 .<br />Jednak przy włączeniu wszystkich punktów matrycy przygasa czy muszę dodatkowo pakować jeszcze<br />driver-y do każdego HC595 ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1249">BIGjack</a> — 5 wrz 2014, o 08:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[BIGjack]]></name></author>
<updated>2014-05-22T15:26:10+01:00</updated>
<published>2014-05-22T15:26:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=854&amp;p=82094#p82094</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=82094#p82094"/>
<title type="html"><![CDATA[Re: Matryca LED 8X8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=82094#p82094"><![CDATA[
<div class="quotetitle">SunRiver napisał(a):</div><div class="quotecontent"><br />a w tym co niebawem pokażę użyłem układów MAX7219 po 1 na matrycę, dzięki czemu zasadniczo każda matryca jest niezależna i można je dowolnie konfigurować<br /></div><br /><br />Gdzie możemy to ustrojstwo zobaczyć?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1249">BIGjack</a> — 22 maja 2014, o 15:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[BIGjack]]></name></author>
<updated>2013-09-16T20:52:05+01:00</updated>
<published>2013-09-16T20:52:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=854&amp;p=49885#p49885</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=49885#p49885"/>
<title type="html"><![CDATA[Re: Matryca LED 8X8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=49885#p49885"><![CDATA[
Nareszcie znalazłem chwilę wolnego czasu aby zająć się moim projektem animowanego zegara z bezprzewodowym termometrem na matrycach led 8x8. Analiza i pisanie idzie mi strasznie opornie ale ją już pierwsze bardzo skromne <br />efekty <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" /><br /><br /><div style="width: 583px; height: 471px; margin: 0 auto; padding-left: 26px; padding-top: 48px; background: url('https://www.atnel.pl/download/atnel_tv.png') no-repeat;"> <strong>iframe</strong> </div><br /><br /><div style="width: 583px; height: 471px; margin: 0 auto; padding-left: 26px; padding-top: 48px; background: url('https://www.atnel.pl/download/atnel_tv.png') no-repeat;"> <strong>iframe</strong> </div><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1249">BIGjack</a> — 16 wrz 2013, o 20:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2013-09-15T18:47:26+01:00</updated>
<published>2013-09-15T18:47:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=854&amp;p=49749#p49749</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=49749#p49749"/>
<title type="html"><![CDATA[Re: Matryca LED 8X8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=49749#p49749"><![CDATA[
Za dużo zmiennych z modyfikatorem zmiennych globalnych i z modyfikatorem volatile.<br />[syntax=c]volatile uint8_t timer0_licznik = 178; //to powinna być stała zdefiniowana z użyciem #define<br />volatile uint8_t temp = 0; //to powinna być zmienna lokalna w przerwaniu z modyfikatorem static<br />volatile uint16_t licznik = 1; //to powinna być zmienna lokalna w przerwaniu z modyfikatorem static<br />volatile uint8_t bufor&#91;8&#93;; //nie powinno być/nie potrzeba volatile, tablice obsługiwane są przez wskaźnik<br />volatile uint8_t nowy_bufor = 1; //tutaj oczywiście tak, nowy_bufor może się zmienić w przerwaniu i jest wykorzystywany w pętli głównej programu[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 15 wrz 2013, o 18:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[BIGjack]]></name></author>
<updated>2013-08-17T12:20:52+01:00</updated>
<published>2013-08-17T12:20:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=854&amp;p=45991#p45991</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=45991#p45991"/>
<title type="html"><![CDATA[Re: Matryca LED 8X8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=45991#p45991"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />UDN2981A jest równoważny 8 tranzystorom pnp, a ULN2803 8 tranzystorom npn.<br /></div><br />Czyli tak jak napisałem powyżej w tym konkretnym przypadku.<br /><div class="quotetitle">Krauser napisał(a):</div><div class="quotecontent"><br />Matryca LED nie ma ani wspólnej katody ani anody, to kwestia umowna jak traktujesz te 8 LED w jednej kolumnie/wierszu.<br /></div><br />Dlatego dla jednej matrycy nie używam tego określenia ale dla kilku tak bo sugeruję w ten sposób jak je łączę a logika nakazuje połączyć wiersze więc jak mam anody na wierszach to piszę że mam wspólną anodę.<br /><div class="quotetitle">Krauser napisał(a):</div><div class="quotecontent"><br />Dla mikrokontrolera AVR to bez znaczenia czy podaje sygnał zanegowany czy nie.<br /></div><br />Moje doświadczenia wykazały że zanegowanie sygnału wiersza zmienia mi tylko tyle że świecą te pola które były wygaszone i gasną te które świeciły.<br />Ciesze się że koledzy &quot;zapodają&quot; swoje uwagi i przepraszam jeżeli gdzies walnąłem byka ale pełnię dziś obowiązki super niani dla moich latorośli a to wiąże się ze znikomym czasem podejść do kompa <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1249">BIGjack</a> — 17 sie 2013, o 12:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2013-08-17T11:46:32+01:00</updated>
<published>2013-08-17T11:46:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=854&amp;p=45988#p45988</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=45988#p45988"/>
<title type="html"><![CDATA[Re: Matryca LED 8X8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=45988#p45988"><![CDATA[
UDN2981A jest równoważny 8 tranzystorom pnp, a ULN2803 8 tranzystorom npn. Matryca LED nie ma ani wspólnej katody ani anody, to kwestia umowna jak traktujesz te 8 LED w jednej kolumnie/wierszu. Dla mikrokontrolera AVR to bez znaczenia czy podaje sygnał zanegowany czy nie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 17 sie 2013, o 11:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[BIGjack]]></name></author>
<updated>2013-08-17T10:36:47+01:00</updated>
<published>2013-08-17T10:36:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=854&amp;p=45979#p45979</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=45979#p45979"/>
<title type="html"><![CDATA[Re: Matryca LED 8X8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=45979#p45979"><![CDATA[
A mam pod łapką <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /> Jeden neguje sygnał a drugi nie. Aczkolwiek gdzieś czytałem że UDN się nie nadaje. Najprościej ale i najkosztowmniej było by zmenić matryce na wspólną katode.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1249">BIGjack</a> — 17 sie 2013, o 10:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[BIGjack]]></name></author>
<updated>2013-08-16T15:46:17+01:00</updated>
<published>2013-08-16T15:46:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=854&amp;p=45914#p45914</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=45914#p45914"/>
<title type="html"><![CDATA[Re: Matryca LED 8X8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=45914#p45914"><![CDATA[
Czy do w/w matrycy powinieniem użyć UDN2981A ?<br />Czy jest szansa zmiany w kodzie aby zadziałał ULN2803?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1249">BIGjack</a> — 16 sie 2013, o 15:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[BIGjack]]></name></author>
<updated>2013-08-16T12:13:21+01:00</updated>
<published>2013-08-16T12:13:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=854&amp;p=45890#p45890</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=45890#p45890"/>
<title type="html"><![CDATA[Re: Matryca LED 8X8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=45890#p45890"><![CDATA[
GwynBleidD, nie jestem sknerą, mam całą garść uln-ów <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" /> Chodziło mi o czas, poprostu mam matryce na stykówce bez uln-a i szybciej dla celów testowych by było dopiąć drugą matryce anieżeli przerabiać prawie wszystko <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" /> Mam jeszcze pytanie, bo nie wiem czy dobrze myślę. Jak zamienię od strony matrycy sterowanie wierszy z kolumnami to obraz wyświetlany będzie obrócony o 90 stopni czy się mylę? Pytanie to jest wynikiem zastosowania ULN2803A który neguje sygnał. Szukam teraz sposobu na ponowne podpięcie matryc <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":-(" title="Smutny" /> i nic nie przychodzi mi do głowy poza szukaniem układu który nie będzie negował Hmm....<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1249">BIGjack</a> — 16 sie 2013, o 12:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[BIGjack]]></name></author>
<updated>2013-08-16T08:41:15+01:00</updated>
<published>2013-08-16T08:41:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=854&amp;p=45866#p45866</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=45866#p45866"/>
<title type="html"><![CDATA[Re: Matryca LED 8X8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=45866#p45866"><![CDATA[
w/g noty niby bierze 60mA w/g info TME 25mA na diodę statycznie ale wydaje mi się że przy multiplexowaniu nie spalę procka.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 10 minutach ]</span></strong><br /><br />Nie jestem pewien ale na IO megi max 40mA więc muszę właczyć przez ULN-a<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1249">BIGjack</a> — 16 sie 2013, o 08:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2013-08-16T08:33:17+01:00</updated>
<published>2013-08-16T08:33:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=854&amp;p=45865#p45865</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=45865#p45865"/>
<title type="html"><![CDATA[Re: Matryca LED 8X8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=854&amp;p=45865#p45865"><![CDATA[
już przy jednej powinieneś zastosować ULNa ... <br />choć mega da sobie radę jeszcze o tyle z 2ma ... zresztą twoja mega i twoje matryce<br />wystarczy sobie z noty odczytać ile bierze<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 16 sie 2013, o 08:33</p><hr />
]]></content>
</entry>
</feed>