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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-05-26T21:41:43+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=15452&amp;mode</id>
<entry>
<author><name><![CDATA[Konop93]]></name></author>
<updated>2016-05-26T21:41:43+01:00</updated>
<published>2016-05-26T21:41:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15452&amp;p=161150#p161150</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15452&amp;p=161150#p161150"/>
<title type="html"><![CDATA[Re: Line follower ADC ATMEGA8A]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15452&amp;p=161150#p161150"><![CDATA[
Udało się, robot działa. Jest wszystko okej. Tylko jedno co mnie martwi to nie jest na tyle szybki zeby kazdy zakręt pokonać, znacie jakieś sposoby na optymalizacje? Co wplywa na optymalizacje? Preskaler, F_cpu? tak jakby czujniki za wolno zczytywały..<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=13980">Konop93</a> — 26 maja 2016, o 21:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2016-05-25T21:11:20+01:00</updated>
<published>2016-05-25T21:11:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15452&amp;p=161099#p161099</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15452&amp;p=161099#p161099"/>
<title type="html"><![CDATA[Re: Line follower ADC ATMEGA8A]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15452&amp;p=161099#p161099"><![CDATA[
Witam<br />A skąd ADC wie kiedy jest jaki numer:<br />[syntax=c]if (numer==5){<br />       ADMUX|=(1&lt;&lt;MUX2)|(1&lt;&lt;MUX0);<br />    }<br />    if (numer==4){<br />       ADMUX|=(1&lt;&lt;MUX2);<br />    }<br />    if (numer==3){<br />       ADMUX|=(1&lt;&lt;MUX0)|(1&lt;&lt;MUX1);<br />    }[/syntax]<br />Najpierw zmień formę wstawienia kodu: SYNTAX wybierz - <strong>C</strong> bo troszkę się niewygodnie czyta.<br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 25 maja 2016, o 21:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Konop93]]></name></author>
<updated>2016-05-26T12:03:38+01:00</updated>
<published>2016-05-25T19:50:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15452&amp;p=161097#p161097</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15452&amp;p=161097#p161097"/>
<title type="html"><![CDATA[Line follower ADC ATMEGA8A]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15452&amp;p=161097#p161097"><![CDATA[
Witam<br />Mam problem z moim line followerem, siedze już nad nim przeszło tydzień i cały czas to samo...<br /><br />To mój obecny kod:<br /><br />F_CPU 16MHz<br />[syntax=c]* Line Follower.c<br /> *<br /> * Created: 2016-05-17 14:24:31<br /> * Author : Admin<br /> */<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#define PWM_lewy OCR1A    //EN1,2<br />#define PWM_prawy OCR1B//EN3,4<br />//#define EnPWMP (1&lt;&lt;PB2)<br />//#define EnPWML (1&lt;&lt;PB1)<br />#define Silnik_prawy_a PORTD|=(1&lt;&lt;PD1)//(1&lt;&lt;PD0) //input4<br />#define Silnik_prawy_b PORTD&amp;=~(0&lt;&lt;PD0) //input3<br />#define Silnik_lewy_a PORTD|=(1&lt;&lt;PD3)//(1&lt;&lt;PD3)  //input1<br />#define Silnik_lewy_b PORTD&amp;=~(0&lt;&lt;PD2)//(1&lt;&lt;PD2)  //input2<br />#define Dioda PORTD|=(1&lt;&lt;PD6)<br /><br />const uint8_t Granica=50;<br /><br />volatile uint8_t czujnik_srodkowy;<br />volatile uint8_t czujnik_prawy;<br />volatile uint8_t czujnik_lewy;<br />int W;<br /><br />int read_adc(uint8_t numer)<br />{<br />    ADMUX &amp;= 0xf0;<br />    ADMUX|=(0&lt;&lt;REFS1)|(1&lt;&lt;REFS0);<br />    //ADCSRA=(1&lt;&lt;ADEN)|(1&lt;&lt;ADPS2)|(ADPS1)|(ADPS0);<br />    //ADMUX |= numer;<br />    if (numer==5){<br />    ADMUX|=(1&lt;&lt;MUX2)|(1&lt;&lt;MUX0);<br />    }<br />    if (numer==4){<br />    ADMUX|=(1&lt;&lt;MUX2);<br />    }<br />    if (numer==3){<br />    ADMUX|=(1&lt;&lt;MUX0)|(1&lt;&lt;MUX1);<br />    }<br /><br /><br />    ADCSRA|=(1&lt;&lt;ADSC)|(1&lt;&lt;ADFR);<br />    while(!(ADCSRA &amp; (1&lt;&lt;ADIF))); //PETLA TRWA DOPOKI ADSC=1<br />    ADCSRA &amp;= ~((1&lt;&lt;ADSC)|(1&lt;&lt;ADIF));<br />    return ADCW;<br /><br />}<br />void wczytaj_stany()<br />{<br />    W=read_adc(3);<br />    W=read_adc(3);<br />    czujnik_prawy=W;<br /><br />    W=read_adc(4);<br />    W=read_adc(4);<br />    czujnik_srodkowy=W;<br /><br />    W=read_adc(5);<br />    W=read_adc(5);<br />    czujnik_lewy=W;<br />}<br />int main(void)<br />{<br />    //KONFIGURACJA PWM<br />    TCCR1A|=(1&lt;&lt;WGM10);<br />    TCCR1B|=(1&lt;&lt;WGM12);<br />    TCCR1A|=(1&lt;&lt;COM1A1)|(1&lt;&lt;COM1B1);<br />    TCCR1B|=(1&lt;&lt;CS10);<br />    TCCR1B|=(1&lt;&lt;CS12);<br />    //    //ADC start conversion<br />    ADCSRA|=(1&lt;&lt;ADEN)|(1&lt;&lt;ADPS2)|(1&lt;&lt;ADPS1)|(1&lt;&lt;ADPS0);<br /><br /><br /><br />    Dioda;<br />    DDRD=0xff; //wyjscie portD<br />    DDRB=0xff; //wyjscie portB<br /><br />    Silnik_lewy_a;<br />    Silnik_prawy_a;<br /><br /><br />    while (1)<br />        {<br />            wczytaj_stany();<br /><br />            if (czujnik_srodkowy&gt;Granica) {<br /><br />                PWM_lewy=255;<br />                PWM_prawy=255;<br /><br />            }<br />            else if (czujnik_lewy&gt;Granica){<br />                PWM_lewy=0;<br />                PWM_prawy=255;<br /><br />            }<br />            else if (czujnik_prawy&gt;Granica){<br />                PWM_lewy=255;<br />                PWM_prawy=0;<br /><br />            }<br />            else<br />            {<br />                PWM_lewy=255;<br />                PWM_prawy=0;<br />            }<br />        }<br />}[/syntax]<br /><br />Na tym kodzie działa jak sie mu podoba, gry zakryje mu czujnik lewy i środkowy to przeważnie włącza się koło prawe, a powinno lewe. Lewe tylko włączy się w jednym położeniu zakrycia czujnika.<br />Gdy zakryje mu wszystkie trzy czujniki, to działa raz koło prawe a raz lewe, jak mu się spodoba tak zrobi- a powinny się oba koła wtedy kręcić.<br />Z tego co zaobserwowałem to dobrze działa na zakrytym czujniku prawym i środkowym-rusza prawym kołem cały czas.<br /><br />Obstawiam na funkcje wczytaj_stany lub read_adc. Coś z nimi musi być nie tak, nie wiem w czym juz szukać problemu... Już powoli trace siły na ten program.<br />Gdy wgram program z tego tutaj kursu co udostępnia autor- to wszystko działa jak należy...<br />Więc pod względem podłączenia jest wszystko git.<br /><br />Proszę o pomoc <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=13980">Konop93</a> — 25 maja 2016, o 19:50</p><hr />
]]></content>
</entry>
</feed>