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

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

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=3663&amp;mode</id>
<entry>
<author><name><![CDATA[LogTeam]]></name></author>
<updated>2013-07-25T22:59:41+01:00</updated>
<published>2013-07-25T22:59:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3663&amp;p=43389#p43389</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3663&amp;p=43389#p43389"/>
<title type="html"><![CDATA[Re: Kolejny problem z kodem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3663&amp;p=43389#p43389"><![CDATA[
Genialne! Dzięki, teraz w moich rękach obrót <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Edit:<br />Mission compleated <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Mam nadzieje że zatrzymania są spowodowane pilotem który przekazuje sygnał &quot;seriami&quot; (widziałem przez kamerę <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> )<br /><br />Teraz została ostatnia sprawa, z ADC ale mam nadzieję że chociaż to sam ogarnę <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=738">LogTeam</a> — 25 lip 2013, o 22:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[LogTeam]]></name></author>
<updated>2013-07-25T21:47:20+01:00</updated>
<published>2013-07-25T21:47:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3663&amp;p=43377#p43377</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3663&amp;p=43377#p43377"/>
<title type="html"><![CDATA[Re: Kolejny problem z kodem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3663&amp;p=43377#p43377"><![CDATA[
No to chyba wystarczy if(...) else DCS_STOP;<br />Jednak czy to nie będzie konfliktowało z innymi ifami.<br />Teraz to jedno koło się nie kręci...<br />[syntax=c]while(1)<br />{<br />    zrob_pomiar ();<br />            //if ( (CZUJNIK1 &amp;&amp; CZUJNIK2) || CZUJNIK1) atakuj_lewo ();                                     //Jesli 2 pierwsze czujniki widza to robot atakuje lekko skręcając w lewo. Ale jesli trzeci czujnik widzi to atakuje tez skrecajac w lewo<br />            //if ( (CZUJNIK2 &amp;&amp; CZUJNIK3) || CZUJNIK3) atakuj_prawo ();                                    //Jesli 2 pierwsze czujniki widza to robot atakuje lekko skręcając w prawo. Ale jesli trzeci czujnik widzi to atakuje tez skrecajac w prawo<br />            if (CZUJNIK1 &amp;&amp; CZUJNIK2 &amp;&amp; CZUJNIK3) atakuj(); else if (CZUJNIK11 &amp; CZUJNIK22 &amp;&amp; CZUJNIK33) DCS_STOP;                                         //Jesli 3 pierwsze czujniki widza to robot atakuje prosto<br /><br /><br />            if (CZUJNIK4 &amp; CZUJNIK5 &amp; CZUJNIK6) i=1; else i=0;<br />            if (i==1) obrot(); else if (i==0) DCS_STOP;<br />            //if (CZUJNIK11 &amp; CZUJNIK22 &amp; CZUJNIK33 &amp; CZUJNIK44 &amp; CZUJNIK55 &amp; CZUJNIK66) obrot();   //Jesli czujniki nie widza robot sie obraca dopoki ktorys warunek zostanie spelniony<br /><br />            //if (White_line1 || White_line2) atakuj();<br />            //if (White_line3 || White_line4) obrot_linia();<br /><br />}[/syntax]<br /><br />Edit:<br />Zobaczyłem że gdy nie puszczam lekkich sygnałów przez diodę IR to wtedy silniki ładnie przestają pracować. Może gdy zamontuję zwykłe diody IR do układu będzie dobrze. No bo w sumie przeciwnik nie wysyła takich sygnałów (nie chodzi o 36kHz)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=738">LogTeam</a> — 25 lip 2013, o 21:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[LogTeam]]></name></author>
<updated>2013-07-25T21:18:49+01:00</updated>
<published>2013-07-25T21:18:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3663&amp;p=43370#p43370</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3663&amp;p=43370#p43370"/>
<title type="html"><![CDATA[Re: Kolejny problem z kodem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3663&amp;p=43370#p43370"><![CDATA[
[syntax=c]void obrot (void)<br />{<br />DCS_STOP;<br />    DCS_OBROT;<br />}<br /><br />void atakuj_lewo (void)<br />{<br />    pwmA=150;<br />    DC_KANAL;<br />}<br /><br />void atakuj_prawo (void)<br />{<br />    pwmB=150;<br />    DC_KANAL1;<br />}<br /><br />void atakuj (void)<br />{<br />    DCS_PRZOD;<br />}[/syntax]<br />Poprawiony .h<br />[syntax=c]/*<br /> * minisumo.h<br /> *<br /> *  Created on: 25-07-2013<br /> *      Author: Kuba<br /> */<br /><br /><br /><br />#ifndef MINISUMO_H_<br />#define MINISUMO_H_<br /><br />#define REF_VCC (1&lt;&lt;REFS0)       //napięcie odniesienia ADC VCC<br /><br />uint8_t pwmA;                    //pwm od OCR1A<br />uint8_t pwmB;                    //pwm od OCR1B<br />uint8_t wynik&#91;4&#93;;<br /><br />/////////////Makra do czujników lini//////////////////<br /><br />#define White_line1 wynik&#91;1&#93;&gt;750<br />#define Black_line1 wynik&#91;1&#93;&lt;511<br /><br />#define White_line2 wynik&#91;2&#93;&gt;750<br />#define Black_line2 wynik&#91;2&#93;&lt;511<br /><br />#define White_line3 wynik&#91;3&#93;&gt;750<br />#define Black_line3 wynik&#91;3&#93;&lt;511<br /><br />#define White_line4 wynik&#91;4&#93;&gt;750<br />#define Black_line4 wynik&#91;4&#93;&lt;511<br /><br />////////////Makra do czujnikow podczerwieni Tsop//////////////////////////////<br />#define CZUJNIK1_PIN (1&lt;&lt;PC7)<br />#define CZUJNIK1 !(PINC &amp; CZUJNIK1_PIN)<br />#define CZUJNIK11 (PINC &amp; CZUJNIK1_PIN)<br /><br />#define CZUJNIK2_PIN (1&lt;&lt;PD3)<br />#define CZUJNIK2 !(PIND &amp; CZUJNIK2_PIN)<br />#define CZUJNIK22 (PIND &amp; CZUJNIK2_PIN)<br /><br />#define CZUJNIK3_PIN (1&lt;&lt;PD2)<br />#define CZUJNIK3 !(PIND &amp; CZUJNIK3_PIN)<br />#define CZUJNIK33 (PIND &amp; CZUJNIK3_PIN)<br /><br />#define CZUJNIK4_PIN (1&lt;&lt;PA2)<br />#define CZUJNIK4 !(PINA &amp; CZUJNIK4_PIN)<br />#define CZUJNIK44 (PINA &amp; CZUJNIK4_PIN)<br /><br />#define CZUJNIK5_PIN (1&lt;&lt;PA1)<br />#define CZUJNIK5 !(PINA &amp; CZUJNIK5_PIN)<br />#define CZUJNIK55 (PINA &amp; CZUJNIK5_PIN)<br /><br />#define CZUJNIK6_PIN (1&lt;&lt;PB4)<br />#define CZUJNIK6 !(PINB &amp; CZUJNIK6_PIN)<br />#define CZUJNIK66 (PINB &amp; CZUJNIK6_PIN)<br /><br /><br />// przydatne definicje pinów sterujących<br /><br />#define WE_A PC1<br />#define WE_B PC3<br />#define Enable PC2<br /><br />#define We_A PC6<br />#define We_B PC4<br />#define Enable1 PC5<br />/////////// definicje poleceń sterujących pracą silnika //////////////<br /><br />#define DCS_PRZOD DC_PRZOD1,DC_PRZOD<br />#define DCS_TYL DC_TYL,DC_TYL1<br /><br />#define DCS_STOP DC_STOP,DC_STOP1<br />#define DCS_OBROT DC_PRZOD,DC_TYL1<br /><br />#define DC_PRZOD PORTC |= (1&lt;&lt;WE_A); PORTC &amp;= ~(1&lt;&lt;WE_B); PORTC |= (1&lt;&lt;Enable)<br />#define DC_TYL PORTC |= (1&lt;&lt;WE_A); PORTC &amp;= ~(1&lt;&lt;WE_B); PORTC |= (1&lt;&lt;Enable)<br />#define DC_KANAL PORTC &amp;= ~(1&lt;&lt;WE_A)<br /><br /><br />#define DC_PRZOD1 PORTC |= (1&lt;&lt;We_A); PORTC &amp;= ~(1&lt;&lt;We_B); PORTC |= (1&lt;&lt;Enable1)<br />#define DC_TYL1 PORTC |= (1&lt;&lt;We_B); PORTC &amp;= ~(1&lt;&lt;We_A); PORTC |= (1&lt;&lt;Enable1)<br />#define DC_KANAL1 PORTC &amp;= ~(1&lt;&lt;We_A);<br /><br /><br />#define DC_STOP PORTC &amp;= ~(1&lt;&lt;WE_A); PORTC &amp;= ~(1&lt;&lt;WE_B)<br />#define DC_STOP1 PORTC &amp;= ~(1&lt;&lt;We_A); PORTC &amp;= ~(1&lt;&lt;We_B)<br /><br />//////////////////////////////////////////////////////////////////////<br /><br />////////////////Funkcje do odpowiedniego sterowania silnikami/////////////////////<br />void zrob_pomiar (void);<br /><br />void obrot (void);<br />void obrot_linia (void);<br />void stop (void);<br />void odjedz (void);<br />void atakuj (void);<br />void atakuj_lewo (void);<br />void atakuj_prawo (void);<br /><br /><br />#endif /* MINISUMO_H_ */[/syntax]<br />Zmieniłem dwa operatory logiczne w DDRD, DDRA itp.<br />Po tej zmianie gdy inny if się spełnia silnik zmienia swoje obroty choć i tak ciągle się kręci.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=738">LogTeam</a> — 25 lip 2013, o 21:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[LogTeam]]></name></author>
<updated>2013-07-25T21:00:58+01:00</updated>
<published>2013-07-25T21:00:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3663&amp;p=43367#p43367</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3663&amp;p=43367#p43367"/>
<title type="html"><![CDATA[Kolejny problem z kodem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3663&amp;p=43367#p43367"><![CDATA[
Witam ponownie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Gdy ogarnąłem mostek H nadszedł czas na czujniki TSOP 4836.<br />Problem pojawił się na samym początku.<br />Wygląda to tak jakby warunek się ciągle spełniał.<br /><br />No ale od początku <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Napisałem kawałek kodu do odbioru 6 czujników podczerwieni TSOP. Gdy 3 czujniki odbierają sygnał w tym samym czasie silniki mają kręcić się w odpowiednią stronę. Jednak jest problem w tym że silniki kręcą się nawet jeśli warunek nie jest spełniony.<br />Wygląda to tak. Włączam zasilanie, świecę diodą IR na tsopy, silniki się zaczynają kręcić, przestaje świecić, silniki nadal się kręcą i nie da się ich żadnym ifem zatrzymać <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> Tak samo reaguje reszta ifów. Gdy jeden się spełni, spróbowanie zmiany ifa kończy się próbą zmiany obrotu silnika jednak potem kręci się i tak w poprzednią stronę. Przykładowym ifem który się ciągle spełnia jest: if (CZUJNIK1 &amp;&amp; CZUJNIK2 &amp;&amp; CZUJNIK3) atakuj();   <br /><br />Oto kody<br />[syntax=c]//*<br /> //* main.c<br /> //*<br /> //*  Created on: 25-07-2013<br /> //*      Author: Kuba<br /> // 1////1/2/3////2<br />       /////////<br />      /////////<br />      /////////<br /> //  3///4/5/6////4<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />#include &quot;Minisumo/minisumo.h&quot;<br /><br /><br /><br />int main (void)<br />{<br />// Inicjalizacja pinów do odbierania napięcia z czujników Tsop<br />DDRA &amp;= ~(1&lt;&lt;PA2) &amp;&amp; ~(1&lt;&lt;PA1);<br />DDRC &amp;= ~(1&lt;&lt;PC7);<br />DDRD &amp;= ~(1&lt;&lt;PD3) &amp;&amp; ~(1&lt;&lt;PD2);<br />DDRB &amp;= ~(1&lt;&lt;PB4);<br /><br />PORTA |= (1&lt;&lt;PA2) ||  (1&lt;&lt;PA1);<br />PORTC |= (1&lt;&lt;PC7);<br />PORTD |= (1&lt;&lt;PD3) || (1&lt;&lt;PD2);<br />PORTB |= (1&lt;&lt;PB4);<br /><br /><br />DDRC |=  (1&lt;&lt;We_A) | (1&lt;&lt;We_B) | (1&lt;&lt;WE_A) | (1&lt;&lt;WE_B);<br /><br />//Inicjalizajca ADC do pomiaru napięcia z czujników linii<br /><br />ADCSRA |= (1&lt;&lt;ADEN);             // włącz ADC<br />ADCSRA |= (1&lt;&lt;ADPS1)|(1&lt;&lt;ADPS0); // preskaler = 128<br />ADMUX  |= REF_VCC;             // ustawiamy wewn. źr odn. 5V<br /><br />//Inicjalizacja Timera1<br />TCCR1A |= (1&lt;&lt;COM1A1); //Clear at top<br />TCCR1B |= (1&lt;&lt;COM1B1); //Clear at top<br />TCCR1B |= (1&lt;&lt;CS12) | (1&lt;&lt;CS10); //preskaler 1024<br />TCCR1B |= (1&lt;&lt;WGM12);  //tryb fast pwm<br />TCCR1A |= (1&lt;&lt;WGM10);  //tryb fast pwm<br /><br />    OCR1A=0;<br />    OCR1B=0;<br />    pwmA=OCR1A;<br />    pwmB=OCR1B;<br /><br />uint8_t i=0;<br />while(1)<br />{<br />    zrob_pomiar ();<br /><br />            if ( (CZUJNIK1 &amp;&amp; CZUJNIK2) || CZUJNIK1) atakuj_lewo ();                                      //Jesli 2 pierwsze czujniki widza to robot atakuje lekko skręcając w lewo. Ale jesli trzeci czujnik widzi to atakuje tez skrecajac w lewo<br />            if ( (CZUJNIK2 &amp;&amp; CZUJNIK3) || CZUJNIK3) atakuj_prawo ();                                     //Jesli 2 pierwsze czujniki widza to robot atakuje lekko skręcając w prawo. Ale jesli trzeci czujnik widzi to atakuje tez skrecajac w prawo<br />            if (CZUJNIK1 &amp;&amp; CZUJNIK2 &amp;&amp; CZUJNIK3) atakuj();                                            //Jesli 3 pierwsze czujniki widza to robot atakuje prosto<br /><br /><br />            //if (CZUJNIK4 &amp; CZUJNIK5 &amp; CZUJNIK6) obrot(); else;<br /><br />            //if (CZUJNIK11 &amp; CZUJNIK22 &amp; CZUJNIK33 &amp; CZUJNIK44 &amp; CZUJNIK55 &amp; CZUJNIK66) obrot();   //Jesli czujniki nie widza robot sie obraca dopoki ktorys warunek zostanie spelniony<br /><br />            //if (White_line1 || White_line2) atakuj();<br />            //if (White_line3 || White_line4) obrot_linia();<br /><br />}<br /><br />}[/syntax]<br /><br />[syntax=c]#ifndef MINISUMO_H_<br />#define MINISUMO_H_<br /><br />#define REF_VCC (1&lt;&lt;REFS0)       //napięcie odniesienia ADC VCC<br /><br />uint8_t pwmA;                    //pwm od OCR1A<br />uint8_t pwmB;                    //pwm od OCR1B<br />uint8_t wynik&#91;4&#93;;<br /><br />/////////////Makra do czujników lini//////////////////<br /><br />#define White_line1 wynik&#91;1&#93;&gt;750<br />#define Black_line1 wynik&#91;1&#93;&lt;511<br /><br />#define White_line2 wynik&#91;2&#93;&gt;750<br />#define Black_line2 wynik&#91;2&#93;&lt;511<br /><br />#define White_line3 wynik&#91;3&#93;&gt;750<br />#define Black_line3 wynik&#91;3&#93;&lt;511<br /><br />#define White_line4 wynik&#91;4&#93;&gt;750<br />#define Black_line4 wynik&#91;4&#93;&lt;511<br /><br />////////////Makra do czujnikow podczerwieni Tsop//////////////////////////////<br />#define CZUJNIK1_PIN (1&lt;&lt;PC7)<br />#define CZUJNIK1 !(PINC &amp; CZUJNIK1_PIN)<br />#define CZUJNIK11 (PINC &amp; CZUJNIK1_PIN)<br /><br />#define CZUJNIK2_PIN (1&lt;&lt;PD3)<br />#define CZUJNIK2 !(PIND &amp; CZUJNIK2_PIN)<br />#define CZUJNIK22 (PIND &amp; CZUJNIK2_PIN)<br /><br />#define CZUJNIK3_PIN (1&lt;&lt;PD2)<br />#define CZUJNIK3 !(PIND &amp; CZUJNIK3_PIN)<br />#define CZUJNIK33 (PIND &amp; CZUJNIK3_PIN)<br /><br />#define CZUJNIK4_PIN (1&lt;&lt;PA2)<br />#define CZUJNIK4 !(PINA &amp; CZUJNIK4_PIN)<br />#define CZUJNIK44 (PINA &amp; CZUJNIK4_PIN)<br /><br />#define CZUJNIK5_PIN (1&lt;&lt;PA1)<br />#define CZUJNIK5 !(PINA &amp; CZUJNIK5_PIN)<br />#define CZUJNIK55 (PINA &amp; CZUJNIK5_PIN)<br /><br />#define CZUJNIK6_PIN (1&lt;&lt;PB4)<br />#define CZUJNIK6 !(PINB &amp; CZUJNIK6_PIN)<br />#define CZUJNIK66 (PINB &amp; CZUJNIK6_PIN)[/syntax]<br /><br />Myślę że minisumo.c jest zbędne bo tam są tylko funkcje do silników.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=738">LogTeam</a> — 25 lip 2013, o 21:00</p><hr />
]]></content>
</entry>
</feed>