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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2012-12-05T16:51:49+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=1312&amp;mode</id>
<entry>
<author><name><![CDATA[krzysztofz]]></name></author>
<updated>2012-12-05T16:51:49+01:00</updated>
<published>2012-12-05T16:51:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1312&amp;p=20197#p20197</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1312&amp;p=20197#p20197"/>
<title type="html"><![CDATA[Re: Atmega8 - zdalny włącznik komputera za pomocą IR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1312&amp;p=20197#p20197"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />SUGESTIA <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />cieszę się, że jak napisałeś działa ci to gdy używasz 2 przycisków .... OK<br /></div><br /><br />Tak, bo nic nie stoi na przeszkodzie zeby wlaczal sie i 4 razy, wiec dobrze ze napisalem &quot;...wydaje sie dzialac prawidlowo&quot;.<br /><br />Niestety zakup nastepnego tomu ksiazki nie wchodzi w gre (narazie), gdyz pierwszy tom jak widac sprawia problemy. Sprobuje przeanalizowac Twoja odpowiedz i cos temu zaradzic, w ostatecznosci bede zmuszony uzywac dwoch przyciskow. <br /><br />Dziekuje za odpowiedz.<br /><br />Edycja:<br /><br />Udalo mi sie stworyc taki twor i znow wydaje sie dzialac poprawnie. Czy moga byc jakies z tym problemy?<br /><br />[syntax=c]if ( command==1 &amp;&amp; flaga_1==0)<br />{<br />ZMIEN1;<br />flaga_1++; //Zmiana stanu pierwszego wyjscia na przeciwny<br />}<br />else flaga_1=0;<br />[/syntax]<br /><br />Jednak nie zawsze dziala jak powinno. Pomysle jeszcze nad tym.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=709">krzysztofz</a> — 5 gru 2012, o 16:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-12-05T15:43:47+01:00</updated>
<published>2012-12-05T15:43:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1312&amp;p=20189#p20189</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1312&amp;p=20189#p20189"/>
<title type="html"><![CDATA[Re: Atmega8 - zdalny włącznik komputera za pomocą IR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1312&amp;p=20189#p20189"><![CDATA[
SUGESTIA <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />cieszę się, że jak napisałeś działa ci to gdy używasz 2 przycisków .... OK<br /><br />a teraz chcesz jeden przycisk do załączania wyłączania tego samego urządzenia, diody LED itp<br /><br />masz więc dwa rozwiązania, ale zanim je podam to polecam ci przypomnieć sobie jak działa nadawanie z pilota. Gdy nasz ludzki paluch wciśnie klawisz nawet na krótko, to i tak nasz paluch jest powolny i w międzyczasie pilot wypuści serię ramek podczerwieni oddzielonych odstępami zwanymi GAP. Tak więc do odbiornika niech w najgorszym przypadku dolecą dwie ramki - to już sam rozumiesz co się stanie, gdy napiszesz coś takiego<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">if( 5==command ) PORTA ^= (1&lt;&lt;PA0);</div><br /><br />załóżmy że po kliknięciu klawisza nr.5 chcemy zmienić stan diody LED na przeciwny, a dioda podłączona do PORTA PA0<br /><br />pierwsza ramka zmieni stan czyli dioda zgaśnie ale ta druga znowu zmieni i dioda się zapali <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... jak niechcący nadlecą 3 ramki to uda ci się ją zmienić prawidłowo ale jak 4 ramki to znowu źle - więc trzeba byłoby wciąż myśleć i starać się  SZYBKO klikać klawisz - co nieraz przy niektórych pilotach i grubych gumach jest ciężke do realizacji <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />więc:<br /><br />1. musisz albo sam wprowadzać dla każdego takiego IF'a dodać tzw własną maszynę stanów i zapamiętywać ostatnią operację żeby zareagować zawsze TYLKO na pierwszą ramkę która nadleci<br /><br />2. postarać się jednak o drugą książkę:<br /><br /><!-- m --><a class="postlink" href="http://atnel.pl/jezyk-c-pasja-programowania.html" >http://atnel.pl/jezyk-c-pasja-programowania.html</a><!-- m --><br /><br />i poczytać w niej 1-szy rozdział , który dopiero opisuje POCZERWIEŃ od A do Z... <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> a prezentowane tam biblioteki są już nie DYDAKTYCZNE jak w pierwszej książce ale pełne niesamowicie potrzebnych gadżetów. Więc pomyśl sobie - taka biblioteka do obsługi RC5 i nie tylko RC5 przekazuje tobie poza command i address jeszcze taki tajemniczy parametr jak key_time. Wiesz co to jest ? To jest piękny licznik nadlatujących ramek OnLine, więc rozwiązanie twojego kłopotu jest OD RĘKI bez konieczności tworzenia oddzielnych maszyn stanu jak w punkcie wyżej, z tymi bibliotekami twój IF() mógłby wyglądać teraz tak:<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">if( 5==command &amp;&amp; !key_time ) PORTA ^= (1&lt;&lt;PA0);</div><br /><br />widzisz to? sprawdzamy pięknie teraz nie tylko czy wciśnięty klawisz nr 5 ale też czy to właśnie ramka nr. ZERO <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> .... więc nie ma to szans już zareagować na 2-gą, 3-cią , 4-tą irt <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />co więcej - jakbyś chciał np aby jakaś opcja została załączona po dłuższym czasie np 3 sekund (tzn klawisz na pilocie trzeba przytrzymać 3 sekundy żeby coś przełączyć to napiszesz:<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">if( 5==command &amp;&amp; 12==key_time ) PORTA ^= (1&lt;&lt;PA0);</div><br /><br />czyli gdy klawisz 5 i ramka nr. 12 ... bo np 12 ramek nadleci w czasie 3 sekund <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> rozumiesz ? I teraz dla każdego klawisza oddzielnie możesz wykorzystywać wciąż tę samą zmienną key_time jak chcesz i jak ci się żywnie podoba.<br /><br />Takich bibliotek to ja już używam w swoich komercyjnych projektach - są przepięknie dopracowane a jeszcze opisane od podstaw jak je budować - modyfikować itp itd<br /><br />dlatego szczerze polecam drugą książkę i podczerwień w niej opisaną (mój temat konik) .... no ale jeszcze wiele innych ciekawych rzeczy jest.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 5 gru 2012, o 15:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[krzysztofz]]></name></author>
<updated>2012-12-05T14:54:10+01:00</updated>
<published>2012-12-05T14:54:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1312&amp;p=20188#p20188</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1312&amp;p=20188#p20188"/>
<title type="html"><![CDATA[Re: Atmega8 - zdalny włącznik komputera za pomocą IR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1312&amp;p=20188#p20188"><![CDATA[
Jakis czas temu zakupilem ksiazke pana Mirka. Probuje stworzyc na jej podstawie cos pozytecznego. Oczywiscie mam problem. Kod programu do odbioru RC5 wszystkim posiadaczom ksiazki znany, dodalem jedynie pare linijek. Program ma obslugiwac przekazniki, ten sam przycisk pilota ma zalaczony przekaznik wylaczyc, a niezalaczony zalaczyc. Niestety program nie dziala wg moich oczekiwan.<br /><br />Kod programu:<br /><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 2010-09-13<br /> *       Autor: Mirosław Kardaś<br /> */<br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;LCD/lcd44780.c&quot;<br />#include &quot;IR_DECODE/ir_decode.c&quot;<br /><br /><br />/* przydatne definicje pinów wyjsciowych */<br />#define WE_1 PD0<br /><br />/* definicje poleceń dla pinow */<br /><br />#define ZMIEN1 PORTD ^= (1&lt;&lt;WE_1)<br />#define WLACZ_1 PORTD |= (1&lt;&lt;WE_1)<br />#define WYLACZ_1 PORTD &amp;= ~(1&lt;&lt;WE_1)<br /><br />// Deklaracja funkcji kasowania flag i wartosci<br />void kasuj_flagi(void);<br /><br />int main(void) {<br /><br />// Ustawienie pinow jako wyjscia<br />DDRD |= (1&lt;&lt;WE_1);<br />PORTD |= (1&lt;&lt;WE_1);<br /><br />lcd_init();/* inicjalizacja LCD */<br />ir_init();/* inicjalizacja dekodowania IR */<br /><br />sei();/* włączamy globalne przerwania */<br /><br />lcd_locate(0,0);<br />lcd_str_P(PSTR(&quot;Kody pilota RC5&quot;)); /* wyświetl napis w zerowej linii LCD */<br /><br />/* pętla nieskończona */<br />while(1) {<br /><br />if(Ir_key_press_flag) {/* jeśli odebrano prawidłowe kody z pilota */<br /><br />if( !address ) /* jeśli adres == 0 */<br />{<br />if ( command==1 )<br />{<br />ZMIEN1; //Zmiana stanu pierwszego wyjscia na przeciwny<br />}<br /><br />if ( command==3 )<br />{<br />WLACZ_1; //Ustawienie pierwszego wyjscia<br />}<br /><br />if ( command==4 )<br />{<br />WYLACZ_1; //Kasowanie pierwszego wyjscia<br />}<br /><br />lcd_locate(1,0);<br />lcd_str(&quot;key: &quot;);<br />lcd_int(command);/* wyświetl w drugiej linii LCD kod klawisza */<br />lcd_str(&quot; &quot;);<br />}<br />/* wyzerowanie flag odbioru oraz wartości odebranych kodów */<br />kasuj_flagi();<br />}<br />}<br />}<br /><br />// Funkcja kasowania flag i wartosci<br />void kasuj_flagi(void)<br />{<br />Ir_key_press_flag=0;<br />command=0xff;<br />address=0xff;<br />}[/syntax]<br /><br />Problem:<br /><br />Jesli uzywam przyciskow na pilocie 3 i 4 program wydaje sie dzialac prawidlowo. Ale chcialbym aby przelaczanie portu odbywalo sie jednym przyciskiem. Podlaczona dioda LED do portu sygnalizuje zmiane lecz wraca do poprzedniego stanu. Zauwazylem ze przycisniecie przycisku na pilocie na czas trzech migniec diody zmieni stan portu na przeciwny. Niby nic skomplikowanego ale nie moge sobie z tym poradzic. Poprosze o sugestie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=709">krzysztofz</a> — 5 gru 2012, o 14:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-07-21T13:46:26+01:00</updated>
<published>2012-07-21T13:46:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1312&amp;p=10426#p10426</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1312&amp;p=10426#p10426"/>
<title type="html"><![CDATA[Re: Atmega8 - zdalny włącznik komputera za pomocą IR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1312&amp;p=10426#p10426"><![CDATA[
<div class="quotetitle">Bartek napisał(a):</div><div class="quotecontent"><br />Zawsze mam problem z ustawieniem fusebitów odpowiedzialnych za ten podzielnik częstotliwości taktowania procesora, który jest w 168. Tzn. ustawie to zgodnie z datasheet, ale układ nie działa tak jak powinien. Pozdrawiam Bartek.<br /></div><br /><br />W MkAvrCalculator - nawet nie trzeba się nad tym zastanawiać - jeden ruch palca i masz wszystko ustawione <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: kilkunastu sekundach ]</span></strong><br /><br />ooo Sun był pierwszy <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 21 lip 2012, o 13:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2012-07-21T13:45:48+01:00</updated>
<published>2012-07-21T13:45:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1312&amp;p=10425#p10425</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1312&amp;p=10425#p10425"/>
<title type="html"><![CDATA[Re: Atmega8 - zdalny włącznik komputera za pomocą IR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1312&amp;p=10425#p10425"><![CDATA[
dlaczego nie użyjesz sobie MKCalkulatora  ???   ja zawsze ustawiam 8&lt; a zwykle jadę na 16Mhz   &lt;siła przyzwyczajenia&gt;  bez podziału zegara <br />bo i poco jak do reszty mogę sobie użyć prescalera w sofcie <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />moje fusy dla m168 zawsze tak wyglądają  -U lfuse:w:0xFF:m  -U hfuse:w:0xDF:m  -U efuse:w:0xF9:m<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 21 lip 2012, o 13:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Bartek]]></name></author>
<updated>2012-07-21T13:34:51+01:00</updated>
<published>2012-07-21T13:34:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1312&amp;p=10424#p10424</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1312&amp;p=10424#p10424"/>
<title type="html"><![CDATA[Re: Atmega8 - zdalny włącznik komputera za pomocą IR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1312&amp;p=10424#p10424"><![CDATA[
<div class="quotetitle">SunRiver napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle">Bartek napisał(a):</div><div class="quotecontent">Arduino kupiłem w wersji 168, ale wygodniej mi się pisze na m8, a dodatkowo wyczytałem, że zaprogramowaną atmege, mogę włożyć do arduino i wszystko będzie działać. Kod jak dla mnie przyjemniej piszę się w C, niż w środowisku arduino. Problemem jest w jaki sposób zrobić funkcje mostkującą te 2 piny. Pozdrawiam Bartek.<br /></div><br /><br />To bardzo ciekawe co piszesz , bo przecież ja tu żadnej odmiany i wygody nie widzę przecież 168 to tylko nowsza i bogatsza wersja 8 <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /></div><br /><br />Zawsze mam problem z ustawieniem fusebitów odpowiedzialnych za ten podzielnik częstotliwości taktowania procesora, który jest w 168. Tzn. ustawie to zgodnie z datasheet, ale układ nie działa tak jak powinien. Pozdrawiam Bartek.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=159">Bartek</a> — 21 lip 2012, o 13:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2012-07-21T13:32:22+01:00</updated>
<published>2012-07-21T13:32:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1312&amp;p=10423#p10423</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1312&amp;p=10423#p10423"/>
<title type="html"><![CDATA[Re: Atmega8 - zdalny włącznik komputera za pomocą IR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1312&amp;p=10423#p10423"><![CDATA[
<div class="quotetitle">Bartek napisał(a):</div><div class="quotecontent"><br />Arduino kupiłem w wersji 168, ale wygodniej mi się pisze na m8, a dodatkowo wyczytałem, że zaprogramowaną atmege, mogę włożyć do arduino i wszystko będzie działać. Kod jak dla mnie przyjemniej piszę się w C, niż w środowisku arduino. Problemem jest w jaki sposób zrobić funkcje mostkującą te 2 piny. Pozdrawiam Bartek.<br /></div><br /><br />To bardzo ciekawe co piszesz , bo przecież ja tu żadnej odmiany i wygody nie widzę przecież 168 to tylko nowsza i bogatsza wersja 8 <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 21 lip 2012, o 13:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Bartek]]></name></author>
<updated>2012-07-21T13:26:13+01:00</updated>
<published>2012-07-21T13:26:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1312&amp;p=10422#p10422</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1312&amp;p=10422#p10422"/>
<title type="html"><![CDATA[Re: Atmega8 - zdalny włącznik komputera za pomocą IR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1312&amp;p=10422#p10422"><![CDATA[
<div class="quotetitle">SunRiver napisał(a):</div><div class="quotecontent"><br />w zasadzie tak to mam 2 sprawy bo dopiero teraz zauważyłem .....<br /><br />gdzieś kupił arduino z M8  ??<br /><br />najpierw na duino zacznij od zdekodowania kodów swojego pilota <br /><br />np tak ...<br /><br />[syntax=cpp]<br /><br />const int pinIR = 2;<br />const int pinLED=13;<br />int CODE = 0;<br /><br />volatile boolean bounced = 0;<br />const int CODE_LEN = 50;<br />volatile unsigned long durations[CODE_LEN];<br />volatile int GroupCode = 0;<br /><br />void setup()<br />{<br />  pinMode(pinIR , INPUT);<br />  pinMode(pinLED, OUTPUT);<br />  attachInterrupt(0, decodeIR, FALLING);<br />  //wyłaczenie leda<br />  digitalWrite(pinLED, LOW);<br />  Serial.begin(9600);<br />}<br /><br />void loop(){<br />  if(bounced == 1){<br />    int i;<br />    Serial.println(&quot;Start...&quot;);<br />    for(i=0; i&lt;CODE_LEN; i+=1){<br />      Serial.println((unsigned long)durations[i]);<br />    }<br />    digitalWrite(pinLED, LOW);<br />    bounced = 0;<br />    }<br />}<br /><br />void decodeIR(){<br />  if(bounced){return;}<br />  digitalWrite(pinLED, HIGH);<br />  bounced = 1;<br />  //wyłaczenie przerwan<br />  noInterrupts();<br /><br />  int i;<br />  // -----------------------------------<br />  for(i=0; i&lt;CODE_LEN; i+=1){<br />    //durations[i] = pulseIn(pinIR, LOW, 100000);<br />    <br />    durations[i] = pulseIn(pinIR, HIGH, 100000);<br />  }<br />  //włączenie przerwań<br />  interrupts();<br />}<br /><br />[/syntax]<br /><br />gdy już będziesz pewien którymi kodami co chcesz robić <br /><br />wystarczy wycięcie  funkcji  void decodeIR() <br /><br />i przerobienie drobne funkcji void loop()<br /><br />oczywiście mam na myśli  użycie instrukcji swith ...  case <br />i to wszystko<br /></div><br /><br />Arduino kupiłem w wersji 168, ale wygodniej mi się pisze na m8, a dodatkowo wyczytałem, że zaprogramowaną atmege, mogę włożyć do arduino i wszystko będzie działać. Kod jak dla mnie przyjemniej piszę się w C, niż w środowisku arduino. Problemem jest w jaki sposób zrobić funkcje mostkującą te 2 piny. Pozdrawiam Bartek.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=159">Bartek</a> — 21 lip 2012, o 13:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2012-07-21T12:53:45+01:00</updated>
<published>2012-07-21T12:53:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1312&amp;p=10421#p10421</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1312&amp;p=10421#p10421"/>
<title type="html"><![CDATA[Re: Atmega8 - zdalny włącznik komputera za pomocą IR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1312&amp;p=10421#p10421"><![CDATA[
w zasadzie tak to mam 2 sprawy bo dopiero teraz zauważyłem .....<br /><br />gdzieś kupił arduino z M8  ??<br /><br />najpierw na duino zacznij od zdekodowania kodów swojego pilota <br /><br />np tak ...<br /><br />[syntax=cpp]<br /><br />const int pinIR = 2;<br />const int pinLED=13;<br />int CODE = 0;<br /><br />volatile boolean bounced = 0;<br />const int CODE_LEN = 50;<br />volatile unsigned long durations[CODE_LEN];<br />volatile int GroupCode = 0;<br /><br />void setup()<br />{<br />  pinMode(pinIR , INPUT);<br />  pinMode(pinLED, OUTPUT);<br />  attachInterrupt(0, decodeIR, FALLING);<br />  //wyłaczenie leda<br />  digitalWrite(pinLED, LOW);<br />  Serial.begin(9600);<br />}<br /><br />void loop(){<br />  if(bounced == 1){<br />    int i;<br />    Serial.println(&quot;Start...&quot;);<br />    for(i=0; i&lt;CODE_LEN; i+=1){<br />      Serial.println((unsigned long)durations[i]);<br />    }<br />    digitalWrite(pinLED, LOW);<br />    bounced = 0;<br />    }<br />}<br /><br />void decodeIR(){<br />  if(bounced){return;}<br />  digitalWrite(pinLED, HIGH);<br />  bounced = 1;<br />  //wyłaczenie przerwan<br />  noInterrupts();<br /><br />  int i;<br />  // -----------------------------------<br />  for(i=0; i&lt;CODE_LEN; i+=1){<br />    //durations[i] = pulseIn(pinIR, LOW, 100000);<br />    <br />    durations[i] = pulseIn(pinIR, HIGH, 100000);<br />  }<br />  //włączenie przerwań<br />  interrupts();<br />}<br /><br />[/syntax]<br /><br />gdy już będziesz pewien którymi kodami co chcesz robić <br /><br />wystarczy wycięcie  funkcji  void decodeIR() <br /><br />i przerobienie drobne funkcji void loop()<br /><br />oczywiście mam na myśli  użycie instrukcji swith ...  case <br />i to wszystko<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 19 minutach ]</span></strong><br /><br />a zresztą ....<br /><br />masz rybę <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />  <br /><br /><br />Przeanalizuj sobie przykłady z biblioteki IRremote .....<br />hmmm ..... nie mogę już dodawać załączników do postów więc masz na droopboxie:<br /><br /><!-- m --><a class="postlink" href="https://www.dropbox.com/sh/n43aaqha4vlxvkz/oRnozN_kN7" >https://www.dropbox.com/sh/n43aaqha4vlxvkz/oRnozN_kN7</a><!-- m --><br /><br />ja z niej nie korzystałem , ale tobie może się przydać i Ci pomóc  <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=58">SunRiver</a> — 21 lip 2012, o 12:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Bartek]]></name></author>
<updated>2012-07-21T12:12:43+01:00</updated>
<published>2012-07-21T12:12:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1312&amp;p=10416#p10416</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1312&amp;p=10416#p10416"/>
<title type="html"><![CDATA[Re: Atmega8 - zdalny włącznik komputera za pomocą IR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1312&amp;p=10416#p10416"><![CDATA[
Witajcie, w nocy skleiłem coś takiego. Przyznać się muszę, że te funkcje włączające i wyłączające w if'ach od komend pilotów są wyssane z palca, bo za skarby nie wiem jak mam to zrobić. Dodam, że wczoraj to działało, ale dzisiaj już nie chcę. Proszę o pomoc.<br /><br />[syntax=c]/*<br /> * main.c<br /> * a zegfra masz dobrze ustawiony?tafusy tez?8mhz?11,05920sprawdz kable czy abby napewno + do + - do _<br /> *  Created on: 2010-09-13<br /> *       Autor: Mirosław Kardaś<br /> */<br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &quot;LCD/lcd44780.h&quot;<br /><br />#include &quot;IR_DECODE/ir_decode.h&quot;<br /><br /><br />int main(void) { /* kod = 12 - off / kod = 13 on */<br /><br />DDRD &amp;= ~(1&lt;&lt;PD2);// kierunek pinu PD2 – wyjściowy<br />DDRD &amp;= ~(1&lt;&lt;PD4);// kierunek pinu PD4 – wyjściowy<br /><br />lcd_init();/* inicjalizacja LCD */<br />ir_init();/* inicjalizacja dekodowania IR */<br /><br />sei();/* włączamy globalne przerwania */<br /><br /><br />lcd_locate(0,0);<br />lcd_str_P(PSTR(&quot;Kody pilota RC5&quot;)); /* wyświetl napis w zerowej linii LCD */<br /><br />/* pętla nieskończona */<br />while(1) {<br /><br />if(Ir_key_press_flag) {/* jeśli odebrano prawidłowe kody z pilota */<br /><br />if( !address ) {/* jeśli adres == 0 */<br />lcd_locate(1,0);<br />lcd_str(&quot;key: &quot;);<br />lcd_int(command);/* wyświetl w drugiej linii LCD kod klawisza */<br />lcd_str(&quot;   &quot;);<br />}<br />if( command == 13) {/* jeśli adres == 0 */<br />PORTD |= (1&lt;&lt;PD2);<br />PORTD |= (1&lt;&lt;PD4);<br />_delay_ms(1000);<br />PORTD &amp;= ~(1&lt;&lt;PD2);<br />PORTD &amp;= ~(1&lt;&lt;PD4);<br />}<br /><br /><br />if( command == 12) {/* jeśli adres == 0 */<br />PORTD |= (1&lt;&lt;PD2);<br />PORTD |= (1&lt;&lt;PD4);<br />_delay_ms(4000);<br />PORTD &amp;= ~(1&lt;&lt;PD2);<br />PORTD &amp;= ~(1&lt;&lt;PD4);<br />}<br /><br /><br />Ir_key_press_flag=0;<br />command=0xff;<br />address=0xff;<br />}<br /><br />}<br />}<br />[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=159">Bartek</a> — 21 lip 2012, o 12:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Bartek]]></name></author>
<updated>2012-07-20T22:15:09+01:00</updated>
<published>2012-07-20T22:15:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1312&amp;p=10397#p10397</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1312&amp;p=10397#p10397"/>
<title type="html"><![CDATA[Re: Atmega8 - zdalny włącznik komputera za pomocą IR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1312&amp;p=10397#p10397"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />Po pierwsze twój kod nie ma nic wspólnego z C++ i Arduino więc nie uruchomisz tego w środowisku Arduino za żadne skarby.<br /><br />Po drugie możesz za to spokojnie odpalić na każdym procku ATmega. Tylko skąd ty sobie wymyśliłeś że sprawdzanie kodu klawisza to np:<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">if( !address == 13) </div><br /><br />toż to jakieś totalnie nieporozumienie. Masz książkę, masz tam żywe przykłady a ty wymyślasz coś w ogóle z kosmosu co nie ma prawa nigdy zadziałać <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br /><strong><span style="color: #0040FF">address </span></strong>???? toż to na stałe w pilocie RC5 od TV zawsze ma wartość = 0 - więc co ci przyszło do głowy sprawdzać czy ma wartość =13 ale do tego jeszcze jakaś negacja ! ......<br /><br />eeeeeh zajrzyj proszę do pierwszego lepszego przykładu z książki albo DVD i napisz to od nowa bo wygląda jakbyś pisał coś z pamięci czego nie widziałeś już z 5 lat<br /><br />command przechowuje klawisze, ale doczytaj sobie proszę o operatorach logicznych i co oznacza ! przed nazwą zmiennej w warunki IF i kiedy się go stosuje - toż to także masz w książce.<br /><br />u ciebie powinno być (podpowiem)<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">if( command == 13 )</div><br /><br />.... ale dalej to już sam zajrzyj do źródeł i zaproponuj poprawną wersję<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: kilkunastu sekundach ]</span></strong><br /><br />O! a jak chcesz w Arduino konkretnie - to Sun ci poda przykłady z kolei <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /></div><br /><br />Cholera, tak to jest jak piszę się kod na kolanie. Tak to jest jak się bierze na szybko gotowy kod z płyty. Co do kodu i arduino, wiem że to nie ma nic wspólnego z C++, miałem na myśl &quot;przeportowania&quot; go na C++, aby można było wrzucić przez aplikacje do arduino, ale nie będzie problemu jeśli zaprogramuje atmege przez usbasp. Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=159">Bartek</a> — 20 lip 2012, o 22:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-07-20T22:10:58+01:00</updated>
<published>2012-07-20T22:10:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1312&amp;p=10395#p10395</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1312&amp;p=10395#p10395"/>
<title type="html"><![CDATA[Re: Atmega8 - zdalny włącznik komputera za pomocą IR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1312&amp;p=10395#p10395"><![CDATA[
Po pierwsze twój kod nie ma nic wspólnego z C++ i Arduino więc nie uruchomisz tego w środowisku Arduino za żadne skarby.<br /><br />Po drugie możesz za to spokojnie odpalić na każdym procku ATmega. Tylko skąd ty sobie wymyśliłeś że sprawdzanie kodu klawisza to np:<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">if( !address == 13) </div><br /><br />toż to jakieś totalnie nieporozumienie. Masz książkę, masz tam żywe przykłady a ty wymyślasz coś w ogóle z kosmosu co nie ma prawa nigdy zadziałać <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br /><strong><span style="color: #0040FF">address </span></strong>???? toż to na stałe w pilocie RC5 od TV zawsze ma wartość = 0 - więc co ci przyszło do głowy sprawdzać czy ma wartość =13 ale do tego jeszcze jakaś negacja ! ......<br /><br />eeeeeh zajrzyj proszę do pierwszego lepszego przykładu z książki albo DVD i napisz to od nowa bo wygląda jakbyś pisał coś z pamięci czego nie widziałeś już z 5 lat<br /><br />command przechowuje klawisze, ale doczytaj sobie proszę o operatorach logicznych i co oznacza ! przed nazwą zmiennej w warunki IF i kiedy się go stosuje - toż to także masz w książce.<br /><br />u ciebie powinno być (podpowiem)<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">if( command == 13 )</div><br /><br />.... ale dalej to już sam zajrzyj do źródeł i zaproponuj poprawną wersję<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: kilkunastu sekundach ]</span></strong><br /><br />O! a jak chcesz w Arduino konkretnie - to Sun ci poda przykłady z kolei <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 20 lip 2012, o 22:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2012-07-20T22:08:32+01:00</updated>
<published>2012-07-20T22:08:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1312&amp;p=10393#p10393</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1312&amp;p=10393#p10393"/>
<title type="html"><![CDATA[Re: Atmega8 - zdalny włącznik komputera za pomocą IR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1312&amp;p=10393#p10393"><![CDATA[
Dziś już trochę późno na duino , ale jutro ci zapodam .pde  , kilka linijek <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=58">SunRiver</a> — 20 lip 2012, o 22:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Bartek]]></name></author>
<updated>2012-07-20T22:00:50+01:00</updated>
<published>2012-07-20T22:00:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1312&amp;p=10389#p10389</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1312&amp;p=10389#p10389"/>
<title type="html"><![CDATA[Atmega8 - zdalny włącznik komputera za pomocą IR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1312&amp;p=10389#p10389"><![CDATA[
Witam, próbuje w w jak najprostszy sposób napisać kod na atmege8, który będzie docelowo siedziała w arduino. Program ma ten za pomocą pilota IR powodować włączanie oraz wyłączenie komputera. Włączanie komputera odbywa się za pomocą zmostkowania 2 pinów przez 1s, wyłączenie zaś przez 4s. Naskrobałem tyle kodu, ale stanąłem na etapie funkcji włączających i wyłączających komputer.<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;LCD/lcd44780.h&quot;<br />#include &quot;IR_DECODE/ir_decode.h&quot;<br /><br /><br />int main(void) { /* kod = 12 - off / kod = 13 on */<br /><br />DDRD |= (1&lt;&lt;PD2);// kierunek pinu PD2 – wyjściowy<br />DDRD |= (1&lt;&lt;PD4);// kierunek pinu PD4 – wyjściowy<br /><br />lcd_init();/* inicjalizacja LCD */<br />ir_init();/* inicjalizacja dekodowania IR */<br /><br />sei();/* włączamy globalne przerwania */<br /><br />lcd_locate(0,0);<br />lcd_str_P(PSTR(&quot;Kody pilota RC5&quot;)); /* wyświetl napis w zerowej linii LCD */<br /><br />/* pętla nieskończona */<br />while(1) {<br /><br />if(Ir_key_press_flag) {/* jeśli odebrano prawidłowe kody z pilota */<br /><br />if( !address == 13) {/* jeśli adres == 0 */<br />//wlacz komputer<br />}<br /><br /><br />if( !address == 12) {/* jeśli adres == 0 */<br />//wylacz komputer<br />}<br /><br /><br />Ir_key_press_flag=0;<br />command=0xff;<br />address=0xff;<br />}<br /><br />}<br />}[/syntax]<br /><br />Kod może też poprawiony na C++, aby odrazu wgrać je do arduino. Proszę o pomoc, Bartek.<br /><br />PS Obsługa lcd tylko testowo, aby wyłapać odpowiednie kody przycisków pilota.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=159">Bartek</a> — 20 lip 2012, o 22:00</p><hr />
]]></content>
</entry>
</feed>