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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-03-30T23:14:19+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=20499&amp;mode</id>
<entry>
<author><name><![CDATA[APAP75]]></name></author>
<updated>2018-03-30T23:14:19+01:00</updated>
<published>2018-03-30T23:14:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20499&amp;p=206305#p206305</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20499&amp;p=206305#p206305"/>
<title type="html"><![CDATA[Re: Kontrola ilosci wcisniec przycisku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20499&amp;p=206305#p206305"><![CDATA[
[syntax=c]while(1)<br />   {<br />       //główna pętla programu<br /> <br />       if ((PIND &amp; (1&lt;&lt;PIND3)))<br />           {//klawisz naciśnięty<br />             przycisk++;<br />           }<br />    }[/syntax]<br /><br />Jak już poprawisz nawiasy, to przy trzymaniu przycisku zmienna &quot;przycisk&quot; będzie się cały czas inkrementować w pętli. W  ten sposób zrobiłem sobie kiedyś &quot;losowanie&quot; przy elektronicznej kostce do gry - działało świetnie   <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br /><br />Co do reszty - jest tysiące działających rozwiązań - lepszych lub gorszych. W tym momencie musisz zrobić poprawną obsługę przycisku.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6195">APAP75</a> — 30 mar 2018, o 23:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-03-27T15:10:11+01:00</updated>
<published>2018-03-27T15:10:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20499&amp;p=206127#p206127</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20499&amp;p=206127#p206127"/>
<title type="html"><![CDATA[Re: Kontrola ilosci wcisniec przycisku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20499&amp;p=206127#p206127"><![CDATA[
<div class="quotetitle">fcs napisał(a):</div><div class="quotecontent"><br />ak zrealizowac jednoczesnie odliczanie czasowe do trzech i warunek pieciuklikniec<br /></div><br />Najpierw zastanów się nad poprawną obsługą przycisku i nieblokującą - a wtedy możesz iść dalej. Polecam ci książkę<br /><br /><!-- m --><a class="postlink" href="http://atnel.pl/mikrokontrolery-avr-jezyk-c.html" >http://atnel.pl/mikrokontrolery-avr-jezyk-c.html</a><!-- m --><br /><br />bo masz pełno błędów w swoich kodach, przede wszystkim z doborem typów - tak coś myślę, że do tej pory na andruino jechałeś ?<br /><br />zanim ew rzucisz okiem do książki spójrz na bloga:<br /><br /><!-- 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 --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 27 mar 2018, o 15:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[fcs]]></name></author>
<updated>2018-03-27T15:01:59+01:00</updated>
<published>2018-03-27T15:01:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20499&amp;p=206126#p206126</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20499&amp;p=206126#p206126"/>
<title type="html"><![CDATA[Re: Kontrola ilosci wcisniec przycisku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20499&amp;p=206126#p206126"><![CDATA[
To tak, fakt, ale chodzi mi bardziej o sam algorytm dzialania przycisku,  jak zrealizowac jednoczesnie odliczanie czasowe do trzech i warunek pieciuklikniec, zeby nic nie kolidowało.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3896">fcs</a> — 27 mar 2018, o 15:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[JarekB]]></name></author>
<updated>2018-03-27T13:58:34+01:00</updated>
<published>2018-03-27T13:58:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20499&amp;p=206123#p206123</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20499&amp;p=206123#p206123"/>
<title type="html"><![CDATA[Re: Kontrola ilosci wcisniec przycisku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20499&amp;p=206123#p206123"><![CDATA[
Tak na samym początku to chyba tu nakrętoliłeś w tym kawałku <br />[syntax=c]while(1);<br />    //główna pętla programu<br /> <br />    if ((PIND &amp; (1&lt;&lt;PIND3)))<br />        {//klawisz naciśnięty<br />           przycisk++;<br />        }<br /> <br /> <br />}[/syntax]<br />Raczej powinieneś otworzyć nawias po while(1)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18188">JarekB</a> — 27 mar 2018, o 13:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[fcs]]></name></author>
<updated>2018-03-28T10:50:42+01:00</updated>
<published>2018-03-27T13:13:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20499&amp;p=206122#p206122</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20499&amp;p=206122#p206122"/>
<title type="html"><![CDATA[Kontrola ilosci wcisniec przycisku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20499&amp;p=206122#p206122"><![CDATA[
Witam<br />Moj problem polega na tym ze nie moge dojsc, jak zbudowac program w ktorym:<br /><br />5 razy klikniesz przyciskiem w czasie do 3 sek i urzadzenie robi jakies zadanie. Jak polaczyc odliczanie timera z funkcja for zliczajaca kliki <br /><br />Cos probowalem sklecic, ale nie do konca funkcjonuje tak jak bym tego chcial.<br />Potrafił bedzie ktos pomoc?<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />#define LED1 PB2<br />#define LED2 PB3<br />#define LED3 PB4<br /><br />//definicja początkowej wartości timera<br />#define timer_start 0<br /><br />//zmienna pomocnicza-licznik używana w przerwaniu<br />volatile uint8_t cnt=0;<br />volatile uint8_t przycisk=0;<br /><br />int main(void)<br />{<br /><br />    //########### I/O ###########<br />    //port D jako wejscie<br />    DDRD &amp;= ~(1&lt;&lt;PD2);<br />    DDRD &amp;= ~(1&lt;&lt;PD3);<br />    DDRD &amp;= ~(1&lt;&lt;PD4);<br /><br />    DDRB  |= (1&lt;&lt;LED1) | (1&lt;&lt;LED2) | (1&lt;&lt;LED3); //Ustawienie pinów sterujących diodami<br />    PORTD = 0xFF;<br />    //##########################<br /><br />    //######## konfiguracja timera ##############<br />    TIMSK |= (1&lt;&lt;TOIE0);           //Przerwanie overflow (przepełnienie timera)<br />    TCCR0 |= (1&lt;&lt;CS02) | (1&lt;&lt;CS00); // źródłem CLK, preskaler 1024<br />    TCNT0 = timer_start;//          //Początkowa wartość licznika<br />    //###########################################<br /><br />    sei();//Globalne uruchomienie przerwań<br /><br />    while(1);<br />    //główna pętla programu<br /><br />    if ((PIND &amp; (1&lt;&lt;PIND3)))<br />    {//klawisz naciśnięty<br />       przycisk++;<br />    }<br /><br /><br />}<br /><br />void delayms(unsigned int ms)<br />{<br /> unsigned int i;<br /> for (i=0;i&lt;ms;i++)<br /> {<br /> delay(1000);<br /> asm volatile (<br /> &quot;WDR&quot;::);<br /> }<br />}<br /><br /><br />int dioda(void)<br />{<br />int z=0;<br />for (z;z&lt;=5;z++)<br /> {<br />PORTB ^=(1&lt;&lt;LED1);<br /> delayms(1000);<br /> PORTB &amp;=~ (1&lt;&lt;LED1);<br /> delayms(1000);<br /> }<br /><br /> return (0);<br />}<br /><br />//############ Procedura obsługi przerwania od przepełnienia timera ############<br />ISR(TIMER0_OVF_vect)<br />{<br />TCNT0 = timer_start;          //Początkowa wartość licznika<br /><br />if (przycisk==5)<br />{//klawisz naciśnięty<br />   cnt=0;<br />   PORTB ^=(1&lt;&lt;LED2); //wlaczyliśmy LED1<br />}<br />else<br />{//klawisz nie jest naciśnięty<br />  if (cnt&lt;100) cnt++;<br />  else<br />  {<br />  PORTB &amp;=~ (1&lt;&lt;LED2); //wyłącz LED1<br />  przycisk=0;<br />  }<br />}<br /><br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3896">fcs</a> — 27 mar 2018, o 13:13</p><hr />
]]></content>
</entry>
</feed>