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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2019-03-27T15:38:26+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=22115&amp;mode</id>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2019-03-27T15:38:26+01:00</updated>
<published>2019-03-27T15:38:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22115&amp;p=217749#p217749</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22115&amp;p=217749#p217749"/>
<title type="html"><![CDATA[Re: Polaczenie joysticka i 2x serwo SG90]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22115&amp;p=217749#p217749"><![CDATA[
Masz ewidentnie problem z zasilaniem<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 27 mar 2019, o 15:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[arti86pl]]></name></author>
<updated>2019-03-27T15:29:21+01:00</updated>
<published>2019-03-27T15:29:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22115&amp;p=217747#p217747</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22115&amp;p=217747#p217747"/>
<title type="html"><![CDATA[Re: Polaczenie joysticka i 2x serwo SG90]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22115&amp;p=217747#p217747"><![CDATA[
podpialem chip pod USB i bylo jeszcze gorzej. Serwa doslownie zyly wlasnym zyciem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6565">arti86pl</a> — 27 mar 2019, o 15:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2019-03-27T14:49:39+01:00</updated>
<published>2019-03-27T14:49:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22115&amp;p=217745#p217745</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22115&amp;p=217745#p217745"/>
<title type="html"><![CDATA[Re: Polaczenie joysticka i 2x serwo SG90]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22115&amp;p=217745#p217745"><![CDATA[
A to nie jest tak, że linia 5V jest jedna tyko kabli wychodzi kilka z tego punktu? Zostaw serwa na zasilaczu, a procka zasil testowo, np. z ogniwa li-jon albo zupełnie osobnego zasilacza jak napięcie okaże się za niskie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 27 mar 2019, o 14:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[arti86pl]]></name></author>
<updated>2019-03-27T14:18:22+01:00</updated>
<published>2019-03-27T14:18:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22115&amp;p=217741#p217741</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22115&amp;p=217741#p217741"/>
<title type="html"><![CDATA[Re: Polaczenie joysticka i 2x serwo SG90]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22115&amp;p=217741#p217741"><![CDATA[
do testow uzywam zasilacza z komputera, na jednej lini 5V mam procesor, na drugiej serwa. Tak jest nieprawidlowo?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6565">arti86pl</a> — 27 mar 2019, o 14:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2019-03-27T14:09:59+01:00</updated>
<published>2019-03-27T14:09:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22115&amp;p=217740#p217740</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22115&amp;p=217740#p217740"/>
<title type="html"><![CDATA[Re: Polaczenie joysticka i 2x serwo SG90]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22115&amp;p=217740#p217740"><![CDATA[
Jeśli zasilanie serw jest z tego samego punktu 5V co procesor to zapomnij, że będzie to prawidłowo działać.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 27 mar 2019, o 14:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[arti86pl]]></name></author>
<updated>2019-03-27T13:01:01+01:00</updated>
<published>2019-03-27T13:01:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22115&amp;p=217738#p217738</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22115&amp;p=217738#p217738"/>
<title type="html"><![CDATA[Polaczenie joysticka i 2x serwo SG90]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22115&amp;p=217738#p217738"><![CDATA[
Troche dziwnie zachowuja mi sie dwa serwa podlaczone do ATMEGA32A. Mianowicie przy programowaniu, ladnie reagowaly na pozycje joysticka (2 osiowy). Teraz podlaczylem wszystko do zewnetrznego zasilania, 5V do chipa i joysticka oraz osobne 5V na oba serwa. <br />Czasem jest tak ze jedno serwo reaguje poprawnie, czasem idzie ale skokowo. Drugie natomiast, po powrocie joysticka, wychyla sie maksymalnie jakby joystick byl w pozycji Y na max.<br />Podejzewam ze cos mam nie tak z referencyjnym zasilaniem (mam dodatkowo podpiete 5V do AVCC oraz GND i miedzy nimi kondensator), skoro na zasilaniu z programatora dobrze dzialalo a teraz nie dziala.<br />Oto moj kod:<br />[syntax=c]#define get_bit(reg,bitnum) ((reg &amp; (1&lt;&lt;bitnum))&gt;&gt;bitnum)<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &quot;HD44780.h&quot;<br />#include &lt;string.h&gt;<br /><br />int x = 0;<br />int y = 0;<br />const int min_angle_x = 8;<br />const int max_angle_x = 33;<br />int current_angle_x = min_angle_x;<br /><br />const int min_angle_y = 8;<br />const int max_angle_y = 33;<br />int current_angle_y = min_angle_y;<br /><br />void moveX(uint8_t right);<br />char* integer_to_string(int x);<br />char* concat(const char *s1, const char *s2);<br /><br />int main(void)<br />{<br />    //INIT LCD<br />    LCD_Initalize();<br />    LCD_Clear();<br />    LCD_Home();<br /><br />    //ADC INITIATION<br />    ADCSRA |= 1&lt;ADPS2;<br />    ADMUX |= 1&lt;&lt;REFS0 | 1&lt;&lt;REFS1;<br />    ADCSRA |= 1&lt;&lt;ADIE;<br />    ADCSRA |= 1&lt;&lt;ADEN;<br />    DDRD = 1&lt;&lt;PD6;<br />    sei();<br />    ADCSRA |= 1&lt;&lt;ADSC;<br /><br />    //SERVO INITIATION<br /><br />    uint8_t initiation_done = 0;<br /><br />    DDRD |= 0xFF; //output on DDR D<br />   // DDRA |= 0xFF; //output on DDR A<br />    DDRB = DDRB &amp; ~(1&lt;&lt;0) &amp; ~(1&lt;&lt;1);<br /><br />    TCCR1A |= 1&lt;&lt;COM1A1 | 1&lt;&lt;COM1B1 | 1&lt;&lt;WGM11;<br />    TCCR1B |= 1&lt;&lt;WGM13 | 1&lt;&lt;WGM12 | 1&lt;&lt;CS11 | 1&lt;&lt;CS10;<br /><br />    ICR1 = (F_CPU / 64UL / 50UL) - 1;<br /><br />    DDRD |= 1&lt;&lt;PD4 | 1&lt;&lt;PD5;<br />    OCR1A = min_angle_x;<br />    OCR1B = min_angle_y;<br />    //DDRA |= 1&lt;&lt;PA0 | 1&lt;&lt;PA1;<br />    //calculate minimum and maximum angle values<br />//    min_angle_x = ICR1 / 40 + 2;<br /> //   max_angle_x = ICR1 / 40 * 5;<br />    while(1)<br />    {<br />        char xline&#91;17&#93; = {0};<br />        snprintf(xline, sizeof(xline), &quot;%s%s%s&quot;, &quot;X: &quot;, integer_to_string(current_angle_x - 8), &quot; &quot;);<br />        LCD_GoTo(0,0);<br />        LCD_WriteText(xline);<br />        LCD_GoTo(0,1);<br />        char yline&#91;17&#93; = {0};<br />        snprintf(yline, sizeof(yline), &quot;%s%s%s&quot;, &quot;Y: &quot;, integer_to_string(current_angle_y - 8), &quot; &quot;);<br />        LCD_WriteText(yline);<br />    }<br />}<br /><br />void moveX(uint8_t right)<br />{<br />    if(right == 1)<br />        current_angle_x++;<br />    if(right == 0)<br />        current_angle_x--;<br /><br />    if(current_angle_x &gt; max_angle_x)<br />        current_angle_x = max_angle_x;<br />    if(current_angle_x &lt; min_angle_x)<br />    {<br />        current_angle_x = min_angle_x;<br />    }<br />    OCR1A = current_angle_x;<br />    _delay_ms(50);<br />}<br /><br />void moveY(uint8_t up)<br />{<br />    if(up == 1)<br />        current_angle_y++;<br />    if(up == 0)<br />        current_angle_y--;<br /><br />    if(current_angle_y &gt; max_angle_y)<br />        current_angle_y = max_angle_y;<br />    if(current_angle_y &lt; min_angle_y)<br />    {<br />        current_angle_y = min_angle_y;<br />    }<br />    OCR1B = current_angle_y;<br />    _delay_ms(50);<br />}<br /><br />char* integer_to_string(int x)<br />{<br />    char* buffer = malloc(sizeof(char) * sizeof(int) * 4 + 1);<br />    if (buffer)<br />    {<br />         sprintf(buffer, &quot;%d&quot;, x);<br />    }<br />    return buffer; // caller is expected to invoke free() on this buffer to release memory<br />}<br /><br />char* concat(const char *s1, const char *s2)<br />{<br />    char *result = malloc(strlen(s1) + strlen(s2) + 1); // +1 for the null-terminator<br />    // in real code you would check for errors in malloc here<br />    strcpy(result, s1);<br />    strcat(result, s2);<br />    return result;<br />}<br /><br />ISR(ADC_vect)<br />{<br />    uint8_t theLow = ADCL;<br />    uint16_t result = ADCH&lt;&lt;8 | theLow;<br />    switch(ADMUX)<br />    {<br />        case 0xC0:<br />            y = result;<br />            if(result &gt; 1000)<br />                moveY(1);<br />            if(result &lt; 100)<br />                moveY(0);<br />            ADMUX = 0xC1;<br />            break;<br />        case 0xC1:<br />            x = result;<br />            if(result &gt; 1000)<br />                moveX(1);<br />            if(result &lt; 100)<br />                moveX(0);<br />            ADMUX = 0xC0;<br />            break;<br />        default:<br />            break;<br />    }<br />    ADCSRA |= 1&lt;&lt;ADSC;<br />}[/syntax]<br /><br />Dodam ze joystick przy pomiarze zasilania na pinach x i y podaje poprawne wartosci, mianowicie na srodku 2.5V na minimum 0V a na max 5V<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6565">arti86pl</a> — 27 mar 2019, o 13:01</p><hr />
]]></content>
</entry>
</feed>