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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-12-28T22:59:55+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=5309&amp;mode</id>
<entry>
<author><name><![CDATA[kaka0204]]></name></author>
<updated>2013-12-28T22:59:55+01:00</updated>
<published>2013-12-28T22:59:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5309&amp;p=62657#p62657</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5309&amp;p=62657#p62657"/>
<title type="html"><![CDATA[Re: Dwa stany pracy na 1 przycisku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5309&amp;p=62657#p62657"><![CDATA[
To i ja dodam coś od siebie <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 27-12-2013<br /> *      Author: Damian<br /> */<br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />//#include &lt;avr/interrupt.h&gt;  bez tego...<br />//#include &quot;lcd44780.h&quot;    ...i tego :)<br /><br />#define led1 (1&lt;&lt;PB0)   //dioda pierwsza<br />#define led2 (1&lt;&lt;PB1)   //dioda druga<br />#define key (1&lt;&lt;PB2)    //przycisk<br />#define keyd !(PINB &amp; key) //makro sprawdzajace czy przycisk jest naciniety<br /><br /><br />int main(void)<br />{<br /> DDRB |= (led1 | led2 );<br /> PORTB |= led1;<br /> PORTB &amp;= ~led2;  //koniecznie negacja<br /> DDRB &amp;= ~key;<br /> PORTB |= key;<br /><br /><br /> while(1)<br /><br /> if (keyd) //sprawdzenie czy przycisk jest nacisniety<br /> {<br /> PORTB ^= led1; //zmiana stanu led1<br /> PORTB ^= led2;  //zmiana stanu led2<br /> _delay_ms(300);<br /><br /> }<br /><br /><br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=889">kaka0204</a> — 28 gru 2013, o 22:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[vaffanculo]]></name></author>
<updated>2013-12-28T22:43:51+01:00</updated>
<published>2013-12-28T22:43:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5309&amp;p=62656#p62656</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5309&amp;p=62656#p62656"/>
<title type="html"><![CDATA[Re: Dwa stany pracy na 1 przycisku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5309&amp;p=62656#p62656"><![CDATA[
Nie wiem jak masz diody podpięte oraz przycisk ale spróbuj ten kod<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />//deklaracje funkcji<br />void SetLed1ON();<br />void SetLed2ON();<br /><br />int main(void)<br />{<br />DDRB |= (1 &lt;&lt; PB1); //LED1<br />DDRB |= (1 &lt;&lt; PB2); //LED2<br /><br />DDRD &amp;= ~(1 &lt;&lt; PD0); //Przycisk<br />PORTD |= (1 &lt;&lt; PD0);<br /><br />//glowna petla<br />while (1)<br />{<br />if (!(PIND &amp; (1 &lt;&lt; PD0))) //Jeżeli klawisz wcinięty<br />{<br />if (!(PORTB &amp; (1 &lt;&lt; PB1))) //Jeżeli LED1 ON<br />{<br />SetLed2ON();<br />}<br />else if (!(PORTB &amp; (1 &lt;&lt; PB2))) //Jeżeli LED2 ON<br />{<br />SetLed1ON();<br />}<br />}<br />}<br />}<br /><br />//wlasne funkcje<br />void SetLed1ON()<br />{<br />PORTB |= (1 &lt;&lt; PB2); // LED2 OFF<br />PORTB &amp;= ~(1 &lt;&lt; PB1); // LED1 ON<br />}<br /><br />void SetLed2ON()<br />{<br />PORTB ^= (1 &lt;&lt; PB1); // LED1 OFF<br />PORTB ^= (1 &lt;&lt; PB2); // LED2 ON<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1784">vaffanculo</a> — 28 gru 2013, o 22:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-12-28T22:03:01+01:00</updated>
<published>2013-12-28T22:03:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5309&amp;p=62650#p62650</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5309&amp;p=62650#p62650"/>
<title type="html"><![CDATA[Re: Dwa stany pracy na 1 przycisku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5309&amp;p=62650#p62650"><![CDATA[
proponuję ci zapoznać się z tym poradniczkiem <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><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> — 28 gru 2013, o 22:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Ds3]]></name></author>
<updated>2013-12-28T21:44:39+01:00</updated>
<published>2013-12-28T21:44:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5309&amp;p=62642#p62642</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5309&amp;p=62642#p62642"/>
<title type="html"><![CDATA[Dwa stany pracy na 1 przycisku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5309&amp;p=62642#p62642"><![CDATA[
Witam!<br /><br />Próbuje napisać program, który działa w następujący sposób: świeci się czerwona dioda LED (PB2). Gdy naciskam na przycisk TC (podłączony jest do PD0) to zaświeca się zielona dioda LED (PB1) i gaśnie jednocześnie czerwona. Czyli ogólnie chodzi o to, aby na jednym przycisku zmieniać stan dwóch diod LED. Jednocześnie nie mogą obydwie zapalić się w tym samym czasie i zgasnąć. Program, który napisałem poniżej działa w taki sposób: świeci się zielona dioda LED. Naciskam na TC: zielona gaśnie i czerwona się zapala. Klikam na TC: gaśnie czerwona i zapala się zielona - jest na razie dobrze. Ale teraz znowu klikam na TC i zapala się jednocześnie zielona i czerwona. Teraz to już chyba jest losowanie: raz zgaśnie, raz się zaświeci, obie zaświecą. Ale obie nie gasną, zawsze minimum jedna świeci. Naciśnięcie na przycisk jest zawsze odczytywane - albo gasną/zaświecają się albo troszkę ściemniają/rozjaśniają się. Nie wiem gdzie popełniłem błąd :/<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br /><br /><br />uint8_t przycisk;  //obsługa tact switch<br />uint8_t dodaj=0;   //po naciśnięciu zmienia stan na 1<br /><br />//deklaracje funkcji<br />void on_led (void);<br />void on_led2 (void);<br /><br /><br />int main(void){<br /><br />DDRB|= (1&lt;&lt;PB3) | (1&lt;&lt;PB4);  //LED pb1 zielona pb2 czerwona pb3 żółta pb4 czerwona<br /><br />PORTD|=(1&lt;&lt;PD0); //przycisk<br /><br />//glowna petla<br />while(1){<br /><br /><br />if(!przycisk &amp;&amp; !(PIND &amp; (1&lt;&lt;PD0))){<br />przycisk=1; dodaj^=1; }  //zmienia stan (0 lub 1)<br />else if(przycisk &amp;&amp; (PIND &amp; (1&lt;&lt;PD0))){ przycisk++; }<br /><br />if(!dodaj) {on_led();}   //jeśli prawda (czyli inne niż 0) <br />else {on_led2();}        //jeśli fałsz<br />}<br /><br /><br />}<br /><br />//wlasne funkcje<br />void on_led (void){   //zielona dioda LED<br /><br />DDRB|=(1&lt;&lt;PB1);<br />   PORTB^=(1&lt;&lt;PB1);<br /><br />}<br /><br />void on_led2 (void){ //czerwona dioda LED<br /><br />DDRB|=(1&lt;&lt;PB2);<br />   PORTB^=(1&lt;&lt;PB2);<br /><br />}[/syntax]<br /><br />Program chcę wykorzystać dla prostego alarmu - załączony/wyłączony. Oczywiście muszę jeszcze dodać wejście we funkcji z czujnika pir. Ale na razie mam problem z głównym kodem <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Pozdrawiam!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1783">Ds3</a> — 28 gru 2013, o 21:44</p><hr />
]]></content>
</entry>
</feed>