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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-07-27T21:21:13+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=20719&amp;mode</id>
<entry>
<author><name><![CDATA[Rewner28]]></name></author>
<updated>2018-07-27T21:21:13+01:00</updated>
<published>2018-07-27T21:21:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=210212#p210212</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=210212#p210212"/>
<title type="html"><![CDATA[Re: LED CUBE 4x4x4 Pomoc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=210212#p210212"><![CDATA[
Wiem ze sporo już czasu minęło , Jednak programowanie jest w toku . Przeprowadzka zajęła mi 3 tygodnie bez możliwości programowania wiec powrót był ciężki . Ogółem mam juz zaprogramowane 5 efektów które zajmują mi 30 % pamięcią flash i 29 % pamięci EEPROM wiece sporo jeszcze mogę wykorzystać . Na końcu oczywiście załączę  filmik z pełnym kodem <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> . <br /><br />Na dzień dzisiejszy borykam sie z problemem operacji na bitach.<br /><br />Po krotce wyjaśnię : wszystkie poprzednie efekty które tworzyłem robiłem to za pomocą  funkcji <br />[syntax=c]void zapal(uint16_t zmienna){<br /> uint8_t read1 = (zmienna &gt;&gt; 8 );<br /> PORTA = (read1 &amp; 0x0f);<br /> uint8_t read2 = (zmienna);<br /> if((read1 &amp; 0xf0)==16){<br /> PORTC = read2;<br /> PORTD = 0x00;<br /> }<br /> else{<br /> PORTD = read2;<br /> PORTC = 0x00;<br /> }<br /><br /> }[/syntax]<br /><br />mam tablice 2bajtowa ze wszystkimi 64 diodami  , i za pomocą tej tablicy zapalam diodę która mnie interesuje. Problem jednak jest taki ze każda dioda zapala sie i gasi bo na jej miejsce jest wpisywana kolejna zmienna która zeruje ta poprzednia . W efekcie mam zapalone wszystkie diody które che jednak maja one słabe światło gdyż każda z nich ( przypuśćmy ze ma sie palić  15 diod z prędkością 8MHZ)  wiec każda z tych diod jest zapalana 1 raz na 15 razy / czyli przez kolejne 14 razy sie nie pali. i to daje mi efekt słabego świecenia diody .<br /><br />Operacje na bitach OR i AND  pomogły by mi w tym ale problem jest taki ze jak  mam wszystkie zapalone diody na kostce to wygaszenie tylko jednej z nich za pomocą ~ a później &amp;  , powoduje ze gaśnie cala kolumna ( gdyż 16 anod jest multipleksowane)  mecze sie od 2 dni i nie wiem jak napisać funkcje by tylko 1 dioda gasła . Może ktoś ma jakieś ciekawe rozwiązanie tego problemu , albo kiedyś sam projektował taki CUBE i dal by jakieś wskazówki ??<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=19427">Rewner28</a> — 27 lip 2018, o 21:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rewner28]]></name></author>
<updated>2018-06-17T22:25:39+01:00</updated>
<published>2018-06-17T22:25:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=209014#p209014</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=209014#p209014"/>
<title type="html"><![CDATA[Re: LED CUBE 4x4x4 Pomoc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=209014#p209014"><![CDATA[
Dzieki za Odpowiedz <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Przemyśle to co napisałeś i jak coś zrobię to wkleję dalszy ciąg kodu <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> dzięki JarekB !!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=19427">Rewner28</a> — 17 cze 2018, o 22:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[JarekB]]></name></author>
<updated>2018-06-17T06:15:03+01:00</updated>
<published>2018-06-17T06:15:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=208983#p208983</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=208983#p208983"/>
<title type="html"><![CDATA[Re: LED CUBE 4x4x4 Pomoc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=208983#p208983"><![CDATA[
Odnośnie pytanie nr 1 <br />Piszesz że nie chcesz tracić przerwania bo chcesz na nim osiągnąć efekt rozświetlania i przygaszania.<br />No właśnie <br />I tu według mnie jest rozwiązanie <br />Załóżmy że będziesz używał to tego celu Timer1 <br />Ustawisz go raz a, zmieniać będziesz jedynie wartość rejestrów OCR<br />Masz dwa efekty i dwa przerwania do zadań związanych z tymi rejestrami <br />Ale Timer1 ma też przerwanie od przepełnienia.<br />No i do rzeczy:<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />                                <br />void Timer1_Init(void);<br />void Zrobmy_cos(void);                                              <br />volatile uint16_t tykadelko = 1;<br /> <br /> <br />int main( void ) {<br />    Timer1_Init();          //Tu sobie ustawimy Timer1<br /><br /><br />    while ( 1 ) {<br />      Zrobmy_cos();        // Tu sprawdzimy czy czasem Timer nie dojechał do zera<br />    }<br /><br />}<br /><br />void Timer1_Init(void){<br />   // ustawiamy zegar tak żeby włączyć przerwanie TIMER1_OVF_vect<br />}<br /><br />void Zrobmy_cos(void){<br />   if ( !tykadelko) {       // Timer doliczył do zera no to zrobmy coś<br />                            // Tu zrobimy to co nam się podoba<br />        tykadelko = 65532;  // Ustawiamy tykadełko<br />     }<br />}<br /><br />ISR( TIMER1_OVF_vect ) {<br /> if (tykadelko &gt; 1) tykadelko--;<br />}[/syntax]<br /><br /><br />Odnośnie pytania nr 2 <br />Nie wiem czy dobrze rozumiem ale może tak? :<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />void zmiana_efektu( uint8_t ktory );<br /><br />int main( void ) {   <br /><br />    while ( 1 ) {<br />        zmiana_efektu( 2 );    //Wybierzmy sobie efekt nr 2<br />    }<br />}                     <br /><br />                                               <br />void zmiana_efektu( uint8_t ktory ) {<br />    switch ( ktory ) {<br />    case 1: {<br />     // ustawienia efektu 1<br />    }<br />    case 2: {<br />     // ustawienia efektu 2 ... i tak dalej i tak dalej<br />    }<br /><br />    } // koniec switch<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18188">JarekB</a> — 17 cze 2018, o 06:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rewner28]]></name></author>
<updated>2018-06-15T13:20:47+01:00</updated>
<published>2018-06-15T13:20:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=208939#p208939</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=208939#p208939"/>
<title type="html"><![CDATA[Re: LED CUBE 4x4x4 Pomoc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=208939#p208939"><![CDATA[
Trochę Czasu minęło  , jestem dość zajęty wiec idzie to  jak krew z nosa . jednakże nauka programowania na takim LED CUBE jest bardziej ( jak dla mnie ) pożyteczna gdyż , diody które się zapalają pozwalają mi na łatwiejsze wykrycie mojego błędu . Uważam ze jest to dobry sposób nauki dla takich &quot;mistrzów &quot; jak JA <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br />Oto Fragment Kodu jaki napisałem i dział fajnie 4 diody się przesuwają do okola kostki każda z lecz w pierwszym polu zapala sie 1 dioda 1 warstwa , przeskok na 2 diode ale juz 2 warstwy , dalej 3 dioda i 3 warstwy i na końcu 4 dioda i 4 warstwy . i tak te 4 diody krążą do okola kostki.<br /><br />[syntax=c]#define AN1 0b10000000<br />#define AN2 0b01000000<br />#define AN3 0b00100000<br />#define AN4 0b00001000<br />#define AN5 0b00010000<br />#define AN6 0b00000100<br />#define AN7 0b00000010<br />#define AN8 0b00000001<br /><br />#define KA1 0b00000001<br />#define KA2 0b00001000<br />#define KA3 0b00000100<br />#define KA4 0b00000010<br /><br />volatile uint16_t k , x  ,w;  // zmienna te musza byc opatrzone przydomkiem volatile aby mogly spelniac swoja funkcje<br />     uint8_t tab2&#91;&#93;={AN8,AN7,AN6,AN4,AN1,AN5,AN4,AN3,AN2,AN1,AN8,AN5,AN8,AN7,AN6,AN4};<br />     uint8_t tab1&#91;&#93;={KA1,KA1|KA2,KA1|KA2|KA3,KA1|KA2|KA3|KA4};<br /> uint64_t cnt; // cykle ktore pozwalana nam na zmiane numerku ANODY<br />     w=0, k=0; // zmiene sterujace KATODA I ANODA<br />     x=0;<br />while(1){<br />            k=w+x;     // Zmienna(w) uruchami katody ktore migaja bardzo szybko<br />            if(k==15) x=0; // zmienna(k) steruja ktora anoda ma byc zapalona<br />            if(k&lt;5){            // warunek if pozwala na odpowiednie dopranie portu w czase<br />           PORTD = tab2&#91;k&#93;;<br />            }<br />            else if (k&gt;=5 &amp;&amp; k&lt;11){<br />            PORTD = 0x00;<br />            PORTC = tab2&#91;k&#93;;<br />            }<br />            else if (k&gt;=11){<br />            PORTC = 0x00;<br />            PORTD = tab2&#91;k&#93;;<br />            }<br />           PORTA = tab1&#91;w&#93;;<br /><br />           _delay_ms(1);<br />           PORTA=0x00;<br />           w++;<br />           if(w==4)w=0;<br />           cnt++;<br />           if(cnt==3000) cnt=0, x++;  // po 3000 tysiacach cykili zwieksza sie<br />                                      // zmienna(x) , daje to efekt przesuwania diody co srednio ok 0.5 sek<br /><br /><br />}[/syntax]<br />Puki co nie potrafię lepiej napisać takiego kodu ktory dal by mi taki efekt tylko na taki pomysł wpadłem.<br /><br />Mam 2 Pytanka  jak by ktoś mógł odpowiedzieć (może ty JarekB):<br /><br />1. Czy jest sposób uzyskać efekt przerwania nie używając typowej Przerwania ?? chodzi mi o funkcje która by takie wtrącenie kodu robiła .( Przerwania próbuje zostawić na rozświetlanie  diody i 2 przyciski ) <br />2. Chciałbym zęby w głównej funkcji main mieć możliwość zmiana efektów świetlnych jaki sposób doradzacie . Łącznie planuje napisać 10 efektów świetlnych ( hehe puki co mam 1 <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /> ) . Czy macie jakaś fajna  metodę ??<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=19427">Rewner28</a> — 15 cze 2018, o 13:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[JarekB]]></name></author>
<updated>2018-05-15T08:30:13+01:00</updated>
<published>2018-05-15T08:30:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207804#p207804</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207804#p207804"/>
<title type="html"><![CDATA[Re: LED CUBE 4x4x4 Pomoc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207804#p207804"><![CDATA[
Daj znać jak Ci poszło. <br />Tak jak pisałem też się uczę. <br />Pewnie koledzy rzucą na to okiem i jak są jakieś babole to udzielą wytknięcia.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18188">JarekB</a> — 15 maja 2018, o 08:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rewner28]]></name></author>
<updated>2018-05-15T07:38:24+01:00</updated>
<published>2018-05-15T07:38:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207801#p207801</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207801#p207801"/>
<title type="html"><![CDATA[Re: LED CUBE 4x4x4 Pomoc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207801#p207801"><![CDATA[
Dziękuje za odpowiedz <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> To jest chyba to czego szukam . Przetestuje dziękuje jeszcze raz za 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=19427">Rewner28</a> — 15 maja 2018, o 07:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[JarekB]]></name></author>
<updated>2018-05-15T07:24:39+01:00</updated>
<published>2018-05-15T07:24:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207799#p207799</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207799#p207799"/>
<title type="html"><![CDATA[Re: LED CUBE 4x4x4 Pomoc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207799#p207799"><![CDATA[
W tym pierwszym poście nieco &quot;nababoliłem&quot; <br />Chodziło mi o to że w jednej zmiennej można zawrzeć wszystkie ustawienia diody <br />Ale kolega xentis słusznie mi wytknął że takie maskowanie jakie zrobiłem bez przesunięcia nic nie da <br />Ale też się uczę.<br />Wymyśliłem inny sposób z zastosowaniem struktury <br />Jak koledzy sprawdzą że są babole to niech czym prędzej oklepią pomysł <br />Ale do rzeczy:<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br /><br /><br />void zapal_diode( uint8_t ktora );     // funkcja zapalająca diod<br /><br />uint8_t ktora_dioda = 1;<br />uint8_t port_a = 0;<br />uint8_t port_d = 1;<br />uint8_t port_c = 2;<br /><br /><br />typedef struct {                                     // typ strukturalny<br />    uint8_t tabela_wartosci&#91;6&#93;&#91;3&#93;;                   // sześć diod po trzy wartości  <br />}TWARTPORT;<br /><br />const TWARTPORT porty_led PROGMEM;                    // Dane w pamięci FLASH<br /><br /><br />TWARTPORT const porty_led PROGMEM = {                 // wypełniamy flaszkę danymi<br />    {{ 0b00000001 , 0b00000011, 0b00000011}           // tu wpisałem cokolwiek wpiszesz to co trzeba<br />        , {0b00000001, 0b00000001, 0b00000011}            <br />        , {0b00000001, 0b00000001, 0b00000011}<br />        , {0b00000001, 0b00000001, 0b00000011}<br />        , {0b00000001, 0b00000001, 0b00000011}<br />        , {0b00000001, 0b00000001, 0b00000011}<br />    }<br />};<br /><br />int main( void ) {<br /><br />   zapal_diode(3);   //zapalasz dowolną diodę   podając tylko jej numer   <br />   zapal_diode(2);<br /><br />    while ( 1 ) {<br />    }<br />}<br /><br />void zapal_diode( uint8_t ktora ) {        <br />    PORTA = porty_led.tabela_wartosci&#91;ktora&#93;&#91;port_a&#93;;<br />    PORTC = porty_led.tabela_wartosci&#91;ktora&#93;&#91;port_c&#93;;<br />    PORTD = porty_led.tabela_wartosci&#91;ktora&#93;&#91;port_d&#93;;<br />    /* gdyby inne odnóża portów byłby wykorzystane to lepie by było<br />       zamaskować conieco<br />    */<br />}   // Koniec zapal diode[/syntax]<br /><br />Co do struktur to pooglądaj Mirkowy poradnik.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18188">JarekB</a> — 15 maja 2018, o 07:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rewner28]]></name></author>
<updated>2018-05-14T20:58:49+01:00</updated>
<published>2018-05-14T20:58:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207785#p207785</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207785#p207785"/>
<title type="html"><![CDATA[Re: LED CUBE 4x4x4 Pomoc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207785#p207785"><![CDATA[
Dobrze wiec moze tak : <br />Stworze taka pętle z x,y,z dla zobrazowania :<br />[syntax=c]uint8_t tab&#91;&#93;;<br />uint8_t z,y,z,i ;<br /><br />// Petla <br />for (x=0,y=1,z=0 ; x&lt;5 ; z++,x++,y++){<br /><br />// piszemy zatem<br />PORTC = tab1&#91;x&#93;&#91;y&#93;&#91;z&#93;<br />PORTA = 0x01;<br /><br />// teraz w tym momencie powiedzmy ze tablica dam nam odpowiednia diode na porcie C,<br />// ale już następne współrzędne mogą być na porcie D, <br />// wiec jaki Warunek ' if ' napisać zęby komputer odróżnił jaki port ma być obecnie ,<br />// jeżeli wezmę i zrobię tablice 3 wymiarowa ktora opisze mi wszystkie 64 diody<br />// tutaj mam problem nie wiem jak program ma samoczynnie przypisać PORT do Danej diody[/syntax]<br /><br />Co prawda opisałeś jeden sposób na samym początku ale nie do końca zrozumiałem dlaczego użyłeś 16 bitów zamiast 8 ?? i dałeś portC = 0  ?? portD = 0 Itp ?? <br />Może to jest ten sposób który szukam tylko go jeszcze nie rozumiem  ??<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=19427">Rewner28</a> — 14 maja 2018, o 20:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[JarekB]]></name></author>
<updated>2018-05-14T20:20:45+01:00</updated>
<published>2018-05-14T20:20:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207781#p207781</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207781#p207781"/>
<title type="html"><![CDATA[Re: LED CUBE 4x4x4 Pomoc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207781#p207781"><![CDATA[
Nie do końca rozumiem Twojego podejścia do problemu <br />Ale. <br />Diody są ułożone w przestrzeni trójwymiarowej x, y, z<br />Czyli dajmy na to że mamy zapaloną jedną diodę w w położeniu 0, 0, 0<br />No i teraz chcemy przesuwać zapalną diodę po przekątnej w płaszczyźnie x<br />No to dodajemy w pętli do y +1 i z +1 <br />Zapalona dioda przesuwa się w jednej płaszczyźnie po jej przekątnej.<br /><br />Ale gdybyś zrobił x + 1, y +1, z+ 1 <br />wtedy zapalona dioda poszła by po przekątnej kostki <br /><br />Idąc dalej gdybyś stworzył obraz to w uproszczeniu możesz go tak samo przemieszczać po kostce.<br />Każdy punkt obrazu rządzi się takimi samymi regułami jak jeden.<br /><br />To jest uproszczenie bo należy powołać reguły które będą opisywać co się stanie gdy x lub y lub z osiągnie max lub min<br />Zacznij od jednej diody<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18188">JarekB</a> — 14 maja 2018, o 20:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rewner28]]></name></author>
<updated>2018-05-14T18:40:30+01:00</updated>
<published>2018-05-14T18:40:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207772#p207772</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207772#p207772"/>
<title type="html"><![CDATA[Re: LED CUBE 4x4x4 Pomoc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207772#p207772"><![CDATA[
Masz Racje co do zmiennej 'z' to miał być przykład tylko hehe no fakt powinna być jako char. <br />Ok Moim celem jest napisanie programu który pokazuje jakieś zjawiska świetlne . Problem w mojej głowie jest taki ze podłączone diody  nie są  po kolei czyli jedna tu jedna tam , wiec nie sa po kolei jak dasz w szeregu 0x01 potem 0x02 potem 0x04 to nie zapali się dioda PC0 , potem PC1 a później PC2 , bo nie sa podłączone w kolejności . moze ci sie zapalić PC0 a później PC4 A później PC7 i tak dalej . Mam w glowie jeden efekt co będzie raz będzie zapala diodę na porcie D  , 4 razy obieg 'for' a później idzie na port C i zapala inne 4 diody . <br />no i jak to rozwiązać ??<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=19427">Rewner28</a> — 14 maja 2018, o 18:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xentis]]></name></author>
<updated>2018-05-14T17:49:32+01:00</updated>
<published>2018-05-14T17:49:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207770#p207770</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207770#p207770"/>
<title type="html"><![CDATA[Re: LED CUBE 4x4x4 Pomoc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207770#p207770"><![CDATA[
Tylko ja nie do końca rozumiem co chcesz osiągnąć. Bo w przykładzie który podałeś 3 posty wyżej próbujesz robić dziwne rzeczy np:<br />[syntax=c]if (z == 0 ) z= C;<br />  if (z==1 ) z=D;[/syntax]<br />gdzie zmienną &quot;z&quot; definiujesz jako uint8_t, więc jak chcesz do takiej zmiennej przypisać litery C/D?<br /><br /><div class="quotetitle">Rewner28 napisał(a):</div><div class="quotecontent"><br />Sklejenie dalej zrobi resztę<br /></div> Tyle że makro sklejania nazw to polecenie dla preprocesora więc program podczas działania w procku nic przy pomocy tego makra nie sklei.<br /><br />Napisz dokładnie co chcesz osiągnąć. Bo po przykładzie który zamieściłeś to nie wiem czy chcesz mieć możliwość zapalania diod w kostce podając jej współrzędne x, y, z czy chcesz zrobić bibliotekę gdzie będziesz mógł zdefiniować do jakich pinów co jest podłączone...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6265">xentis</a> — 14 maja 2018, o 17:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rewner28]]></name></author>
<updated>2018-05-14T17:07:06+01:00</updated>
<published>2018-05-14T17:07:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207769#p207769</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207769#p207769"/>
<title type="html"><![CDATA[Re: LED CUBE 4x4x4 Pomoc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207769#p207769"><![CDATA[
Tak znam ta stronę tu nie chodzi o to ze ich nie znalazłem tyko o wytłumaczenie mi jak zrobić taki kod. Taki gotowiec jak nie wiem co i jak, prawie nic mi nie mówi. Dlatego szukam wytłumaczenia.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=19427">Rewner28</a> — 14 maja 2018, o 17:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jarecki]]></name></author>
<updated>2018-05-14T14:24:24+01:00</updated>
<published>2018-05-14T14:24:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207765#p207765</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207765#p207765"/>
<title type="html"><![CDATA[Re: LED CUBE 4x4x4 Pomoc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207765#p207765"><![CDATA[
Zerkałeś na te kody: <!-- m --><a class="postlink" href="http://www.instructables.com/id/Led-Cube-8x8x8/" >http://www.instructables.com/id/Led-Cube-8x8x8/</a><!-- m --> ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2511">Jarecki</a> — 14 maja 2018, o 14:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rewner28]]></name></author>
<updated>2018-05-14T14:17:02+01:00</updated>
<published>2018-05-14T14:17:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207764#p207764</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207764#p207764"/>
<title type="html"><![CDATA[Re: LED CUBE 4x4x4 Pomoc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207764#p207764"><![CDATA[
Starałem sie zrobić tak jak napisaliście ale wciąż mam ten sam problem . i Nie rozumiem jak go rozwiązać . Może jeszcze raz wyjaśnię : Czy jest taki sposób aby zrobić coś takiego :<br />[syntax=c]//definicja wszystkich 16 ANOD AN1-AN8 PORTC , AND9-AN16 PORTD<br />#define AN1 0b10000000<br />#define AN2 0b01000000<br />#define AN3 0b00100000<br />#define AN4 0b00001000<br />#define AN5 0b00010000<br />#define AN6 0b00000100<br />#define AN7 0b00000010<br />#define AN8 0b00000001<br />#define AN9 0b00010000<br />#define AN10 0b00100000<br />#define AN11 0b01000000<br />#define AN12 0b10000000<br />#define AN13 0b00001000<br />#define AN14 0b00000100<br />#define AN15 0b00000010<br />#define AN16 0b00000001<br /> // Zdefinjowane Katody PORTA 0-3<br />#define KA1 0b00000001<br />#define KA2 0b00001000<br />#define KA3 0b00000100<br />#define KA4 0b00000010<br /><br />#define PORT(x) SPORT(x)<br />#define SPORT(x) (PORT##x)<br />uint8_t z , i;<br />int main () {<br />while(1){<br />uint8_t tab1&#91;&#93;;<br />uint8_t tab2&#91;&#93;;<br />  if (z == 0 ) z= C;<br />  if (z==1 ) z=D;<br /><br />PORT(z) = tab1&#91;i&#93; ;<br />PORTA = tab2;[/syntax]<br /><br />To taki przykładowy kod powyżej ma na celu zobrazowania tego co staram sie osiągnąć . a teraz opisze :<br />Chciałbym aby wszystkie 16 podłączane do portów były jakoś oznaczone w kodzie za pomocą identyfikatora jak w sieci IP , i po rozpoznaniu tego &quot;IP&quot;  warunek IF będzie przydzielał literkę Albo C albo D , Sklejenie dalej zrobi resztę . Tak wiece Zawartość tab1[i] by identyfikowało nam jaki port ma zostać ustalony .<br />Czy jest to w ogóle  możliwe ?? jestem początkujący wiec może przesadzam albo na takie rzeczy sa inne sposoby . No to pytanie jest akurat do waz moi drodzy .Jak możecie to pomóżcie <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=19427">Rewner28</a> — 14 maja 2018, o 14:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[JarekB]]></name></author>
<updated>2018-05-12T21:30:27+01:00</updated>
<published>2018-05-12T21:30:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207712#p207712</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207712#p207712"/>
<title type="html"><![CDATA[Re: LED CUBE 4x4x4 Pomoc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207712#p207712"><![CDATA[
No tak. Racja.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18188">JarekB</a> — 12 maja 2018, o 21:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xentis]]></name></author>
<updated>2018-05-12T17:17:12+01:00</updated>
<published>2018-05-12T17:17:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207704#p207704</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207704#p207704"/>
<title type="html"><![CDATA[Re: LED CUBE 4x4x4 Pomoc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207704#p207704"><![CDATA[
<div class="quotetitle">JarekB napisał(a):</div><div class="quotecontent"><br />Nakładając na ten element maskę ( &amp; 0x0f00) możesz wyłuskać ustawienia portu<br /></div>Jedno ale - samo maskowanie nie wystarczy bo zarówno do portu C jak i D ZAWSZE trafią same zera (bo przecież porty są 8 bitowe a maską zerujesz najmłodszych osiem bitów) trzeba jeszcze odpowiednio przesunąć zawartość w elemencie tablicy tak by fragment zmiennej odpowiedzialny za dany port znalazł się w jej najmłodszej części.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6265">xentis</a> — 12 maja 2018, o 17:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[JarekB]]></name></author>
<updated>2018-05-12T17:01:08+01:00</updated>
<published>2018-05-12T17:01:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207703#p207703</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207703#p207703"/>
<title type="html"><![CDATA[Re: LED CUBE 4x4x4 Pomoc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207703#p207703"><![CDATA[
Nie analizowałem tego gdzie ma być jedynka a gdzie zero. <br />Starałem się przekazać pewien pomysł który mówi że jeden element tablicy może opisywać położenie diody w sześcianie.<br />x,y,z<br />Nakładając na ten element maskę ( &amp; 0x0f00) możesz wyłuskać ustawienia portu <br />A czy to jest anoda czy katoda to nie ma znaczenia dla zrozumienia idei.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18188">JarekB</a> — 12 maja 2018, o 17:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rewner28]]></name></author>
<updated>2018-05-12T12:42:22+01:00</updated>
<published>2018-05-12T12:42:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207684#p207684</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207684#p207684"/>
<title type="html"><![CDATA[Re: LED CUBE 4x4x4 Pomoc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207684#p207684"><![CDATA[
Widziałem już wcześniej takie zapisy gdy przeglądaczem strony z budowa 4x4x4 cube . Ogółem nie do końca je rozumiem wiec nie wiedziałem tez ze sa tymi co szukam, ale skoro mówicie ze to właśnie takie zapisy pozwalają na kontrole Diod to przeanalizuje je ( oby dwa posty wyżej ) i jak już będę coś wiedział więcej to odpisze wam . Puki co proszę nie zamykać jeszcze tematu . dziękuje za odpowiedz <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />P.S Jak podawaliście mi ten kod powyżej to rozumiecie ze Katody tez zapalają diodę jak maja stan wysoki , ponieważ 16 anod i 4( 16 + 4 =20 tranzystorów) katody sterują bramka Tranzystorowy NPN . dlatego tylko stan wysoki zapala diody . Wiedząc o tym powyższy zapisek kodów dalej jest poprawny ??<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=19427">Rewner28</a> — 12 maja 2018, o 12:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xentis]]></name></author>
<updated>2018-05-12T17:10:27+01:00</updated>
<published>2018-05-12T12:33:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207683#p207683</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207683#p207683"/>
<title type="html"><![CDATA[Re: LED CUBE 4x4x4 Pomoc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207683#p207683"><![CDATA[
<div class="quotetitle">Rewner28 napisał(a):</div><div class="quotecontent"><br />bo przecież nie mogę użyć tablicy skoro zmieniają mi sie porty skąd program ma wiedzieć o jaki port mi chodzi muszę mu to jakoś powiedzieć jak?<br /></div>Dla czego tak uważasz? Przecież możesz stan wszystkich pinów przechowywać w tablicy dwuwymiarowej zawierającej zmienne obrazujące stan poszczególnych portów np:<br />[syntax=c]uint8_t tab&#91;&#93;&#91;3&#93; = {{0b00000000, 0b00000000, 0b00001111}, //kostka zgaszona<br />                   {0b00000001, 0b00000000, 0b00001110}, //zaświecenie pierwszej diody, pierwszej warstwy<br />                   {0b00000010, 0b00000000, 0b00001101}, //zaświecenie drugiej diody drugiej warstwy<br />                   ....<br />                   {0b11111111, 0b11111111, 0b00000000}}; //wszystkie diody świecą[/syntax]<br />Następnie przy pomocy jakiejś funkcji wyrzucać zawartość tych zmiennych na porty, musisz tylko pamiętać by zamaskować zmienną katod jeśli na porcie A do pozostałych pinów będziesz mieć coś podłączone:<br />[syntax=c]PORTC = tab&#91;2&#93;&#91;0&#93;;<br />PORTD = tab&#91;2&#93;&#91;1&#93;;<br />PORTA = ((tab&#91;2&#93;&#91;2&#93;&amp;0b00001111)|(PORTA&amp;0b11110000));[/syntax]<br /><br />W ten sposób każdy pierwszy wymiar tablicy to jakiś stan świecenia kostki, natomiast drugi wymiar przechowuje komplet stanów portów sterujących diodami.<br />A to tylko jedna z możliwości, jak to mówią pomysłów tyle ilu programistów...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6265">xentis</a> — 12 maja 2018, o 12:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[JarekB]]></name></author>
<updated>2018-05-12T12:24:26+01:00</updated>
<published>2018-05-12T12:24:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207680#p207680</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207680#p207680"/>
<title type="html"><![CDATA[Re: LED CUBE 4x4x4 Pomoc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207680#p207680"><![CDATA[
Można by się posłużyć tablicą:<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />uint8_t portC = 0;<br />uint8_t portD = 0;<br />uint8_t portA = 0;<br />uint8_t ktora_dioda = 1;<br />uint32_t dioda &#91;64&#93; = {0b1000100010001000,0b1000100010001000, 0xffff};<br />   <br />int main( void ) {    <br />    portC = dioda &#91;ktora_dioda&#93; &amp; 0xf000;<br />    portD = dioda &#91;ktora_dioda&#93; &amp; 0x0f00;<br />    portA = dioda &#91;ktora_dioda&#93; &amp; 0x00f0;<br />    while(1) {                                 <br />    }<br />}[/syntax]<br /><br />Wypełniłem trzy pierwsze elementy tablicy <br />Gdyby wypełnić wszystkie to każda dioda miała by swoje współrzędne <br />Tworząc jakąś funkcję zapal diode podawałbyś nr diody <br />Inna sprawa gdyby trzeba było zapalić więcej diod <br />wtedy trzeba by było sumować ale to już zabawa na wieczory.<br />Jakąś podpowiedź masz <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=18188">JarekB</a> — 12 maja 2018, o 12:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rewner28]]></name></author>
<updated>2018-05-12T10:57:17+01:00</updated>
<published>2018-05-12T10:57:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207674#p207674</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207674#p207674"/>
<title type="html"><![CDATA[LED CUBE 4x4x4 Pomoc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20719&amp;p=207674#p207674"><![CDATA[
Witam . Jestem nowym użytkownikiem forum.Od tygodnia usiłuje napisać do moje kostki 4x4x4 kod który pozwoli mi na tworzenie efektów świetlnych . I tu mam zamostkowe cały czas. Próbuję napisać kod w języku C <br />który będzie mi pozwalał na zapaleni diody która mnie interesuje ( taki ogólny kod żebym na jego podstawie mógł tworzyć rożnego rodzaju efekty ) . Porty których używam to PC0-PC7 i PD0-PD7 ( anody ) , PA0-PA3( katody) zapalane stanem wysokim ( high ) ( 1) . A na sam koniec po chłopsku .... Jak zapalic np. 1 diode na porcie PC2 a później żeby przeskoczyło do Portu PD5 ( bo przecież nie mogę użyć tablicy skoro zmieniają mi sie porty skąd program ma wiedzieć o jaki port  mi chodzi muszę mu to jakoś powiedzieć  jak?) ?? <br /><br />Nie wiem czy opisałem mój problem dostatecznie dobrze . Kto może  to proszę o podpowiedz jak napisać kod by przy wybranej diodzie zmieniał się i mój port , w zależności co che zapalić .  <br />Uczę się z Książki Pana Mirka Bluebook ( jest świetna ) ale hmm ...Kostki Pan Mirek nie ma a ja chciałbym coś własnego stworzyć .<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=19427">Rewner28</a> — 12 maja 2018, o 10:57</p><hr />
]]></content>
</entry>
</feed>