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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-03-30T16:49:37+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=30&amp;t=2704&amp;mode</id>
<entry>
<author><name><![CDATA[Marcinas]]></name></author>
<updated>2013-03-30T16:49:37+01:00</updated>
<published>2013-03-30T16:49:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2704&amp;p=32478#p32478</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2704&amp;p=32478#p32478"/>
<title type="html"><![CDATA[Re: CNY70 i SHARP GP2Y0A21YK0F]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2704&amp;p=32478#p32478"><![CDATA[
niestety nie rozumiem ... Mógł byś mi to tak prościej wytłumaczyć jak mógł bym to wykorzystać ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=434">Marcinas</a> — 30 mar 2013, o 16:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2013-03-30T08:53:41+01:00</updated>
<published>2013-03-30T08:53:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2704&amp;p=32435#p32435</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2704&amp;p=32435#p32435"/>
<title type="html"><![CDATA[Re: CNY70 i SHARP GP2Y0A21YK0F]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2704&amp;p=32435#p32435"><![CDATA[
oczywiście można to tez zrealizować taką funkcją :<br /><br />[syntax=c]<br />ISR(TIMER0_OVF_vect)<br />{<br /><br />  /* sprawdzanie sharpow */<br />  if ( (sharp[0]) || !(SHARP_L)  || !(SHARP_P))<br />    {<br />      LED_2_ON;  // zapalenie diody<br />    }<br />  else<br />    {<br />  LED_2_OFF;// zgaszenie diody<br />    }<br />  <br />  /*sprawdzanie bialych linii */<br />  if (BL_PRZOD_L || BL_PRZOD_P || BL_TYL_L  || BL_TYL_P)<br />    {<br />      LED_3_ON;  // zapalenie diody<br />    }<br />  else<br />    {<br />      LED_3_OFF; // zgaszenie diody<br />    }<br />  <br />  // tyl<br />  if ((BL_TYL_L) &amp;&amp; (BL_TYL_P))<br />    {<br />      jazdawprzod(MAX,MAX);<br />      stan = 1;<br />    }<br />  <br />  // przod<br />  else if ((BL_PRZOD_L) &amp;&amp; (BL_PRZOD_P))<br />    {<br />      jazdawstecz(MAX,MAX);<br />      stan = 2;<br />    }<br />  <br />  // prawy bok<br />  else if ((BL_PRZOD_P) &amp;&amp; (BL_TYL_P))<br />    {<br />      obrotwlewo(MAX,MAX);<br />      stan = 3;<br />    }<br />  <br />  // lewy bok<br />  else if ((BL_PRZOD_L) &amp;&amp; (BL_TYL_L))<br />    {<br />      obrotwprawo(MAX,MAX);<br />      stan = 3;<br />    }<br />  <br />  else if ((BL_PRZOD_L))<br />    {<br />      jazdawstecz(MAX,MAX);<br />      stan = 2;<br />    }<br /><br />  else if ((BL_PRZOD_P))<br />    {<br />      jazdawstecz(MAX,MAX);<br />      stan = 2;<br />    }<br />  <br />  else if ((BL_TYL_L))<br />    {<br />      jazdawprzod(MAX,MAX);<br />      stan = 1;<br />    }<br />  <br />  else if ((BL_TYL_P))<br />    {<br />      jazdawprzod(MAX,MAX);<br />      stan = 1;<br />    }<br />}<br /><br />[/syntax]<br /><br />a funkcja sharpów np taka :<br /><br />[syntax=c]<br />void sharpy()<br />{<br />sharp[0] = read_adc();<br /><br />if (!(SHARP_L))<br />sharp[1] = 1;<br />else<br />sharp[1] = 0;<br /><br /><br />if (!(SHARP_P))<br />sharp[2] = 1;<br />else<br />sharp[2] = 0;<br /><br /><br />}<br />[/syntax]<br /><br />Oczywiście najpierw wypada wszystko ładnie zdefiniować np tak:<br /><br />[syntax=c]/*  dla bialej linii */<br />#define BL_PRZOD_L  PIND &amp; _BV(2)<br />#define BL_PRZOD_P  PIND &amp; _BV(1)<br />#define BL_TYL_L    PIND &amp; _BV(3)<br />#define BL_TYL_P    PIND &amp; _BV(4)<br /><br />/*  dla sharpow */<br />#define SHARP_LPINC &amp; _BV(2)<br />#define SHARP_PPINC &amp; _BV(3)[/syntax]<br /><br /><br /><br />i tym samym życzymy miłej zabawy<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 30 mar 2013, o 08:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[swierku]]></name></author>
<updated>2013-03-30T08:31:32+01:00</updated>
<published>2013-03-30T08:31:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2704&amp;p=32433#p32433</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2704&amp;p=32433#p32433"/>
<title type="html"><![CDATA[Re: CNY70 i SHARP GP2Y0A21YK0F]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2704&amp;p=32433#p32433"><![CDATA[
Mogę Ci pokazać jak zaprogramowałem sharpa gp2d120, bardzo podobny tylko działa na mniejsze odległości (4-30 cm). Program Ci się ogólnie nie zmieni, tylko musisz &quot;na czuja&quot; powpisywać wartości odległości do tablicy. Niestety, temat wałkowałem dość długo, i nie ma uniwersalnej metody na przeliczanie odległości ponieważ pomiar jest nieliniowy, dlatego też potrzebna jest z góry zadeklarowana tablica z wartościami. Oczywiście nie mówię, że mój program jest optymalny dlatego też baw się i przerabiaj. <br />[syntax=c]<br />#include &lt;avr\io.h&gt;<br />#include &lt;util\delay.h&gt;<br />#include &lt;avr\interrupt.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;stdio.h&gt;<br />#include &quot;LCD\lcd44780.h&quot;<br />uint32_t wynik=0;<br />volatile uint16_t tablica[4];<br />volatile uint16_t pm;<br />volatile uint8_t czd, czu,i=0,j=0,c=0;<br />volatile uint16_t flaga=0,flaga2=0;<br />uint16_t wartosc[28] = {50,88,91,96,102,105,107,115,119,125,132,140,147,155,167,176,190,202,213,233,251,275,305,339,379,436,511,589};<br />uint16_t odleglosc[28] = {30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3};<br /><br /><br />int main(void)<br />{<br />lcd_init();<br />lcd_cls();<br />ADMUX |= (1&lt;&lt;REFS0);//|(1&lt;&lt;REFS1); //Vref=avcc, channel 0<br />ADCSRA |= (1&lt;&lt;ADEN); //włączenie przetwornika<br />ADCSRA |= (1&lt;&lt;ADPS1) | (1&lt;&lt;ADPS2); //preskaler=64<br />ADCSRA |= (1&lt;&lt;ADIE); //wlaczenie przerwania adc<br />DDRC &amp;= ~(1&lt;&lt;PC0);<br /><br />TCCR2 |= (1&lt;&lt;CS22) | (1&lt;&lt;CS21);<br />TCNT2=6;<br />TIMSK |= (1&lt;&lt;TOIE2);<br />DDRB|= (1&lt;&lt;PB2);<br /><br />sei();<br />while(1)<br />{<br />if(flaga2)<br />{<br />lcd_cls();<br />lcd_locate(0,0);<br /><br />for(c=0;c&lt;4;c++)<br />{<br />wynik+=tablica[c];<br />}<br />wynik/=4;<br /><br />uint8_t b=0;<br />while(wynik&gt;wartosc[b])<br />{<br />b++;<br />}<br />if(b==0)<br />{<br />lcd_str(&quot;poza zasiegiem&quot;);<br />}else<br />{<br />lcd_int(odleglosc[b]);<br />}<br /><br />wynik=0;<br />flaga2=0;<br />}<br />}<br />}<br /><br />ISR(ADC_vect)<br />{<br />PORTB^=(1&lt;&lt;PB2);<br />tablica[flaga]=ADCW;<br />flaga++;<br /><br />if (flaga==4)<br />{<br />flaga=0;<br />}<br />}<br /><br />ISR(TIMER2_OVF_vect)//przerw od timer2<br />{<br />j++;<br />if(j==26) //zlicz 26 przerwan<br />{<br />i++;<br />if(i==5)//zlicz 130 przerwan<br />{<br />flaga2=1;//ustaw flage<br />i=0;<br />}else<br />{<br />ADCSRA |= (1&lt;&lt;ADSC);<br />}<br />j=0;<br />}<br />TCNT2=6; //wpisanie poczatkowej wartosci licznika(po kazdym przerw)<br />}<br /><br />[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=864">swierku</a> — 30 mar 2013, o 08:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2013-03-30T08:26:04+01:00</updated>
<published>2013-03-30T08:26:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2704&amp;p=32432#p32432</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2704&amp;p=32432#p32432"/>
<title type="html"><![CDATA[Re: CNY70 i SHARP GP2Y0A21YK0F]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2704&amp;p=32432#p32432"><![CDATA[
Powinieneś zrealizować to w przerwaniu np <br />w taki sposób :<br /><br />[syntax=c]<br />ISR(TIMER0_OVF_vect) {<br />while(BIALA_LEWY_PRZOD) { Jedz_do_tylu(MAX,SKRET); LED4_ON; }<br />LED4_OFF;<br />while(BIALA_PRAWY_PRZOD) { Jedz_do_tylu(SKRET,MAX); LED5_ON; }<br />LED5_OFF;<br />while(BIALA_LEWY_TYL) { Jedz_do_przodu(MAX,MAX); LED4_ON; }<br />LED6_OFF;<br />while(BIALA_PRAWY_TYL) { Jedz_do_przodu(MAX,MAX); LED5_ON; }<br />LED7_OFF;<br />}<br /><br />[/syntax]<br /><br />to tylko przykład obsługi CNY70 w przerwaniu<br /><br />Jak widzisz czujników powinieneś mieć 4 szt .... żeby wykrywać biała linię w każdym momencie <br />inaczej masz pozamiatane<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 30 mar 2013, o 08:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[LogTeam]]></name></author>
<updated>2013-03-30T00:00:55+01:00</updated>
<published>2013-03-30T00:00:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2704&amp;p=32421#p32421</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2704&amp;p=32421#p32421"/>
<title type="html"><![CDATA[Re: CNY70 i SHARP GP2Y0A21YK0F]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2704&amp;p=32421#p32421"><![CDATA[
A jakie taktowanie uC <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> — 30 mar 2013, o 00:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Marcinas]]></name></author>
<updated>2013-03-29T23:07:46+01:00</updated>
<published>2013-03-29T23:07:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2704&amp;p=32413#p32413</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2704&amp;p=32413#p32413"/>
<title type="html"><![CDATA[CNY70 i SHARP GP2Y0A21YK0F]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2704&amp;p=32413#p32413"><![CDATA[
Witam,<br /><br />Próbuje zrobić program który zależnie od napięcia podawanego przez czujnik CNY70, będzie podawał odpowiednie zadanie na silniki ( jak wykryję białą to będzie miał z niej zjechać ) <br /><br />Nie wiem jaki sposób jest najlepszy aby to napisać jeszcze tego nie rozumiem dlatego proszę o rybkę <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /> <br /><br />Jak ktoś wie również jak takiego sharpa analogowego (SHARP GP2Y0A21YK0F) zaprogramować to mam nadzieję że się podzieli tą widzą <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />  <!-- m --><a class="postlink" href="http://botland.com.pl/analogowe-czujniki-odleglosci/29-sharp-gp2y0a21yk0f-analogowy-czujnik-odleglosci-10-80cm.html" >http://botland.com.pl/analogowe-czujnik ... -80cm.html</a><!-- m --> <br /><br />Jak by ktoś do tego potrzebował schemat to tu jest : <!-- l --><a class="postlink-local" href="http://forum.atnel.pl/download/file.php?id=654&amp;mode=view" >download/file.php?id=654&amp;mode=view</a><!-- l --><br /><br /><span style="color: #FF0000">Przenoszę do sklepu Rybnego - Zielony J.</span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=434">Marcinas</a> — 29 mar 2013, o 23:07</p><hr />
]]></content>
</entry>
</feed>