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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-12-19T12:51:17+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=19715&amp;mode</id>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2017-12-19T12:51:17+01:00</updated>
<published>2017-12-19T12:51:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19715&amp;p=200800#p200800</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19715&amp;p=200800#p200800"/>
<title type="html"><![CDATA[Re: Scrollowanie tekstu w poziomie HD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19715&amp;p=200800#p200800"><![CDATA[
Aby dokończyć temat piszę, że udało mi się osiągnąć cel, jeśli chodzi o zmianę stanu bitów portu C. Otóż moje założenie okazało się<br />słuszne, tzn. jeżeli dany przycisk ma przypisane różne warianty zmiany stanu tych bitów, ale są one oddzielone poszczególnymi case,<br />a wiec np. jeśli w case 0 przycisk ustawia port:<br /><br />[syntax=c]PORTC |= DCBA_4;<br />PORTC &amp;= ~(DCBA_1 | DCBA_2 | DCBA_3);[/syntax]<br /><br />a w case 1<br /><br />[syntax=c]PORTC |= DCBA_2 | DCBA_4;<br />PORTC &amp;= ~(DCBA_1 | DCBA_3);[/syntax]<br /><br />i w kolejnych case, jeśli takowe istnieją ten sam przycisk wykonuje podobną prace, to wszystko działa prawidłowo. Zapisy typu<br />0b00000101 itp. nie chciały działać prawidłowo. Zresztą napisałem wszystko od nowa. Wesołych Świąt i do Siego Roku <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=10257">Robert_1967</a> — 19 gru 2017, o 12:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2017-12-17T16:57:40+01:00</updated>
<published>2017-12-17T16:57:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19715&amp;p=200715#p200715</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19715&amp;p=200715#p200715"/>
<title type="html"><![CDATA[Re: Scrollowanie tekstu w poziomie HD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19715&amp;p=200715#p200715"><![CDATA[
Dzięki kol. ciamciak za odpowiedź na mój post.<br />Ale czy ja nie robię dokładnie tego, o czym piszesz ? Przy case 0 przyciskiem ustawiam jakiś tam stan portu, a przy case 1 tym samym przyciskiem ustawiam<br />inny stan tego samego portu. Wiem, że można z tablicami. Kol. dambo pokazywał, jak to się robi, ale w tym przykładzie akurat zastosowałem tą metodę.<br />Oczywiście ja sam sobie tak to wymyśliłem, co nie znaczy, że to ma działać, dlatego zapytałem forum. Myślałem, że jeśli instrukcje zmiany stanu portu<br />są jakby &quot;odseparowane&quot; w różnych case (case 0, case 1, case 2. itd.....), to program będzie działał, pomimo tego, że raz przycisk nr1 ustawia por np. 00000001,<br />a w innym przypadku ( kolejne case ... )  np. 00001110. Niestety jest tak, że dwa, trzy razy przełączy prawidłowo, a potem przycisk przestaje reagować.<br />Zachowuje się to przypadkowo i nieprzewidywalnie.<br /><br />Przepraszam. Trochę szybko odpisałem bez przemyślenia. Chodzi Tobie o obsługę przycisku, a nie powiedzmy obsługę menu. Trochę mi się lampka zapala, ale<br />czy mógłbyś podać jakiś bardzo prosty przykład, który pomógłby mi lepiej zaskoczyć ?.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 17 gru 2017, o 16:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ciamciak]]></name></author>
<updated>2017-12-16T20:43:45+01:00</updated>
<published>2017-12-16T20:43:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19715&amp;p=200673#p200673</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19715&amp;p=200673#p200673"/>
<title type="html"><![CDATA[Re: Scrollowanie tekstu w poziomie HD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19715&amp;p=200673#p200673"><![CDATA[
Możesz w obsłudze klawisza wybierać switchem jaka funkcja ma być uruchomiona przez przycisk, w zależności od położenia menu. <br /><br />Choć zwykle robi się to w oparciu o tablice struktur, w których są zmienne i wskaźniki na funkcje.<br />W GB masz sporo o wskaźnikach np. w rozdziale o UART.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1254">ciamciak</a> — 16 gru 2017, o 20:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2017-12-16T19:52:13+01:00</updated>
<published>2017-12-16T19:52:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19715&amp;p=200671#p200671</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19715&amp;p=200671#p200671"/>
<title type="html"><![CDATA[Re: Scrollowanie tekstu w poziomie HD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19715&amp;p=200671#p200671"><![CDATA[
Czy na prawdę nie ma nikogo, kto zechciałby pomóc i ewentualnie zasugerować, jak sobie z tym poradzić ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 16 gru 2017, o 19:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2017-12-16T07:38:32+01:00</updated>
<published>2017-12-16T07:38:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19715&amp;p=200631#p200631</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19715&amp;p=200631#p200631"/>
<title type="html"><![CDATA[Re: Scrollowanie tekstu w poziomie HD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19715&amp;p=200631#p200631"><![CDATA[
Witam wszystkich.<br />Chciałem pójść trochę dalej z programem i napisałem kod, który nie chce działać w 100% tak, jak bym tego oczekiwał. Mam dwa ekrany zmieniane przyciskami<br />góra i dół. W pierwszym ekranie wyświetlają się teksty 1-4, a w drugim 5-8. Dodatkowo mam cztery przyciski, które są jakby &quot;przyporządkowane&quot; czterem <br />linijkom. Chciałem, a żeby przyciśnięcie któregoś z przycisków zmieniało stany portu C (zapalają się diody) i tak też się dzieje. Jest tylko jeden problem, że kiedy<br />jestem w ekranie 1-4, to na przykład przycisk nr1 ustawia PORTC = 0b00000001; <br />Kiedy jestem w ekranie 5-8, to ten sam przycisk nr1 ma np. ustawić PORTC = 0b00000110;<br />Jest tu chyba konflikt i program się wykrzacza, tzn. nie zawsze ustawia port zgodnie z założeniem.<br />Sądziłem, że jeżeli jest case 0 i case 1, to będzie wszystko działać prawidłowo, a tu zonk. Proszę szanownych kolegów o jakieś wyjście z sytuacji, ponieważ<br />nie wiem, jak to dalej zadziałać.<br /><br />[syntax=c]plk.c<br /> <br />char screen_1&#91;&#93; = &quot; 1.Text nr 1        &quot;;<br />char screen_2&#91;&#93; = &quot; 2.Text nr 2        &quot;;<br />char screen_3&#91;&#93; = &quot; 3.Text nr 3        &quot;;<br />char screen_4&#91;&#93; = &quot; 4.Text nr 4        &quot;;<br />//----------------------------------------<br />char screen_5&#91;&#93; = &quot; 5.Text nr 5        &quot;;<br />char screen_6&#91;&#93; = &quot; 6.Text nr 6        &quot;;<br />char screen_7&#91;&#93; = &quot; 7.Text nr 7        &quot;;<br />char screen_8&#91;&#93; = &quot; 8.Text nr 8        &quot;;<br /> <br />int8_t lcd_position = 0;               <br /> <br />void position(uint8_t element)<br />{<br />                switch(element)<br />        {<br />        case 0:<br /> <br />                lcd_locate(0,1);<br />                lcd_str(screen_1);      // napis z pamięci RAM<br />                lcd_locate(1,1);<br />                lcd_str(screen_2);<br />                lcd_locate(2,1);<br />                lcd_str(screen_3);<br />                lcd_locate(3,1);<br />                lcd_str(screen_4);<br /><br />        if(przycisk1())<br />        {<br />        PORTC = 0b00000001;<br />        }<br />        if(przycisk2_obsluga())<br />        {<br />        PORTC = 0b00000011;<br />        }<br />        if(przycisk3_obsluga())<br />        {<br />        PORTC = 0b00000101;<br />        }<br />        if(przycisk4_obsluga())<br />        {<br />        PORTC = 0b00000010;<br />        }<br /> <br />                // kolejne instrukcje<br /> <br />                break;<br /> <br />        case 1:<br /> <br />                lcd_locate(0,1);<br />                lcd_str(screen_5);<br />                lcd_locate(1,1);<br />                lcd_str(screen_6);<br />                lcd_locate(2,1);<br />                lcd_str(screen_7);<br />                lcd_locate(3,1);<br />                lcd_str(screen_8);<br /><br />        if(przycisk1())<br />        {<br />        PORTC = 0b00000110;<br />        }<br />        if(przycisk2())<br />        {<br />        PORTC = 0b00001111;<br />        }<br />        if(przycisk3())<br />        {<br />        PORTC = 0b00001001;<br />        }<br />        if(przycisk4())<br />        {<br />        PORTC = 0b00001010;;<br />        }<br /> <br />                // kolejne instrukcje<br /> <br />                break;<br /> <br />}<br />}<br /><br />//-------------------------------------------<br /> <br />void scrolling_up(void)<br />{<br />        _delay_ms(50);                 <br />        lcd_position++;        <br />        lcd_cls();                             <br /> <br />        if (lcd_position &gt; 4)  <br />        {<br />                lcd_position = 4;  <br />        }<br />}<br /> <br />void scrolling_down(void)<br />{<br />        _delay_ms(50);                 <br />        lcd_position--;        <br />        lcd_cls();                             <br /> <br />        if (lcd_position &lt; 1)  <br />        {<br />                lcd_position = 0;  <br />        }<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 16 gru 2017, o 07:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2017-12-06T20:33:09+01:00</updated>
<published>2017-12-06T20:33:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19715&amp;p=200115#p200115</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19715&amp;p=200115#p200115"/>
<title type="html"><![CDATA[Re: Scrollowanie tekstu w poziomie HD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19715&amp;p=200115#p200115"><![CDATA[
Hej dambo.<br />Nie ma co pisać sorki. To ja dziękuję za chęć pomocy. przy okazji, to nie masz jakiejś wskazówki, jak się zabrać za temat dwa posty wcześniej ?<br />A może jeszcze ktoś ma jakiś pomysł ?. dzięki.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 6 gru 2017, o 20:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2017-12-06T13:54:47+01:00</updated>
<published>2017-12-06T13:54:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19715&amp;p=200095#p200095</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19715&amp;p=200095#p200095"/>
<title type="html"><![CDATA[Re: Scrollowanie tekstu w poziomie HD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19715&amp;p=200095#p200095"><![CDATA[
Witaj dambo.<br />Jak testowałem zaraz po wgraniu kodu, to przewijanie nie było właściwe. Jak wstawiłem liczbę 8 (tyle jest wierszy i wyświetlacz cztery linie), to jest ok. wyświetlanie polega w moim przypadku tak,<br />że przy starcie, na lcd są screen 1,2,3,4. Przyciśnięcie &quot;scrolling_up&quot; powoduje wyświetlenie screen 2,3,4,5, kolejne przyciśnięcie 3,4,5,6,.... , 4,5,6,7...., 5,6,7,8 i dalej nie idzie. Potem przycisk<br />&quot;scrolling_down&quot; i odwrotna sekwencja.<br /><br />Kiedy podstawię &quot;5&quot;, to jest dokładnie tak:<br /><br />Po odpaleniu wyświetla linie 1,2,3,4. Pierwsze wciśnięcie jest: 2,3,4,5    drugie wciśnięcie jest: 3,4,5,1    trzecie wciśnięcie jest   4,5,1,2   czwatre wciśnięcie jest   5,1,2,3  i dalej nie idzie.<br />Przy &quot;8&quot; działa dobrze.  <img src="https://forum.atnel.pl/images/smilies/icon_question.gif" alt=":?:" title="Znak zapytania" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 6 gru 2017, o 13:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2017-12-06T12:38:24+01:00</updated>
<published>2017-12-06T12:38:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19715&amp;p=200086#p200086</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19715&amp;p=200086#p200086"/>
<title type="html"><![CDATA[Re: Scrollowanie tekstu w poziomie HD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19715&amp;p=200086#p200086"><![CDATA[
Heja.<br />Dzięki dambo za pokazanie innej metody na wykonanie tego działania. O ile mniej na ekranie  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> . Sprawdziłem oba przypadki i na przykład w Twoim zajęcie programu = 2284 bytes i<br /> DATA 205 bytes, natomiast w moim przypadku zajęcie programu = 2478 (czyli więcej) i DATA = 189 bytes (czyli mniej). Zmieniłem również _ILOSC_POZYCJI z 5 na 8. Piszę to w celach poznawczych<br />i czysto dydaktycznych, ale pewnie któregoś dnia zastosuje w jakimś małym projekcie. Zastanawiam się nadal, jak rozwiązać sprawę wykonywania jakichś przydzielonych działań w zależności od tego,<br />gdzie w danym momencie znajduje się wybrana linia tekstu. Załóżmy, że ustalamy sobie czysto hipotetycznie wiersz, który jest jakby nadrzędny w stosunku do innych. Niech to będzie<br />powiedzmy drugi wiersz i dowolna kolumna (1, x). Teraz kiedy przewijam wiersze w dowolnym kierunku i zatrzymuję się na jakimś wybranym tekście (pozycja (1, x) oczywiście), to po po wciśnięciu<br />przycisku następuje np, zaświecenie diody led (działanie przypisane temu tekstowi). Po odjechaniu z tym tekstem w górę lub w dół informacja jest nadal pamiętana, czyli dioda świeci nadal, a ja<br />przewijam na pozycję (1, x) z kolejnym tekstem i ponownie coś tam uruchamiam przyciskiem. Jak by tu zacząć. Nie mogę ruszyć z miejsca. Może ktoś zaświeci światło w tunelu ?  <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> .<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 6 gru 2017, o 12:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2017-12-06T08:30:48+01:00</updated>
<published>2017-12-06T08:30:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19715&amp;p=200063#p200063</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19715&amp;p=200063#p200063"/>
<title type="html"><![CDATA[Re: Scrollowanie tekstu w poziomie HD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19715&amp;p=200063#p200063"><![CDATA[
Poczytałem w BB to, co kolega Dambo sugerował, ale szczerze się przyznaję bez bicia, że trochę trudne i napisałem &quot;łopatologicznie&quot;<br />kod, dzięki któremu osiągnąłem zamierzony cel. Oczywiście będę drążył temat, ale na ta chwilę zrobiłem,jak niżej. <br /><br /><br />[syntax=c]plk.c<br /><br />char screen_1&#91;&#93; = &quot; 1.Text nr 1        &quot;;<br />char screen_2&#91;&#93; = &quot; 2.Text nr 2        &quot;;<br />char screen_3&#91;&#93; = &quot; 3.Text nr 3        &quot;;<br />char screen_4&#91;&#93; = &quot; 4.Text nr 4        &quot;;<br />char screen_5&#91;&#93; = &quot; 5.Text nr 5        &quot;;<br />char screen_6&#91;&#93; = &quot; 6.Text nr 6        &quot;;<br />char screen_7&#91;&#93; = &quot; 7.Text nr 7        &quot;;<br />char screen_8&#91;&#93; = &quot; 8.Text nr 8        &quot;;<br /><br />int8_t lcd_position = 0;<br /><br />void position(uint8_t element)<br />{<br />switch(element)<br />        {<br />        case 0:<br /><br />        lcd_locate(0,1);<br />        lcd_str(screen_1);// napis z pamięci RAM<br />        lcd_locate(1,1);<br />        lcd_str(screen_2);<br />        lcd_locate(2,1);<br />        lcd_str(screen_3);<br />        lcd_locate(3,1);<br />        lcd_str(screen_4);<br /><br />        // dowolne instrukcje<br /><br />        break;<br /><br />        case 1:<br /><br />        lcd_locate(0,1);<br />        lcd_str(screen_2);<br />        lcd_locate(1,1);<br />        lcd_str(screen_3);<br />        lcd_locate(2,1);<br />        lcd_str(screen_4);<br />        lcd_locate(3,1);<br />        lcd_str(screen_5);<br /><br />        // dowolne instrukcje<br /><br />        break;<br /><br />        case 2:<br /><br />        lcd_locate(0,1);<br />        lcd_str(screen_3);<br />        lcd_locate(1,1);<br />        lcd_str(screen_4);<br />        lcd_locate(2,1);<br />        lcd_str(screen_5);<br />        lcd_locate(3,1);<br />        lcd_str(screen_6);<br /><br />        // dowolne instrukcje<br /><br />        break;<br /><br />        case 3:<br /><br />        lcd_locate(0,1);<br />        lcd_str(screen_4);<br />        lcd_locate(1,1);<br />        lcd_str(screen_5);<br />        lcd_locate(2,1);<br />        lcd_str(screen_6);<br />        lcd_locate(3,1);<br />        lcd_str(screen_7);<br /><br />        // dowolne instrukcje<br /><br />        break;<br /><br />        case 4:<br /><br />        lcd_locate(0,1);<br />        lcd_str(screen_5);<br />        lcd_locate(1,1);<br />        lcd_str(screen_6);<br />        lcd_locate(2,1);<br />        lcd_str(screen_7);<br />        lcd_locate(3,1);<br />        lcd_str(screen_8);<br /><br />        // dowolne instrukcje<br /><br />        break;<br />        }<br />}<br /><br />void scrolling_up(void)<br />{<br />_delay_ms(50);<br />lcd_position++;         <br />lcd_cls();<br /><br />if (lcd_position &gt; 4)<br />{<br />lcd_position = 4;   <br />}<br />}<br /><br />void scrolling_down(void)<br />{<br />_delay_ms(50);<br />lcd_position--;         <br />lcd_cls();<br /><br />if (lcd_position &lt; 1)<br />{<br />lcd_position = 0;   <br />}<br /><br />plik &quot;vertical_scrolling.h&quot;<br /><br />//#include &lt;avr/io.h&gt;<br />//#include &lt;util/delay.h&gt;<br />//#include &quot;LCD/lcd44780.h&quot;<br /><br />#ifndef VERTICAL_SCROLLING_H_<br />#define VERTICAL_SCROLLING_H_<br /><br />extern int8_t lcd_position;<br />void scrolling_up(void);<br />void scrolling_down(void);<br />void position(uint8_t element);<br /><br /><br />#endif /* VERTICAL_SCROLLING_H_ */<br /><br /><br />plik main.c wygląda następująco:<br /><br />//#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />//#include &lt;avr/pgmspace.h&gt;<br />#include &quot;LCD/lcd44780.h&quot;<br />#include &quot;buttons.h&quot;<br />#include &quot;vertical_scrolling.h&quot;<br /><br /><br /><br />int main(void)<br />{<br />buttons_init();<br />lcd_init();// inicjalizacja wyświetlacza<br />lcd_cls();<br /><br /><br />while(1)<br />{<br />position(lcd_position);<br /><br />if(up())<br />{<br />scrolling_up();<br />}<br /><br />if(down())<br />{<br />scrolling_down();<br />}<br />}<br />}<br /><br /><br />}[/syntax]<br /><br />Można zrobić przewijanie 2 razy po cztery linijki i są tylko dwa przyciśnięcia klawisza, ale chciałem, a żeby było przewijanie tekstu<br />jakby po linijce, dlatego tak napisałem. Proszę niech się osoby wypowiedzą, czy to totalna porażka w pisaniu chyba bardzo prostego<br />programu (można by pewnie o wiele krócej), czy jest do przyjęcia. Tablice przerobię do flasza. Kod zawiera fragmenty z innych<br />postów na tym forum, a obsługa przycisków z blogu Mirka.<br />Chciałbym jeszcze i tu prośba do kolegów zrobić tak,że jak na przykład linia char screen_3[] = &quot; 3.Text nr 3        &quot;; znajdzie się<br />na pozycji lcd_locate(2, x), czy dowolna inna linia na konkretnej pozycji lcd (0-3) to przyciskając jakiś kolejny przycisk wykona<br />się dowolna instrukcja (np. zapalenie diody led). Nie wiem, jak zacząć.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 6 gru 2017, o 08:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2017-11-30T12:37:06+01:00</updated>
<published>2017-11-30T12:37:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19715&amp;p=199753#p199753</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19715&amp;p=199753#p199753"/>
<title type="html"><![CDATA[Re: Scrollowanie tekstu w poziomie HD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19715&amp;p=199753#p199753"><![CDATA[
Dzięki wielkie.<br />Przeanalizuję temat i jak coś się uda, to napiszę i zamieszczę. A może jeszcze ktoś ma jakiś pomysł ?.<br /><br />Analizuję temat z BB, ale na tą chwilę stanąłem w miejscu z braku czasu. Wrócę do tematu lada moment.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 30 lis 2017, o 12:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2017-11-30T12:18:11+01:00</updated>
<published>2017-11-30T12:18:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19715&amp;p=199750#p199750</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19715&amp;p=199750#p199750"/>
<title type="html"><![CDATA[Re: Scrollowanie tekstu w poziomie HD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19715&amp;p=199750#p199750"><![CDATA[
Dzięki Dambo.<br />Oczywiście mam metodę na osiągnięcie celu chociażby na switch and case. case 0 wyświetl linia 1,2,3,4, case 1 wyświetl linia 2,3,4,5,<br />case......itd i przyciskiem jadę do góry, a drugim jadę w dół, ale nie tak chcę to wykonać. Chciałbym uczyć się bardziej ambitnych<br />kodów, mniej pamięciożernych, a to jest chyba najbardziej łopatologiczna metoda.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 30 lis 2017, o 12:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2017-11-30T11:57:39+01:00</updated>
<published>2017-11-30T11:57:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19715&amp;p=199748#p199748</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19715&amp;p=199748#p199748"/>
<title type="html"><![CDATA[Re: Scrollowanie tekstu w poziomie HD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19715&amp;p=199748#p199748"><![CDATA[
Witam kolegę Dambo.<br />Dzięki za odpowiedź. Napisałem taki kawałek kodu. Przesuwanie tekstu w pionie mi działa z jedną linią. Przycisk powoduje przechodzenie<br />tekstu po wierszach w pętli. W poprzedniej wersji wiersz się nie zmieniał. Inkrementowałem tylko kolumnę i było proste dla mnie.<br />W tym przypadku muszę wyświetlić jednocześnie wszystkie wiersze, po naciskaniu guzika muszę je przewijać jednocześnie i nie<br />mogę załapać, jak to ugryźć. Pewnie nie jest to skomplikowane, ale mam jakaś pomroczność ciemną  <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> <br /><br /><br />[syntax=c]//char nazwa_1&#91;&#93; = &quot;   1.napis_1        &quot;;<br />//char nazwa_2&#91;&#93; = &quot;   2.napis_2&quot;        ;<br />//char nazwa_3&#91;&#93; = &quot;   3.napis_3&quot;        ;<br />//char nazwa_4&#91;&#93; = &quot;   4.napis_4&quot;        ;<br />//char nazwa_5&#91;&#93; = &quot;   5.napis-5&quot;        ;<br />//char nazwa_6&#91;&#93; = &quot;   6.napis-6&quot;        ;<br />//char nazwa_7&#91;&#93; = &quot;   7.napis_7&quot;        ;<br />//char nazwa_8&#91;&#93; = &quot;   8.napis_8&quot;        ;<br /><br />int8_t x=0;int8_t b=0;<br />for(signed char a = 0; a &lt; 4;  a=x)// skrolowanie w pionie<br />    {<br />if(!key1_lock &amp;&amp; !(PIND &amp; button_1))<br />{<br />key1_lock = zwloka_czasowa;// button_1<br />x++;if(x&gt;3)x=0;<br />}<br /><br />else if(key1_lock &amp;&amp; (PIND &amp; button_1))key1_lock ++;<br /><br />    lcd_locate(a,b);<br />    lcd_str(nazwa_1);<br />    _delay_ms(50);<br />    lcd_cls();<br />    }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 30 lis 2017, o 11:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2017-11-30T09:30:51+01:00</updated>
<published>2017-11-30T09:30:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19715&amp;p=199733#p199733</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19715&amp;p=199733#p199733"/>
<title type="html"><![CDATA[Scrollowanie tekstu w poziomie HD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19715&amp;p=199733#p199733"><![CDATA[
Witam i pozdrawiam wszystkich.<br /><br />Ostatnio przerabiałem poradnik Pana Mirka odnośnie scrollowania tekstu w poziomie na wyświetlaczu lcd ze strony<br /><!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2013/07/lcd-scrollowanie-pisanie-kodu-zrodowego.html" >http://mirekk36.blogspot.com/2013/07/lc ... owego.html</a><!-- m --><br /><br />Zmodyfikowałem pliki do obsługi wyświetlacza zgodnie z opisem i wszystko działa doskonale. Pobawiłem się trochę tym zagadnieniem<br /> i dodatkowo napisałem mały kodzik do przesuwania tekstu za pomocą jednego przycisku. Wykląda to tak:<br /><br />[syntax=c]int8_t x=-6;<br />for(signed char b = -6; b &lt; 20;  b=x)// scrollowanie w poziomie<br />    {<br />if(!key1_lock &amp;&amp; !(PIND &amp; button_1))<br />{<br />key1_lock = zwloka_czasowa;// button_1<br />x++;if(x&gt;19)x=-6;<br />}<br /><br />else if(key1_lock &amp;&amp; (PIND &amp; button_1))key1_lock ++;<br /><br />    lcd_locate(a,b);<br />    lcd_str(&quot;Mietek&quot;);<br />        _delay_ms(100);<br />        lcd_cls();[/syntax]<br /><br />Każde przyciśnięcie powoduje przesuwanie tekstu o jedną kolumnę w prawo do momentu całkowitego schowania i następnie<br />pojawienie się od lewej znak po znaku.<br /><br />Chciałbym zrobić podobnie w pionie. Mam np. cztery linijki tekstu i wyświetlają się oczywiście dwie, a pozostałe dwie są ukryte.<br />Chciałbym przewijać tekst w pionie podobnie, jak robię to w poziomie. Proszę o pomoc, jak to można zrobić w praktyce.<br />Dzięki.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 30 lis 2017, o 09:30</p><hr />
]]></content>
</entry>
</feed>