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

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

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=17150&amp;mode</id>
<entry>
<author><name><![CDATA[anshar]]></name></author>
<updated>2016-12-27T16:22:49+01:00</updated>
<published>2016-12-27T16:22:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17150&amp;p=178319#p178319</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17150&amp;p=178319#p178319"/>
<title type="html"><![CDATA[Re: Efekt &quot;Night Rider&quot;, problem z wygaszeniem diody 0]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17150&amp;p=178319#p178319"><![CDATA[
A jaką wartość ma zmienna i w tej drugiej pętli? Przecież zadeklarowałeś ją jako uint8_t czyli bez znaku, przyjmuje ona wartości od 0 do 255.<br />W twoim kodzie zmienna i najpierw przyjmuje wartość 7, następnie 6 itd.<br />Gdy na samym końcu pętli for przyjmie wartość 0 i dalej ją dekremantujesz to zmienna i będzie miała wartość 255, następnie 254 itd.<br />A warunkiem w pętli for jest dalej i&gt;=0, czyli jest dalej spełniony prawda?<br />Jeśli chcesz tak zapisać to zmienna i musi być zadeklarowana jako int8_t. Ewentualnie możesz zrobić w dugą stronę, tzn przesuwać tym razem w lewo, zobacz w kodzie poniżej. <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br /><br />int main(void) { <br /><br />   DDRC |= 0xff;<br />   PORTC = 0xff; // wygaszenie diod                                    <br />   <br />   while(1)                                                     <br />   {                             <br />      // Night Rider Effect<br />      for(uint8_t i=0; i&lt;8; i++ ) {<br />                                                       <br />         PORTC &amp;= ~(1&lt;&lt;i);<br />         _delay_ms(500);<br />                                                                      <br />      }      <br />      <br />      for(int8_t i=7; i&gt;=0; i--){ // kiedy i&gt;=0 to nie wracam na początek whila, podobnie jak i&gt;-1<br />         <br />         PORTC |= (1&lt;&lt;i);<br />         _delay_ms(500);<br />                                               <br />      }                           <br />      <br />/*      for(uint8_t i=0; i&lt;8; i++ ) {                       <br />       <br />         PORTC |= (128&gt;&gt;i);          <br />         _delay_ms(500);    <br />                                      <br />      }<br />*/<br />   }    <br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7157">anshar</a> — 27 gru 2016, o 16:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krlk]]></name></author>
<updated>2016-12-27T15:38:11+01:00</updated>
<published>2016-12-27T15:38:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17150&amp;p=178315#p178315</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17150&amp;p=178315#p178315"/>
<title type="html"><![CDATA[Efekt &quot;Night Rider&quot;, problem z wygaszeniem diody 0]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17150&amp;p=178315#p178315"><![CDATA[
Cześć, wróciłem do ćwiczeń z diodami i chciałem zrobić efekt &quot;Night Rider&quot;, zapalam kolejno diody od 0 do 7 a potem gaszę od 7 do 0. <br />Mam pewien, prawdopodobnie, trywialny problem. <br /><br />Przy gaszeniu diod, gaszę je jedynie do diody d1, d0 w dalszym ciągu się świeci. <br /><br />Teoretycznie użycie &quot;i&gt;=0&quot; powinno załatwić sprawę, ALE...wtedy całość operacji wykonuje się tylko 1 raz(nie wracam do początku pętli while).<br />Pomyślałem również o zmianie warunku rzeczonej pętli na i&gt;-1, skutek był podobny. <br /><br />Poniżej zamieszczam kod:<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt; <br /><br />#define LED (1&lt;&lt;PC0)<br />#define LED_ON PORTC &amp;= ~LED<br />#define LED_OFF PORTC |= LED<br />#define LED_TOG PORTC ^= LED<br /><br /><br />int main(void){<br />   DDRC |= 0xff;<br />   PORTC = 0xff; // wygaszenie diod<br />   <br />   while(1)<br />   {<br />      // Night Rider Effect<br />      for(uint8_t i=0; i&lt;8 ; i++ ) {<br />         <br />         PORTC &amp;= ~(1&lt;&lt;i);<br />         _delay_ms(5000);<br />                  <br />      }      <br />      for(uint8_t i=7;i&gt;0;i--){ // kiedy i&gt;=0 to nie wracam na początek whila, podobnie jak i&gt;-1<br />         <br />         PORTC |= (1&lt;&lt;i);<br />         _delay_ms(5000);<br />         <br />      }<br />      <br />            <br />      // obsługa klawisza (przeciwko drganiom  stykow)<br />      if (!key_lock &amp;&amp; !(PINA &amp; KEY)) {<br />         key_lock = 1;<br />         <br />         //piszemy zdazenie &quot;press_button&quot;<br />         //LED_TOG; // zmiana aktualnego stanu LED<br />         //BUZ_TOG; // zmiana aktualnego stanu BUZ<br />         <br />      }else if (key_lock &amp;&amp; (PINA &amp; KEY)) key_lock++;<br />          <br />   }<br />   return 0;<br />}</div><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=15073">Krlk</a> — 27 gru 2016, o 15:38</p><hr />
]]></content>
</entry>
</feed>