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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-01-17T17:02:56+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=2117&amp;mode</id>
<entry>
<author><name><![CDATA[leszek90]]></name></author>
<updated>2013-01-17T17:02:56+01:00</updated>
<published>2013-01-17T17:02:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2117&amp;p=25011#p25011</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2117&amp;p=25011#p25011"/>
<title type="html"><![CDATA[Re: Sterowanie serwomechanizmami na samych opoźnieniach]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2117&amp;p=25011#p25011"><![CDATA[
bibliotekę rc5 mam z jakiejś strony zajmującej się robotyką. Wydaje mi się, że jest to porządny kod. Niżej przedstawię tę bibliotekę:<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br /><br />//  <br /><br /><br />volatile unsigned char cmd,kod;<br /><br />//-----------------------------------------------------------------------------<br />ISR(INT1_vect)<br />{<br />   static unsigned char n, pb;<br />   static unsigned int code;<br />  <br />   switch(n)<br />   {<br />      case 0:<br /><br />         if(MCUCR&amp;(1&lt;&lt;ISC10))<br />         {<br />            MCUCR &amp;= ~(1&lt;&lt;ISC10);<br />    TCNT0 = 0x00; TIFR |= (1&lt;&lt;TOV0);<br />         }<br />         else <br />         {<br />    if((TCNT0&gt;112)||(TIFR&amp;(1&lt;&lt;TOV0))) // 112 = 3,6ms<br />    {    <br />               pb=0;    <br />       code = 0x03;<br />               TCNT0  = 0x00; TIFR |= (1&lt;&lt;TOV0);<br />               n = 1;<br />    }<br />            MCUCR |= (1&lt;&lt;ISC10);<br /> }<br />      break;<br /><br />      case 1:<br />      case 2:<br />         if((TCNT0&gt;14)&amp;&amp;(TCNT0&lt;42))  // 14 = 0.4ms, 42 = 1.35ms<br /> {<br />            MCUCR ^= (1&lt;&lt;ISC10);<br />            TCNT0  = 0x00; TIFR |= (1&lt;&lt;TOV0);<br />    n++;<br /> }<br /> else n = 0;<br /><br />      break;<br /><br />      default:  <br />    <br />         if((TCNT0&gt;14)&amp;&amp;(TCNT0&lt;42))<br /> {<br />             if(!pb)<br />             {     <br />        pb = 1;<br />                code &lt;&lt;= 1;<br />if(code&amp;0x2) code |= 1;<br />             }<br />     else<br />             {<br />                pb = 0;<br />n++;<br />     }<br /><br />     TCNT0 = 0x00; TIFR |= (1&lt;&lt;TOV0);<br /> }<br /> else if((TCNT0&gt;42)&amp;&amp;(TCNT0&lt;70)) // 70=2.25ms<br /> {<br />             code &lt;&lt;= 1;<br />     if(!(code&amp;0x2)) code |= 1;<br /><br />     TCNT0 = 0x00; TIFR |= (1&lt;&lt;TOV0);<br />             n++;<br /> }<br />         else  n = 0; <br /><br />         MCUCR ^= (1&lt;&lt;ISC10);<br /><br /> if(n==15)<br /> {<br />     n = 0;<br />     kod = code;<br />     if(code &amp; (1&lt;&lt;11)) kod |= 0x80;<br /> }<br />cmd = kod;<br /><br />cmd &amp;=~(1&lt;&lt;7);<br />kod = cmd;<br />      break;<br />   }<br />}<br />[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=549">leszek90</a> — 17 sty 2013, o 17:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-01-17T16:58:35+01:00</updated>
<published>2013-01-17T16:58:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2117&amp;p=25010#p25010</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2117&amp;p=25010#p25010"/>
<title type="html"><![CDATA[Re: Sterowanie serwomechanizmami na samych opoźnieniach]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2117&amp;p=25010#p25010"><![CDATA[
Przede wszystkim inaczej od razu na to spojrzysz - przecież tu masz groch z kapustą <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> ... niech każda funkcja odpowiada za jakiś ruch i wywołuj po kolei funkcje - to już ci się poukłada - a teraz ? coś tam się miesza - no i jak pisałem - jak ty odbierasz to RC5 ???<br /><br />bo RC5 i do tego takie delaye to nieszczęście ??? jaką masz bibliotekę do RC5?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 17 sty 2013, o 16:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[leszek90]]></name></author>
<updated>2013-01-17T16:52:45+01:00</updated>
<published>2013-01-17T16:52:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2117&amp;p=25008#p25008</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2117&amp;p=25008#p25008"/>
<title type="html"><![CDATA[Re: Sterowanie serwomechanizmami na samych opoźnieniach]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2117&amp;p=25008#p25008"><![CDATA[
Wiem, że na razie kod nie wygląda ładnie, ale to są tylko testy... Myślisz, że jak powstawiam te ruchy robota do funkcji to może ten problem się rozwikłać?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=549">leszek90</a> — 17 sty 2013, o 16:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-01-17T16:41:52+01:00</updated>
<published>2013-01-17T16:41:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2117&amp;p=25005#p25005</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2117&amp;p=25005#p25005"/>
<title type="html"><![CDATA[Re: Sterowanie serwomechanizmami na samych opoźnieniach]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2117&amp;p=25005#p25005"><![CDATA[
A pisali ci wyżej że DELAY'e doprowadzą cię do szaleństwa .... właśnie się zaczyna .... niestety szaleństwo <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />a do tego jeszcze piszesz kod tak jakbyś nie wiedział co to są funkcje w języku C <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> .....<br /><br />I jeśli do tego jeszcze jakaś kiepska obsługa RC5 - to właśnie taki kod - to przepis - JAK NIE NALEŻY pisać programów, albo co zrobić żeby sobie utrudnić życie <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />1. Wyprowadź ruchy do funkcji<br />2. wprowadź timery programowe<br />3. pozbądź się tych delayów<br /><br />i nagle się okaże, że to proste .... Przecież w książce niebieskiej masz opisane timery programowe - wystarczyłoby tu ich użyć w najprostszej postaci .....<br /><br />ale przede wszystkim FUNKCJE panie kolego - funkcje - bo ten zbitek kodu to koszmar niestety <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 17 sty 2013, o 16:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[leszek90]]></name></author>
<updated>2013-01-17T15:18:28+01:00</updated>
<published>2013-01-17T15:18:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2117&amp;p=24994#p24994</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2117&amp;p=24994#p24994"/>
<title type="html"><![CDATA[Re: Sterowanie serwomechanizmami na samych opoźnieniach]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2117&amp;p=24994#p24994"><![CDATA[
Ehh, wznawiam temat, gdyż mam kolejny problem i nie wiem co może być tego przyczyną, otóż udało mi sie napisać program, który steruje ruchem robota w przód za pomocą pilota RC5 i idzie on świetnie. Lecz, gdy napiszę dodatkową funkcję, że np. robota ma sie ukłonić po naciśnieciu jakiegoś tam przycisku to, gdy przycisnę przycisk odpowiadający za ruch robota w przód nie idzie on tak jak należy... Nie mam pojęcia dlaczego następuje zakłócenie tego chodu... Ma ktoś jakiś pomysł dlaczego tak jest? Jest to bardzo ważne dla mnie...<br />cmd- jest to kod przycisku pilota<br />Ruch robota w przód jest złożony z 6 kroków.<br />Niżej przedstawiam pętlę główną programu:<br />[syntax=c]if(cmd==0x3B) //srodkowy przycisk, robot stoji<br />{<br />for(b=0; b&lt;100; b++) <br />//while(b&lt;300)<br />{<br />S1L_H;<br />            S2L_H;<br />            S3L_H;<br />            S1P_H;<br />            S2P_H;<br />            S3P_H;<br />     angle_S1L=100,angle_S2L=82,angle_S3L=80,angle_S1P=85,angle_S2P=103,angle_S3P=105;//S2P,S3P,S3L(110),S1P(100) S2L(105)<br />            _delay_us(700);<br />     <br />            for(a=0; a&lt;180; a++)<br />            {<br />              if(angle_S1L&lt;a)<br />              {<br />              S1L_L;<br />              }<br />     <br />              if(angle_S2L&lt;a)<br />              {<br />              S2L_L;<br />              }<br />             <br />              if(angle_S3L&lt;a)<br />              {<br />              S3L_L;<br />              }<br />     <br />            if(angle_S1P&lt;a)<br />              {<br />              S1P_L;<br />              }<br />     <br />              if(angle_S2P&lt;a)<br />              {<br />              S2P_L;<br />              }<br />     <br />              if(angle_S3P&lt;a)<br />              {<br />              S3P_L;<br />              }<br />     <br />              _delay_us(7);<br />            }<br />     <br />            S1L_L;<br />            S2L_L;<br />            S3L_L;<br />            S1P_L;<br />            S2P_L;<br />            S3P_L;<br />     <br />            _delay_ms(18);<br />}<br />//b++;<br />}<br />if(cmd==0x20) //strzalka do przodu, ruch w przod... <br />{<br />for(b=0; b&lt;50; b++) ///1KROK<br /><br />{<br />S1L_H;<br />            S2L_H;<br />            S3L_H;<br />            S1P_H;<br />            S2P_H;<br />            S3P_H;<br />     angle_S1L=77,angle_S2L=82,angle_S3L=80,angle_S1P=45,angle_S2P=103,angle_S3P=105;//S2P,S3P,S3L(110),S1P(100) S2L(105)<br />            _delay_us(700);<br />     <br />            for(a=0; a&lt;180; a++)<br />            {<br />              if(angle_S1L&lt;a)<br />              {<br />              S1L_L;<br />              }<br />     <br />              if(angle_S2L&lt;a)<br />              {<br />              S2L_L;<br />              }<br />             <br />              if(angle_S3L&lt;a)<br />              {<br />              S3L_L;<br />              }<br />     <br />            if(angle_S1P&lt;a)<br />              {<br />              S1P_L;<br />              }<br />     <br />              if(angle_S2P&lt;a)<br />              {<br />              S2P_L;<br />              }<br />     <br />              if(angle_S3P&lt;a)<br />              {<br />              S3P_L;<br />              }<br />     <br />              _delay_us(7);<br />            }<br />     <br />            S1L_L;<br />            S2L_L;<br />            S3L_L;<br />            S1P_L;<br />            S2P_L;<br />            S3P_L;<br />     <br />            _delay_ms(18);<br />}<br />for(c=0; c&lt;50; c++) //2KROK<br /><br />{<br />S1L_H;<br />            S2L_H;<br />            S3L_H;<br />            S1P_H;<br />            S2P_H;<br />            S3P_H;<br />     angle_S1L=79,angle_S2L=95,angle_S3L=90,angle_S1P=85,angle_S2P=120,angle_S3P=120;//S2P,S3P,S3L(110),S1P(100) S2L(105)<br />            _delay_us(700);<br />     <br />            for(a=0; a&lt;180; a++)<br />            {<br />              if(angle_S1L&lt;a)<br />              {<br />              S1L_L;<br />              }<br />     <br />              if(angle_S2L&lt;a)<br />              {<br />              S2L_L;<br />              }<br />             <br />              if(angle_S3L&lt;a)<br />              {<br />              S3L_L;<br />              }<br />     <br />            if(angle_S1P&lt;a)<br />              {<br />              S1P_L;<br />              }<br />     <br />              if(angle_S2P&lt;a)<br />              {<br />              S2P_L;<br />              }<br />     <br />              if(angle_S3P&lt;a)<br />              {<br />              S3P_L;<br />              }<br />     <br />              _delay_us(7);<br />            }<br />     <br />            S1L_L;<br />            S2L_L;<br />            S3L_L;<br />            S1P_L;<br />            S2P_L;<br />            S3P_L;<br />     <br />            _delay_ms(18);<br />}<br />for(d=0; d&lt;50; d++) ///3KROK<br /><br />{<br />S1L_H;<br />            S2L_H;<br />            S3L_H;<br />            S1P_H;<br />            S2P_H;<br />            S3P_H;<br />     angle_S1L=110,angle_S2L=105,angle_S3L=80,angle_S1P=85,angle_S2P=125,angle_S3P=150;//S2P,S3P,S3L(110),S1P(100) S2L(105)<br />            _delay_us(700);<br />     <br />            for(a=0; a&lt;180; a++)<br />            {<br />              if(angle_S1L&lt;a)<br />              {<br />              S1L_L;<br />              }<br />     <br />              if(angle_S2L&lt;a)<br />              {<br />              S2L_L;<br />              }<br />             <br />              if(angle_S3L&lt;a)<br />              {<br />              S3L_L;<br />              }<br />     <br />            if(angle_S1P&lt;a)<br />              {<br />              S1P_L;<br />              }<br />     <br />              if(angle_S2P&lt;a)<br />              {<br />              S2P_L;<br />              }<br />     <br />              if(angle_S3P&lt;a)<br />              {<br />              S3P_L;<br />              }<br />     <br />              _delay_us(7);<br />            }<br />     <br />            S1L_L;<br />            S2L_L;<br />            S3L_L;<br />            S1P_L;<br />            S2P_L;<br />            S3P_L;<br />     <br />            _delay_ms(18);<br />}<br />for(e=0; e&lt;50; e++) ///4KROK<br /><br />{<br />S1L_H;<br />            S2L_H;<br />            S3L_H;<br />            S1P_H;<br />            S2P_H;<br />            S3P_H;<br />     angle_S1L=170,angle_S2L=105,angle_S3L=80,angle_S1P=108,angle_S2P=125,angle_S3P=150;//S2P,S3P,S3L(110),S1P(100) S2L(105)<br />            _delay_us(700);<br />     <br />            for(a=0; a&lt;180; a++)<br />            {<br />              if(angle_S1L&lt;a)<br />              {<br />              S1L_L;<br />              }<br />     <br />              if(angle_S2L&lt;a)<br />              {<br />              S2L_L;<br />              }<br />             <br />              if(angle_S3L&lt;a)<br />              {<br />              S3L_L;<br />              }<br />     <br />            if(angle_S1P&lt;a)<br />              {<br />              S1P_L;<br />              }<br />     <br />              if(angle_S2P&lt;a)<br />              {<br />              S2P_L;<br />              }<br />     <br />              if(angle_S3P&lt;a)<br />              {<br />              S3P_L;<br />              }<br />     <br />              _delay_us(7);<br />            }<br />     <br />            S1L_L;<br />            S2L_L;<br />            S3L_L;<br />            S1P_L;<br />            S2P_L;<br />            S3P_L;<br />     <br />            _delay_ms(18);<br />}<br />for(f=0; f&lt;50; f++) ///5KROK<br /><br />{<br />S1L_H;<br />            S2L_H;<br />            S3L_H;<br />            S1P_H;<br />            S2P_H;<br />            S3P_H;<br />     angle_S1L=100,angle_S2L=85,angle_S3L=100,angle_S1P=108,angle_S2P=100,angle_S3P=80;//S2P,S3P,S3L(110),S1P(100) S2L(105)<br />            _delay_us(700);<br />     <br />            for(a=0; a&lt;180; a++)<br />            {<br />              if(angle_S1L&lt;a)<br />              {<br />              S1L_L;<br />              }<br />     <br />              if(angle_S2L&lt;a)<br />              {<br />              S2L_L;<br />              }<br />             <br />              if(angle_S3L&lt;a)<br />              {<br />              S3L_L;<br />              }<br />     <br />            if(angle_S1P&lt;a)<br />              {<br />              S1P_L;<br />              }<br />     <br />              if(angle_S2P&lt;a)<br />              {<br />              S2P_L;<br />              }<br />     <br />              if(angle_S3P&lt;a)<br />              {<br />              S3P_L;<br />              }<br />     <br />              _delay_us(7);<br />            }<br />     <br />            S1L_L;<br />            S2L_L;<br />            S3L_L;<br />            S1P_L;<br />            S2P_L;<br />            S3P_L;<br />     <br />            _delay_ms(18);<br />}<br />for(f=0; f&lt;50; f++) ///6KROK<br /><br />{<br />S1L_H;<br />            S2L_H;<br />            S3L_H;<br />            S1P_H;<br />            S2P_H;<br />            S3P_H;<br />     angle_S1L=108,angle_S2L=85,angle_S3L=80,angle_S1P=90,angle_S2P=100,angle_S3P=105;//S2P,S3P,S3L(110),S1P(100) S2L(105)<br />            _delay_us(700);<br />     <br />            for(a=0; a&lt;180; a++)<br />            {<br />              if(angle_S1L&lt;a)<br />              {<br />              S1L_L;<br />              }<br />     <br />              if(angle_S2L&lt;a)<br />              {<br />              S2L_L;<br />              }<br />             <br />              if(angle_S3L&lt;a)<br />              {<br />              S3L_L;<br />              }<br />     <br />            if(angle_S1P&lt;a)<br />              {<br />              S1P_L;<br />              }<br />     <br />              if(angle_S2P&lt;a)<br />              {<br />              S2P_L;<br />              }<br />     <br />              if(angle_S3P&lt;a)<br />              {<br />              S3P_L;<br />              }<br />     <br />              _delay_us(7);<br />            }<br />     <br />            S1L_L;<br />            S2L_L;<br />            S3L_L;<br />            S1P_L;<br />            S2P_L;<br />            S3P_L;<br />     <br />            _delay_ms(18);<br />}<br />}<br />if(cmd==0x11) //lewy przycisk, uklon<br />{<br />for(h=0; h&lt;100; h++) <br /><br />{<br />S1L_H;<br />            S2L_H;<br />            S3L_H;<br />            S1P_H;<br />            S2P_H;<br />            S3P_H;<br />     angle_S1L=50,angle_S2L=82,angle_S3L=80,angle_S1P=85,angle_S2P=103,angle_S3P=105;//S2P,S3P,S3L(110),S1P(100) S2L(105)<br />            _delay_us(700);<br />     <br />            for(a=0; a&lt;180; a++)<br />            {<br />              if(angle_S1L&lt;a)<br />              {<br />              S1L_L;<br />              }<br />     <br />              if(angle_S2L&lt;a)<br />              {<br />              S2L_L;<br />              }<br />             <br />              if(angle_S3L&lt;a)<br />              {<br />              S3L_L;<br />              }<br />     <br />            if(angle_S1P&lt;a)<br />              {<br />              S1P_L;<br />              }<br />     <br />              if(angle_S2P&lt;a)<br />              {<br />              S2P_L;<br />              }<br />     <br />              if(angle_S3P&lt;a)<br />              {<br />              S3P_L;<br />              }<br />     <br />              _delay_us(7);<br />            }<br />     <br />            S1L_L;<br />            S2L_L;<br />            S3L_L;<br />            S1P_L;<br />            S2P_L;<br />            S3P_L;<br />     <br />            _delay_ms(18);<br />}<br />}<br /><br /><br />}<br />}<br />[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=549">leszek90</a> — 17 sty 2013, o 15:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[leszek90]]></name></author>
<updated>2013-01-15T17:32:55+01:00</updated>
<published>2013-01-15T17:32:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2117&amp;p=24886#p24886</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2117&amp;p=24886#p24886"/>
<title type="html"><![CDATA[Re: Sterowanie serwomechanizmami na samych opoźnieniach]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2117&amp;p=24886#p24886"><![CDATA[
Heh, no też mi tak się wydaje... Tzn. tak mam już ogarniętą obsługę odbiornika RC5, do tego pomiar napięcia baterii i wyświetlanie jej na wyświeltaczu. Teraz właśnie staram się ogarnąć algorytm ruchu robota i to jest najtrudniejsza sprawa. Zobaczymy jak te delaye wpłyną na cały program.... <br /><br />Promotor mówił, że da się tak zrobić... zobaczymy co z tego wyjdzie<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=549">leszek90</a> — 15 sty 2013, o 17:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Sonix]]></name></author>
<updated>2013-01-15T15:04:00+01:00</updated>
<published>2013-01-15T15:04:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2117&amp;p=24874#p24874</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2117&amp;p=24874#p24874"/>
<title type="html"><![CDATA[Re: Sterowanie serwomechanizmami na samych opoźnieniach]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2117&amp;p=24874#p24874"><![CDATA[
<div class="quotetitle">leszek90 napisał(a):</div><div class="quotecontent"><br />... Btw. na pracę inżynierską mam zrobić robota kroczącego, który będzie chodził właśnie za pomocą 6 serw, a ruch tych serw będzie sterowany poprzez pilot- odbiornik podczerwieni(RC5). Programować uczę się sam, niestety nie miałem zajęć z programowania AVR-ów lub innych mikrokontrolerów, dlatego też mogę Wam się wydawać trochę &quot;zielony&quot; w tym temacie <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /><br /></div><br /><br />Ja mam wrażenie że Twój promotor też jest zielony....  <img src="https://forum.atnel.pl/images/smilies/icon_rolleyes.gif" alt=":roll:" title="Udaje, że to nie on" /> <br />Bez urazy ale ja też nie widzę jakoś robota i to jeszcze sterowanego pilotem RS-5 opartego na procedurach ruchu z Delay..... <br />Tak czy inaczej życzę powodzenia....<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=127">Sonix</a> — 15 sty 2013, o 15:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[leszek90]]></name></author>
<updated>2013-01-15T00:01:13+01:00</updated>
<published>2013-01-15T00:01:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2117&amp;p=24829#p24829</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2117&amp;p=24829#p24829"/>
<title type="html"><![CDATA[Re: Sterowanie serwomechanizmami na samych opoźnieniach]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2117&amp;p=24829#p24829"><![CDATA[
Dzięki strzelec, właśnie mniej więcej o takie coś mi chodziło <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Antystatyczny według mnie sterowanie serwami nie jest tak proste jak sterowanie ledami. Wiem, że na opóźnieniach nie jest to profesjonalne rozwiązanie no ale cóż, tak promotor mi powiedział żeby zrobić, ponieważ jest to łatwiejsze rozwiązanie... Btw. na pracę inżynierską mam zrobić robota kroczącego, który będzie chodził właśnie za pomocą 6 serw, a ruch tych serw będzie sterowany poprzez pilot- odbiornik podczerwieni(RC5). Programować uczę się sam, niestety nie miałem zajęć z programowania AVR-ów lub innych mikrokontrolerów, dlatego też mogę Wam się wydawać trochę &quot;zielony&quot; w tym temacie <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=549">leszek90</a> — 15 sty 2013, o 00:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[strzelec]]></name></author>
<updated>2013-01-14T22:43:49+01:00</updated>
<published>2013-01-14T21:34:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2117&amp;p=24802#p24802</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2117&amp;p=24802#p24802"/>
<title type="html"><![CDATA[Re: Sterowanie serwomechanizmami na samych opoźnieniach]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2117&amp;p=24802#p24802"><![CDATA[
Ja bym troszkę inaczej podszedł do sprawy.<br />Cały cykl ma 20 ms, 0,7 ms jest maksymalne wychylenie nazwijmy -90 st. 2 ms. jest maksymalne wychylenie +90 st.<br /><br />więc może coś takiego:<br />[syntax=c]<br />while(1)<br />{<br />        S1L_H;<br />        S2L_H;<br />        S3L_H;<br />        S1P_H;<br />        S2P_H;<br />        S3P_H;<br /><br />        _delay_us(700);<br /><br />        for(a=0; a&lt;180; a++)<br />        {<br />          if(angle_S1L&lt;a) <br />          {<br />          S1L_L;<br />          }<br /><br />          if(angle_S2L&lt;a) <br />          {<br />          S2L_L;<br />          }<br />         <br />          if(angle_S3L&lt;a) <br />          {<br />          S3L_L;<br />          }<br /><br />          if(angle_S1P&lt;a) <br />          {<br />          S1P_L;<br />          }<br /><br />          if(angle_S2P&lt;a) <br />          {<br />          S2P_L;<br />          }<br /><br />          if(angle_S3P&lt;a) <br />          {<br />          S3P_L;<br />          }<br /><br />          _delay_us(7);<br />        }<br /><br />        S1L_L;<br />        S2L_L;<br />        S3L_L;<br />        S1P_L;<br />        S2P_L;<br />        S3P_L;<br /><br />        _delay_ms(18);<br />}<br />[/syntax]<br /><br />Oczywiście czasy opóźnień należy zmienić uwzględniając czasy instrukcji ale w teorii powinno działać <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=842">strzelec</a> — 14 sty 2013, o 21:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[leszek90]]></name></author>
<updated>2013-01-14T15:44:41+01:00</updated>
<published>2013-01-14T15:44:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2117&amp;p=24779#p24779</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2117&amp;p=24779#p24779"/>
<title type="html"><![CDATA[Re: Sterowanie serwomechanizmami na samych opoźnieniach]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2117&amp;p=24779#p24779"><![CDATA[
Rozumiem ten rysunek, potrafię zrobić tak, żeby każde np. te 3 serwa poruszały się jedno po drugim, w różnych kąt, lecz zastanawiam się jak zrobić aby te 3 serwa poruszały się w tym samym czasie w różnych wychyleniach kąta. Jeżeli napisze kilka takich pętli for jak napisałem wyżej będą się one wykonywać jedna po drugiej, a mi zależy na tym, aby poruszały się w tym samym czasie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=549">leszek90</a> — 14 sty 2013, o 15:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Sonix]]></name></author>
<updated>2013-01-14T14:38:16+01:00</updated>
<published>2013-01-14T14:38:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2117&amp;p=24766#p24766</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2117&amp;p=24766#p24766"/>
<title type="html"><![CDATA[Re: Sterowanie serwomechanizmami na samych opoźnieniach]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2117&amp;p=24766#p24766"><![CDATA[
Żeby sterować kilkoma serwami musisz najpierw rozpisać sobie które serwo na jaki czas ma być wysterowane, nastepnie albo sterować nimi po kolei przez delay i wyliczać milisekundy ręcznie do każdego potrzebnego impulsu lub napisać procedurę która to zrobi za Ciebie.<br /><br />Samo jednak sterowanie przez delay jest trochę nie na miejscu ale jak ktoś się uprze?.... nic nie poradzisz...<br /><br />Kilka razy wertowaliśmy temat serw na forum, między innymi tutaj <!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic1095.html" >topic1095.html</a><!-- l --><br /><br />Zobacz zresztą na rysunek który znajduje się w tamtym poście i potraktuj te 3 serwa jako Twoje, spójrz na przebiegi i zrób takie same w swoim programie <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br /><img src="http://img259.imageshack.us/img259/7307/19040618001331110485.jpg" alt="Obrazek" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=127">Sonix</a> — 14 sty 2013, o 14:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[leszek90]]></name></author>
<updated>2013-01-14T13:56:03+01:00</updated>
<published>2013-01-14T13:56:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2117&amp;p=24757#p24757</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2117&amp;p=24757#p24757"/>
<title type="html"><![CDATA[Sterowanie serwomechanizmami na samych opoźnieniach]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2117&amp;p=24757#p24757"><![CDATA[
Witam, w internecie są przykładowe programy do sterowania serw za pomocą timerów, lecz ja muszę to zrobić na opoźnieniach. Robię pracę inżynierską, w której wykorzystuję 6 serwomechanizmów modelarskich. Promotor powiedział, żebym je właśnie wysterowywał za pomocą zwykłych opóźnień ( na czas np. 1,5ms na porcie stan wysoki, a przez czas 18ms stan niski i żeby to zrobić wszystko w pętli, która będzie &quot;krążyć&quot; np. 80 raz - jest to czas wystarczający do ustawienia się serwa przez chwilę). Nie ma problemu, gdy chcę kilka serw ustawić na ten sam kąt, lecz nie wiem jak zrobić, aby kilka silniczków w tym samym czasie obracały się o różne kąty np. 1serwo-90stopni 2serwo-180stopni 3serwo- 0 stopni. Niżej przedstawiam, praktycznie pusty program, zawierający jedynie jedną pętlę, w której wykonuje się jakiś tam ruch serwa, pokazuję to po to, aby pokazać mniej więcej o co mi chodzi. Ma ktoś może jakiś pomysł jak to wykonać?<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br /><br />//Konfiguracja SERWA<br />#define S1L (1&lt;&lt;PD6)<br />#define S1L_H PORTD |= S1L //stan wysoki na porcie D6<br />#define S1L_L PORTD &amp;= ~S1L //stan niski<br /><br />#define S2L (1&lt;&lt;PD5)<br />#define S2L_H PORTD |= S2L  //stan wysoki na porcie D5<br />#define S2L_L PORTD &amp;= ~S2L  //stan niski<br /><br />#define S3L (1&lt;&lt;PD7)<br />#define S3L_H PORTD |= S3L //stan wysoki na porcie D7<br />#define S3L_L PORTD &amp;= ~S3L //stan niski<br /><br />#define S1P (1&lt;&lt;PD2)<br />#define S1P_H PORTD |= S1P  //stan wysoki na porcie D2<br />#define S1P_L PORTD &amp;= ~S1P //stan niski<br /><br />#define S2P (1&lt;&lt;PD4)<br />#define S2P_H PORTD |= S2P  //stan wysoki na porcie D4<br />#define S2P_L PORTD &amp;= ~S2P  //stan niski<br /><br />#define S3P (1&lt;&lt;PB3)<br />#define S3P_H PORTB |= S3P //stan wysoki na porcie B3<br />#define S3P_L PORTB &amp;= ~S3P //stan niski<br />//******************  <br />uint8_t a,b;<br />int main(void)<br />{<br /><br />DDRD |= S1L; //port D jako wyjscia<br />DDRD |= S2L;<br />DDRD |= S3L;<br />DDRD |= S1P;<br />DDRD |= S2P;<br />DDRB |= S3P;//port B jako wyjscia<br /><br />while(1)<br />{<br />for(a=0; a&lt;80; a++)<br />{<br />S1L_H;<br />_delay_ms(1.5);<br />S1L_L;<br />_delay_ms(18);<br /> }<br /><br /><br />}<br />}<br />[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=549">leszek90</a> — 14 sty 2013, o 13:56</p><hr />
]]></content>
</entry>
</feed>