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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-06-04T18:32:24+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=7292&amp;mode</id>
<entry>
<author><name><![CDATA[Nefarious19]]></name></author>
<updated>2014-06-04T18:32:24+01:00</updated>
<published>2014-06-04T18:32:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7292&amp;p=83382#p83382</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7292&amp;p=83382#p83382"/>
<title type="html"><![CDATA[Re: Dodawanie diod LED na przycisku i odejmowanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7292&amp;p=83382#p83382"><![CDATA[
<div class="quotetitle">Ds3 napisał(a):</div><div class="quotecontent"><br />Muszę zmienić podejście do języka C, bo widzę, że lubię komplikować sobie życie<br /></div><br /><br />Ja sam jestem bardzo początkujący i jeśli Ci mogę coś doradzić to powiem jedno. Najdzie Cie ochota żeby spróbować jakoś inaczej pomigać diodami? Migaj. Chcesz zrobić woltomierz? Rób. Chcesz coś innego? działaj. Język C nie jest wcale taki straszny jak go malują. Wystarczy logicznie myśleć i kombinować. Trzeba też mistrzów podpatrywać jak np Pan Mirek czy inni wyjadacze na forum <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> wszystko przyjdzie z czasem <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> ja też mam czasem problemy żeby coś pojąć ale trzeba próbować aż się uda <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=2500">Nefarious19</a> — 4 cze 2014, o 18:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Ds3]]></name></author>
<updated>2014-06-04T17:49:14+01:00</updated>
<published>2014-06-04T17:49:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7292&amp;p=83381#p83381</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7292&amp;p=83381#p83381"/>
<title type="html"><![CDATA[Re: Dodawanie diod LED na przycisku i odejmowanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7292&amp;p=83381#p83381"><![CDATA[
Kombinowałem z tym ograniczeniem naliczania jak słoń pod górę, a to było takie proste <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /><br />Muszę zmienić podejście do języka C, bo widzę, że lubię komplikować sobie życie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><br />Jeszcze raz wszystkim dziękuję i pozdrawiam!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1783">Ds3</a> — 4 cze 2014, o 17:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Nefarious19]]></name></author>
<updated>2014-06-03T19:55:50+01:00</updated>
<published>2014-06-03T19:55:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7292&amp;p=83272#p83272</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7292&amp;p=83272#p83272"/>
<title type="html"><![CDATA[Re: Dodawanie diod LED na przycisku i odejmowanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7292&amp;p=83272#p83272"><![CDATA[
Natchhniony przez uwage kolegi <strong>jacekk232</strong> popełniłem niniejszy program na podstawie kodu do obsługi klawiszy z bloga.<br />klawiszem jeden dodaje się ilość zapalonych diod, klawiszem 2 odejmuje. Zabezpieczenie które chciałeś żeby nie zliczał więcej ni mniej a tylko tyle ile diod jest jest dodane. programy napisany si sprawdzony na ATmedze8. Działa super. oto kod:<br /><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 03-06-2014<br /> *      Author: Rafał<br /> */<br /><br />//inkludowanie bibliotek<br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />//definicje preprocesora<br />#define LED1 (1&lt;&lt;PB0)<br />#define LED2 (1&lt;&lt;PD7)<br />#define LED3 (1&lt;&lt;PD6)<br />#defineLED4 (1&lt;&lt;PD5)<br /><br />#define KLAWISZ1 (1&lt;&lt;PB1)<br />#define KLAWISZ2 (1&lt;&lt;PB2)<br /><br />#define KLAWISZ1_STAN (PINB &amp; KLAWISZ1)<br />#define KLAWISZ2_STAN (PINB &amp; KLAWISZ2)<br /><br />//definicje zmiennych<br />uint8_t debounce1, debounce2;<br />uint8_t ilosc_diod;<br /><br />int main ( void )<br />{<br />//inicjalizacja<br />DDRB |= LED1;<br />DDRD |= LED2 | LED3 | LED4;<br /><br />PORTB |= LED1;<br />PORTD |= LED2 | LED3 | LED4;<br /><br />DDRB &amp;= ~( KLAWISZ1 | KLAWISZ2);<br />PORTB |= KLAWISZ1 | KLAWISZ2;<br /><br />_delay_ms(10);<br />debounce1 = 0;<br />debounce2 = 0;<br /><br />while(1)<br />{<br /><br />if ( !debounce1 &amp;&amp; !KLAWISZ1_STAN )<br />{<br />debounce1 = 1;<br /><br />if(ilosc_diod &lt; 4) //zabezpieczenie przed zliczaniem więcej niż 4<br />{<br />ilosc_diod++;<br />}<br /><br />}<br />else if ( debounce1 &amp;&amp; KLAWISZ1_STAN) debounce1++;<br /><br />if ( !debounce2 &amp;&amp; !KLAWISZ2_STAN )<br />{<br />debounce2 = 1;<br /><br />if (ilosc_diod &gt; 0)//zabezpieczenie przed zliczaniem mniej niż 0<br />{<br />ilosc_diod--;<br />}<br />}<br />else if ( debounce2 &amp;&amp; KLAWISZ2_STAN) debounce2++;<br /><br />if (ilosc_diod == 0)<br />{<br />PORTB |= LED1;<br />PORTD |= LED2 | LED3 | LED4;<br /><br />}<br /><br /><br />if (ilosc_diod == 1)<br />{<br />PORTB &amp;= ~LED1;<br />PORTD |= LED2 | LED3 | LED4;<br />}<br /><br />if (ilosc_diod == 2)<br />{<br />PORTB &amp;= ~LED1;<br />PORTD &amp;= ~LED2;<br />PORTD |=  LED3 | LED4;<br />}<br /><br />if (ilosc_diod == 3)<br />{<br />PORTB &amp;= ~LED1;<br />PORTD &amp;= ~LED2;<br />PORTD &amp;= ~LED3;<br />PORTD |=  LED4;<br />}<br /><br />if (ilosc_diod == 4)<br />{<br />PORTB &amp;= ~LED1;<br />PORTD &amp;= ~LED2;<br />PORTD &amp;= ~LED3;<br />PORTD &amp;= ~LED4;<br />}<br /><br /><br /><br />}<br /><br /><br />}[/syntax]<br /><br /><br /><br />Diody podłączone mam katodami ale wystarczy że przy makrach je ustawisz tak jakbyś miał anodami i zanegujesz tyldą (~)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2500">Nefarious19</a> — 3 cze 2014, o 19:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[gumeni]]></name></author>
<updated>2014-06-03T19:44:15+01:00</updated>
<published>2014-06-03T19:44:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7292&amp;p=83268#p83268</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7292&amp;p=83268#p83268"/>
<title type="html"><![CDATA[Re: Dodawanie diod LED na przycisku i odejmowanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7292&amp;p=83268#p83268"><![CDATA[
[syntax=c]if( !key_lock &amp;&amp; !(PINB &amp; KEY1 ) )  {<br />          key_lock = 1;<br /> <br />   // reakcja na PRESS (wcinięcie przycisku)<br />        if(press&lt;3) press++;<br /> <br />  } else if( key_lock &amp;&amp; (PINB &amp; KEY1 ) ) key_lock++;[/syntax]<br /><br />Dla przypadku z odejmowaniem postąp analogicznie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3088">gumeni</a> — 3 cze 2014, o 19:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Ds3]]></name></author>
<updated>2014-06-03T19:39:00+01:00</updated>
<published>2014-06-03T19:39:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7292&amp;p=83267#p83267</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7292&amp;p=83267#p83267"/>
<title type="html"><![CDATA[Re: Dodawanie diod LED na przycisku i odejmowanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7292&amp;p=83267#p83267"><![CDATA[
Kodzik od <strong>jacekk232</strong> działa prawidłowo. Próbowałem też od <strong>Człowiek_Zlew</strong> ale ten szaleje, zapalają się od razy 3 diody.<br />A jeszcze mam pytanie. Istnieje jakiś sposób, aby nie wykraczać poza zakres? tzn. gdy świecą mi się wszystkie diody LED i kliknę na przycisk to dalej dodaje i później muszę odjąć to dwoma klikami i powrócić. To samo jest, jeśli świeci się jedna dioda LED i kliknę na odejmujący. Chodzi o to, aby np. max to były 3 kliki i dalej nie zliczało.<br /><br />Dzięki wszystkim za dotychczasową pomoc!<br />Pozdrawiam!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1783">Ds3</a> — 3 cze 2014, o 19:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Człowiek_Zlew]]></name></author>
<updated>2014-06-03T18:37:01+01:00</updated>
<published>2014-06-03T18:37:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7292&amp;p=83255#p83255</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7292&amp;p=83255#p83255"/>
<title type="html"><![CDATA[Re: Dodawanie diod LED na przycisku i odejmowanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7292&amp;p=83255#p83255"><![CDATA[
[syntax=c]} else if( key1_lock &amp;&amp; (PINB &amp; KEY2 ) ) key1_lock++;<br /> <br />  if(press==1) PORTB|=LED;<br />  if(press==2) PORTB|=LED1;<br />  if(press==3) PORTB|=LED2;<br /> }<br /> <br />}[/syntax]<br /><br />PORTB|=LED ale nawet jak odejmiesz wartośc portu zostaje, czyli zrób PORTB = LED; i PORTB=LED1; PORTB=LED2;<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2106">Człowiek_Zlew</a> — 3 cze 2014, o 18:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Nefarious19]]></name></author>
<updated>2014-06-03T18:34:15+01:00</updated>
<published>2014-06-03T18:34:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7292&amp;p=83254#p83254</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7292&amp;p=83254#p83254"/>
<title type="html"><![CDATA[Re: Dodawanie diod LED na przycisku i odejmowanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7292&amp;p=83254#p83254"><![CDATA[
<div class="quotetitle">jacekk232 napisał(a):</div><div class="quotecontent"><br />Cytat Mirka z bloga <!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2012/10/ob" >http://mirekk36.blogspot.com/2012/10/ob</a><!-- m --> ... w-cd2.html<br />Cytuj:<br />W powyższym kodzie, dziwnym może wydawać się ten _delay_ms(10), ale tak jak w opisie okazuje się, że wprowadziłem po prostu sztuczne opóźnienie po załączeniu podciągania programowego, bo czas narastania stanu wysokiego był tak powolny, że szybciej zadziałał pierwszy IF i po starcie programu, okazywało się, że klawisz jest prawie zawsze wciśnięty. Gdy dodamy byle jakie opóźnienie albo zewnętrzny rezystor np 4,7K to można zapomnieć o tym _delay'u<br /></div><br /><br />Obsługi klawiszy uczyłem się  z BB a tam tego delay'a nie ma<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2500">Nefarious19</a> — 3 cze 2014, o 18:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2014-06-03T18:16:51+01:00</updated>
<published>2014-06-03T18:16:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7292&amp;p=83251#p83251</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7292&amp;p=83251#p83251"/>
<title type="html"><![CDATA[Re: Dodawanie diod LED na przycisku i odejmowanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7292&amp;p=83251#p83251"><![CDATA[
<div class="quotetitle">Nefarious19 napisał(a):</div><div class="quotecontent"><br />A po jasną anielkę <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> po co to?<br /></div><br />Cytat Mirka z bloga <!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2012/10/obsuga-klawiszy-drgania-stykow-cd2.html" >http://mirekk36.blogspot.com/2012/10/ob ... w-cd2.html</a><!-- m --><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />W powyższym kodzie, dziwnym może wydawać się ten _delay_ms(10), ale tak jak w opisie okazuje się, że wprowadziłem po prostu sztuczne opóźnienie po załączeniu podciągania programowego, bo czas narastania stanu wysokiego był tak powolny, że szybciej zadziałał pierwszy IF i po starcie programu, okazywało się, że klawisz jest prawie zawsze wciśnięty. Gdy dodamy byle jakie opóźnienie albo zewnętrzny rezystor np 4,7K to można zapomnieć o tym _delay'u <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /></div><br /><br />Spróbuj zrobić tak<br />[syntax=c]if(press==1)<br />{<br />PORTB |= LED;<br />PORTB &amp;=~LED1;<br />PORTB &amp;=~LED2;<br />}<br />if(press==2)<br />{<br />PORTB |= LED;<br />PORTB |= LED1;<br />PORTB &amp;=~LED2;<br />}<br />if(press==3)<br />{<br />PORTB |= LED;<br />PORTB |= LED1;<br />PORTB |= LED2;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 3 cze 2014, o 18:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Nefarious19]]></name></author>
<updated>2014-06-03T17:57:37+01:00</updated>
<published>2014-06-03T17:57:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7292&amp;p=83247#p83247</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7292&amp;p=83247#p83247"/>
<title type="html"><![CDATA[Re: Dodawanie diod LED na przycisku i odejmowanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7292&amp;p=83247#p83247"><![CDATA[
A po jasną anielkę <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> po co to?<br /><br /><br />[syntax=c]// oczekiwanie na ustalenie się stanu wysokiego na wejściu klawisza<br /> _delay_ms(10);[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2500">Nefarious19</a> — 3 cze 2014, o 17:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Ds3]]></name></author>
<updated>2014-06-03T17:54:01+01:00</updated>
<published>2014-06-03T17:54:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7292&amp;p=83244#p83244</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7292&amp;p=83244#p83244"/>
<title type="html"><![CDATA[Dodawanie diod LED na przycisku i odejmowanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7292&amp;p=83244#p83244"><![CDATA[
Witam!<br /><br />Mam jeszcze jeden problem <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br />Otóż stworzyłem taki programik:<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#define LED (1&lt;&lt;PB0)<br />#define LED1 (1&lt;&lt;PB1)<br />#define LED2 (1&lt;&lt;PB2)<br />#define KEY1 (1&lt;&lt;PB3)<br />#define KEY2 (1&lt;&lt;PB4)<br /><br />uint8_t key_lock, key1_lock;<br />int press;<br /><br />int main(void) {<br /><br /> PORTB |= KEY1 | KEY2;  // podciągamy linie klawiszy do VCC<br /> DDRB |= LED | LED1 | LED2;   // pin LED jako WYjście<br /><br />// oczekiwanie na ustalenie się stanu wysokiego na wejściu klawisza<br /> _delay_ms(10);<br /><br /> while(1) {<br /><br />  if( !key_lock &amp;&amp; !(PINB &amp; KEY1 ) )  {<br />  key_lock = 1;<br /><br />   // reakcja na PRESS (wcinięcie przycisku)<br />   press++;<br /><br />  } else if( key_lock &amp;&amp; (PINB &amp; KEY1 ) ) key_lock++;<br /><br />  if( !key1_lock &amp;&amp; !(PINB &amp; KEY2 ) )  {<br />  key1_lock = 1;<br /><br />   // reakcja na PRESS (wcinięcie przycisku)<br />   press--;<br /><br />  } else if( key1_lock &amp;&amp; (PINB &amp; KEY2 ) ) key1_lock++;<br /><br />  if(press==1) PORTB|=LED;<br />  if(press==2) PORTB|=LED1;<br />  if(press==3) PORTB|=LED2;<br /> }<br /><br />}[/syntax]<br /><br />Program powinien działać w następujący sposób: przycisk 1 (KEY1) dodaje do zmiennej PRESS po 1 na klik i zapalają się kolejno diody LED. Natomiast na przycisku 2 (KEY2) ma nastąpić odjęcie po jednej diodzie LED na przycisk. Czyli krótko mówiąc; jeden przycisk dodaje, a drugi odejmuje diody LED.<br />Problem polega na tym, że można tylko dodawać diody LED, program nie odejmuje diody LED. Jak w zmiennej int wpiszę, press=4; to znowu działa tylko przycisk 2, który odejmuje - na początku świecą się wszystkie diody LED i po kolei mogę je gasić, ale znowu nie mogę dodawać.<br />Kod robię według kilku poradników i według tego co jest tam napisane powinno wszystko działać. Z tym, że w poradnikach nie ma uwzględnionych przycisków, tylko dodawanie i odejmowanie w kodzie.<br /><br />Pozdrawiam!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1783">Ds3</a> — 3 cze 2014, o 17:54</p><hr />
]]></content>
</entry>
</feed>