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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-02-23T19:31:34+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=10313&amp;mode</id>
<entry>
<author><name><![CDATA[Respect1523]]></name></author>
<updated>2015-02-23T19:31:34+01:00</updated>
<published>2015-02-23T19:31:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=120605#p120605</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=120605#p120605"/>
<title type="html"><![CDATA[Re: Witam, Pytanie o silnik krokowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=120605#p120605"><![CDATA[
1.<a href="http://forum.atnel.pl/_obrazki/o/8020/7df2e2456e57233eba7b2c5b815cf7b0.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/8020/7df2e2456e57233eba7b2c5b815cf7b0.png" alt="Obrazek" /></a><br /><br /><a href="http://forum.atnel.pl/_obrazki/o/8020/ad73d048d2ba0994140781ef513581c8.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/8020/ad73d048d2ba0994140781ef513581c8.png" alt="Obrazek" /></a><br /><br />W projekcie jest 8000000.<br /><br />2. W trakcie czytanie ale w końcu chyba zaczynam chociaż w jakimś stopniu rozumieć te timery.<br /><br />P.S. Tak tak dokładnie mam zamiar odbierać dane zewnątrz. Na początku czymś prostym potem chce napisać jakiś mały programik ale to zaznaczam <span style="color: #0000FF"><span style="text-decoration: underline"><strong>potem <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /></strong></span></span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8020">Respect1523</a> — 23 lut 2015, o 19:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[brat_kamyka]]></name></author>
<updated>2015-02-23T11:10:19+01:00</updated>
<published>2015-02-23T11:10:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=120542#p120542</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=120542#p120542"/>
<title type="html"><![CDATA[Re: Witam, Pytanie o silnik krokowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=120542#p120542"><![CDATA[
Na spokojnie<br />1. Czy dobrze ustawione fuse bity w atmega 32, czy dobrze ustawiona częstotliwość taktowania w projekcie?<br />2. Co ile czasu chcesz wysyłać string UART-em?<br />(podpowiedź przerwanie wykonuje się co 10 ms )<br />lepiej zrobić to tak :<br /><a href="http://forum.atnel.pl/topic7989.html#p89920"  class="postlink">http://forum.atnel.pl/topic7989.html#p89920</a><br />czyli w przerwaniu ustawiać czas do przodu, bo do projektu jeszcze coś dojdzie (inne zadanie z inną częstotliwością wykonywane) i będzie kłopot.<br />Do poczytania o licznikach w BB multipleksowanie LED.<br /><br /><br />1. OK<br />2. OK<br />3. brak delay czyli  OK<br /><br />PS.<br />Zaraz zaraz w projekcie &quot;maszynki&quot; musisz odbierać znaki z PC  a nie wysyłać czy się mylę?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6029">brat_kamyka</a> — 23 lut 2015, o 11:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Respect1523]]></name></author>
<updated>2015-02-22T22:49:46+01:00</updated>
<published>2015-02-22T22:49:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=120484#p120484</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=120484#p120484"/>
<title type="html"><![CDATA[Re: Witam, Pytanie o silnik krokowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=120484#p120484"><![CDATA[
1.ok?<br />2.ok?<br />3.ok?<br /><br /><br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;MKUART/mkuart.h&quot;<br /><br />volatile uint16_t Timer1, Timer2;<br /><br />int main(void) {<br /><br />    USART_Init( __UBRR );  //inicjalizacja usart<br /><br />/* Timer2 – inicjalizacja przerwania co 10ms */<br />TCCR2 |= (1&lt;&lt;WGM21);// tryb pracy CTC<br />TCCR2 |= (1&lt;&lt;CS22)|(1&lt;&lt;CS21)|(1&lt;&lt;CS20);// preskaler = 1024<br />OCR2 = 107;// przerwanie porównania co 10ms (100Hz)<br />TIMSK |= (1&lt;&lt;OCIE2);// Odblokowanie przerwania CompareMatch<br /><br />       sei(); // włączenie  przerwań<br /><br /><br /><br />while(1) {<br />if(!Timer2){<br />    Timer2 = 50;<br /><br /><br />uart_puts(&quot;Dziala na Atmega16 !!!&quot;);<br />uart_putc('\r');<br />uart_putc('\n');<br /><br />}<br />}<br />}<br /><br />ISR(TIMER2_COMP_vect){<br /><br />uint16_t x;<br />x = Timer1;                             // 1000Hz Timer1<br />if (x) Timer1 = --x;<br />x = Timer2;                             // 1000Hz Timer2<br />if (x) Timer2 = --x;<br />}[/syntax]<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/8020/61b016f74169e0cb54d95a8aea5badaf.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/8020/61b016f74169e0cb54d95a8aea5badaf.png" alt="Obrazek" /></a><br /><br />Dalej niestety nie działa na mojej atmedze32 tylko na 16 chyba czas inna kupić i przetestować.<br /><br />dziękuje za pomoc i uwagi<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8020">Respect1523</a> — 22 lut 2015, o 22:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[brat_kamyka]]></name></author>
<updated>2015-02-22T20:05:54+01:00</updated>
<published>2015-02-22T20:05:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=120419#p120419</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=120419#p120419"/>
<title type="html"><![CDATA[Re: Witam, Pytanie o silnik krokowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=120419#p120419"><![CDATA[
Witaj ponownie<br />tak na szybko przejrzałem kod moje uwagi:<br />1. czemu piszesz własne funkcje w main.c do wysyłania danych usart<br />zamiast zawartych w bibliotece [syntax=c]#include &quot;MKUART/mkuart.h&quot;[/syntax]<br />2. brak [syntax=c]sei()[/syntax] przerwań odblokowanych bo ta biblioteka pracuje na przerwaniach<br />3. do powtórnego czytania wykonania ćwiczeń BB rozdział 7.(USART)<br /><br /><br /><br />PS. [syntax=c]delay()[/syntax] to samo zło<br />poczytaj o Timerach programowych<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6029">brat_kamyka</a> — 22 lut 2015, o 20:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Respect1523]]></name></author>
<updated>2015-02-22T16:46:38+01:00</updated>
<published>2015-02-22T16:46:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=120380#p120380</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=120380#p120380"/>
<title type="html"><![CDATA[Re: Witam, Pytanie o silnik krokowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=120380#p120380"><![CDATA[
1.nic nie pomogłem ehhh<br /><br />w programie Terminal tez jest niepoprawny odczyt<br /><br /><br />2.nie wiem o co chodzi wsadziłem atmege 16 i wszystko zaczęło śmigać .... <br /><br />ktoś umie mi to wyjaśnić  ? bo już zgłupiałem<br /><br />3. potrzebuje mieć w zestawie atmega32 bo na tej 16 nie działa mój główny projekt silniczka<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8020">Respect1523</a> — 22 lut 2015, o 16:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[nkarol82]]></name></author>
<updated>2015-02-22T15:40:31+01:00</updated>
<published>2015-02-22T15:40:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=120365#p120365</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=120365#p120365"/>
<title type="html"><![CDATA[Re: Witam, Pytanie o silnik krokowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=120365#p120365"><![CDATA[
Spróbuj w pętli głównej dodać np:<br />OSCCAL=200; //jak nie ruszy to wpisz 150 i sprawdź, 160 i sprawdź ... tak kolejno do powiedzmy 240<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6192">nkarol82</a> — 22 lut 2015, o 15:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Respect1523]]></name></author>
<updated>2015-02-22T15:42:43+01:00</updated>
<published>2015-02-22T00:10:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=120314#p120314</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=120314#p120314"/>
<title type="html"><![CDATA[Re: Witam, Pytanie o silnik krokowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=120314#p120314"><![CDATA[
powalczę i zadam pytania.<br /><br />1. niestety mam jakis problem z komunikacją przez USB RS232 zestaw ATB 1.04rev<br /><br />Moje ustawienia jak jakiegoś screena brakuje dośle.<br /><a href="http://forum.atnel.pl/_obrazki/o/8020/28d39bcbf5f8183c0ceca1161dd6f164.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/8020/28d39bcbf5f8183c0ceca1161dd6f164.png" alt="Obrazek" /></a><br /><br />dostaje w consoli Putty.<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/8020/2c1c4255051ade73577337c6a3deebc2.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/8020/2c1c4255051ade73577337c6a3deebc2.png" alt="Obrazek" /></a><br /><br /><br /><br />jakieś pomysł co moge robić źle?<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;MKUART/mkuart.h&quot;<br /><br />void USART_Transmit (char data);<br /><br />int main(void) {<br /><br />USART_Init( __UBRR );// inicjalizacja UART<br /><br /><br /><br />// pętla nieskończona<br />while(1) {<br /><br />USART_Transmit ('A');<br />USART_Transmit(0x0d);<br />USART_Transmit(0x0a);<br />_delay_ms(1000);<br />}<br />}<br />void USART_Transmit(char data) {<br />while(!(UCSRA &amp; (1&lt;&lt;UDRE)));<br />UDR= data;<br /><br /><br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8020">Respect1523</a> — 22 lut 2015, o 00:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[brat_kamyka]]></name></author>
<updated>2015-02-21T21:25:29+01:00</updated>
<published>2015-02-21T21:25:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=120285#p120285</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=120285#p120285"/>
<title type="html"><![CDATA[Re: Witam, Pytanie o silnik krokowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=120285#p120285"><![CDATA[
to teraz:<br />1. zadanie pomocnicze wyślij znak przez usarta do atmegi i wypluj go na wyświetlacz (taki debuger odbioru usarta)<br /> tutaj masz pomoc <a href="http://forum.atnel.pl/topic10755.html"  class="postlink">http://forum.atnel.pl/topic10755.html</a> i oczywiście kniga tutaj zwana BB <br /> jak to zrobisz to<br />2. przerób kod tak aby pozbyć się funkcji delay() bo avr sie marnuje i blokujesz wykonywanie kodu<br />Kniga BB Rozdział projekt wielozadaniowy ----&gt; czytaj timery programowe (co ile czasu coś wykonać)<br />następnie<br />3.definicja tablicy znaków na kole tak aby atmega znała kolejność znaków od położenia początkowego <br />potem <br />4.porównanie poszczególnych wartości z odebranym znakiem ----&gt; czyli wiesz o ile i w którą stronę obrócić silnik . <br />koniec zadania<br /><br />miłego programowania<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6029">brat_kamyka</a> — 21 lut 2015, o 21:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Respect1523]]></name></author>
<updated>2015-02-21T21:18:46+01:00</updated>
<published>2015-02-21T21:18:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=120283#p120283</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=120283#p120283"/>
<title type="html"><![CDATA[Re: Witam, Pytanie o silnik krokowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=120283#p120283"><![CDATA[
Super działa i dużo mi to wyjaśniło. &lt;---- wielkie podziękowania brat_kamyka <br /><br /><br />Jak patrze jak rośni licznik odwiedzin tego tematu to daje to kopa do dalszego rozwijania projektu.<br /><br />Teraz czas na tablice aby w pełni móc realizować zadanie z pierwszego postu.<br /><br />Oczywiście jeszcze komunikacja UART. <br /><br />Jeżeli jakiś użytkownik chciałby pobawić się również takim silniczkiem to polecam na początek <!-- m --><a class="postlink" href="http://allegro.pl/arduino-silnik-krokowy-unipolarny-5v-28byj-48-5v-i5096505104.html" >http://allegro.pl/arduino-silnik-krokow ... 05104.html</a><!-- m --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8020">Respect1523</a> — 21 lut 2015, o 21:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[brat_kamyka]]></name></author>
<updated>2015-02-21T19:59:40+01:00</updated>
<published>2015-02-21T19:59:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=120270#p120270</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=120270#p120270"/>
<title type="html"><![CDATA[Re: Witam, Pytanie o silnik krokowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=120270#p120270"><![CDATA[
<div class="quotetitle">Respect1523 napisał(a):</div><div class="quotecontent"><br />[syntax=c]void kierunek_lewo(void)<br />{<br />    static uint8_t kr;<br />        if( kr == 0 ) { KROK1; }<br />        _delay_ms(20);<br />        if( kr == 1 ) { KROK2; }<br />        _delay_ms(20);<br />        if( kr == 2 ) { KROK3; }<br />        _delay_ms(20);<br />        if( kr == 3 ) { KROK4; }<br />        _delay_ms(20);<br />        if( ++kr &gt; 3 ) kr=0;<br />        lcd_init();<br />        lcd_locate(0,4);<br />        lcd_str(&quot; LEWO &quot;);<br />}[/syntax]<br /><br /> <br /></div><br /><br />funkcja<br />[syntax=c]lcd_init();[/syntax]<br />relizuje inicjacje wyświetlacza a kolega jej uzywa w pętli while(1) w funkcji wskazanej wyżej  ------&gt; dlatego mruga <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> tyle razy się wyświetlacz inicjuje<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6029">brat_kamyka</a> — 21 lut 2015, o 19:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[brat_kamyka]]></name></author>
<updated>2015-02-21T16:49:42+01:00</updated>
<published>2015-02-21T16:49:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=120241#p120241</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=120241#p120241"/>
<title type="html"><![CDATA[Re: Witam, Pytanie o silnik krokowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=120241#p120241"><![CDATA[
Jak wrócę do domu sprawdzę kod na atb<br /><br />poprawiony kod działający zgodnie z założeniami ale do obsługi klawiszy użył bym takiej jak w superdebunce w bb lub z blogu mirka <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br /><br />poprawiono kolejność sprawdzania warunków<br />wpierw krańcówka potem klawisze<br /><br />poprawiono/przerobiono definicję preprocesora na funkcję bo dużo tego było (KROK1,KROK2,KROK3,KROK4)<br /><br />[syntax=c]#include&lt;avr/io.h&gt;<br />#include&lt;util/delay.h&gt;<br />#include &quot;LCD/lcd44780.h&quot;<br /><br />/* definicje pinów sterujących tranzystorami<br /> *<br /> */<br />#define T1 (1&lt;&lt;PD2)<br />#define T2 (1&lt;&lt;PD3)<br />#define T3 (1&lt;&lt;PD4)<br />#define T4 (1&lt;&lt;PD5)<br />#define dioda (1&lt;&lt;PC7)  // symbolizuje prace SILNIKA miganie<br /><br /><br />/* definicje kroków sterujących pracą silnika */<br />void KROK1(void);<br /><br />void KROK2(void);<br />void KROK3(void);<br /><br /><br />void KROK4(void);<br /><br />//inicjacja przycisków<br />#define K1 (1&lt;&lt;PB1)       // przycisk kręcenie w prawo<br />#define K2 (1&lt;&lt;PB2)       // przycisk kręcenie w lewo<br />#define K3 (1&lt;&lt;PB3)       // przycisk kręcenie w stop<br />#define K5 (1&lt;&lt;PB5)       // PRZYCISK ZEROWANIA<br />#define KRA (1&lt;&lt;PB7)      // krancowka<br /><br /><br />//DEKLARACJA FUNKCJI<br />void kierunek_lewo(void);<br />void kierunek_prawo(void);<br />void stop(void);<br />void caly(void);<br />enum {STOP, LEWO, PRAWO, PELEN, };<br />uint8_t stan = STOP;<br /><br /><br />int main (void)<br /><br />{<br /><br />DDRC |= (dioda);                              //ustawienie portu C jako wyjciowy<br /><br />PORTB |= ( K1|K2|K3|KRA );                     // podciągamy linie klawiszy do VCC<br /><br />DDRD |= ( T1 | T2 | T3 | T4) ;            //jako wyjscie<br />PORTD &amp;= !(T1|T2|T3|T4);                //zanegowanie wyjscie (wyłączenie tranzystorów)<br />DDRA |= (1&lt;&lt;PA7);       // ustawiamy kierunek linii podświetlenia LCD jako WYJŚCIE<br />PORTA |= (1&lt;&lt;PA7);<br /><br />lcd_init();<br />lcd_locate(1,0);<br />lcd_str(&quot;ZEROWANIE&quot;);<br /><br /><br /><br />while(1)                //*************PETLA GLOWNA***************<br />{<br />       //TODO : sprawdzenie krańcówki<br />if ( !(PINB &amp; KRA) ) // sprawdzam krancowke<br />{<br />stan = STOP;<br />lcd_locate(0,4);<br />lcd_str(&quot;stop&quot;);<br />}<br /><br />else  // sprawdzenie przycisków<br />{<br />//lcd_cls();<br />//lcd_locate(1,0);<br />//lcd_str(&quot;INNE&quot;);<br />if( !(PINB &amp; K1) )<br />{<br />stan = LEWO;<br />lcd_locate(0,4);<br />lcd_str(&quot; LEWO &quot;);<br />}<br />if( !(PINB &amp; K2) )<br />{<br />stan = PRAWO;<br />lcd_locate(0,4);<br />lcd_str(&quot; PRAWO &quot;);<br />}<br />if( !(PINB &amp; K3) )<br />{<br />stan = PELEN;<br />lcd_locate(0,4);<br />lcd_str(&quot; PELEN &quot;);<br />}<br />}<br /><br />if (stan == STOP) stop();<br />if(stan == LEWO) kierunek_lewo();<br />if(stan == PRAWO) kierunek_prawo();<br />if(stan == PELEN) caly(); // PO WCISNIECIU K3 WYKONA SIE JEDEN OBROT TARCZY<br />else stop();<br /><br /><br /><br /><br />}<br />}<br /><br />//LEWO<br />void kierunek_lewo(void)<br />{<br />    static uint8_t kr;<br />        if( kr == 0 ) { KROK1(); }<br />        _delay_ms(200);<br />        if( kr == 1 ) { KROK2(); }<br />        _delay_ms(200);<br />        if( kr == 2 ) { KROK3(); }<br />        _delay_ms(200);<br />        if( kr == 3 ) { KROK4(); }<br />        _delay_ms(200);<br />        if( ++kr &gt; 3 ) kr=0;<br /><br /><br />}<br /><br />//PRAWO<br />void kierunek_prawo(void)<br />{<br />     static uint8_t kr;<br />         if( kr == 0 ) { KROK4(); }<br />         _delay_ms(200);<br />         if( kr == 1 ) { KROK3(); }<br />         _delay_ms(200);<br />         if( kr == 2 ) { KROK2(); }<br />         _delay_ms(200);<br />         if( kr == 3 ) { KROK1(); }<br />         _delay_ms(200);<br />         if( ++kr &gt; 3 ) kr=0;<br /><br /><br />}<br /><br /><br /><br /><br />//STOP<br />void stop(void)<br />{<br />        PORTD &amp;= !(T1|T2|T3|T4);<br /><br /><br /><br />}<br />//KROKI<br />void KROK1()<br />{<br />PORTD |= T1;<br />PORTD &amp;= ~(T2|T3|T4);<br />PORTC ^= dioda;<br />}<br />void KROK2(void)<br />{<br />PORTD |= T2;<br />PORTD &amp;= ~(T1|T3|T4);<br />PORTC ^= dioda;<br />}<br /><br />void KROK3(void)<br />{<br />PORTD |= T3;<br />PORTD &amp;= ~(T1|T2|T4);<br />PORTC ^= dioda;<br />}<br />void KROK4(void)<br />{<br />PORTD |= T4;<br />PORTD &amp;= ~(T1|T2|T3);<br />PORTC ^= dioda;<br />}<br />// JEDEN PELNY OBROT<br />void caly(void)<br />{<br />     uint16_t x=0;<br />        while(x&lt;510)<br />        {<br />        if ( !(PINB &amp; KRA) ) // sprawdzam krancowke<br />        {<br />        stan = STOP;<br />        lcd_locate(0,4);<br />        lcd_str(&quot;stop&quot;);<br />        return ;<br />        }<br />        KROK1();<br />        _delay_ms(200);<br />        KROK2();<br />        _delay_ms(200);<br />        KROK3();<br />        _delay_ms(200);<br />        KROK4();<br />        _delay_ms(200);<br />        x=x+1;<br />        }<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6029">brat_kamyka</a> — 21 lut 2015, o 16:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Respect1523]]></name></author>
<updated>2015-02-21T15:32:15+01:00</updated>
<published>2015-02-21T15:32:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=120228#p120228</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=120228#p120228"/>
<title type="html"><![CDATA[Re: Witam, Pytanie o silnik krokowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=120228#p120228"><![CDATA[
Jakoś smutno mi się zrobiło patrząc na zestaw ATB, że nic się nie świeci na LCD dodałem opcje wyświetlania co się dzieje w danej chwili w pracy urządzenia.<br /><br /><br /><br />[syntax=c]#include&lt;avr/io.h&gt;<br />#include&lt;util/delay.h&gt;<br />#include &quot;LCD/lcd44780.h&quot;<br /><br />/* definicje pinów sterujących tranzystorami<br /> *<br /> */<br />#define T1 (1&lt;&lt;PD2)<br />#define T2 (1&lt;&lt;PD3)<br />#define T3 (1&lt;&lt;PD4)<br />#define T4 (1&lt;&lt;PD5)<br />#define dioda (1&lt;&lt;PC7)  // symbolizuje prace SILNIKA miganie<br /><br /><br />/* definicje kroków sterujących pracą silnika */<br />#define KROK1 PORTD |= T1; PORTD &amp;= ~(T2|T3|T4) ; PORTC ^= dioda;<br />#define KROK2 PORTD |= T2; PORTD &amp;= ~(T1|T3|T4) ; PORTC ^= dioda;<br />#define KROK3 PORTD |= T3; PORTD &amp;= ~(T1|T2|T4) ; PORTC ^= dioda;<br />#define KROK4 PORTD |= T4; PORTD &amp;= ~(T1|T2|T3) ; PORTC ^= dioda;<br />//inicjacja przycisków<br />#define K1 (1&lt;&lt;PB1)       // przycisk kręcenie w prawo<br />#define K2 (1&lt;&lt;PB2)       // przycisk kręcenie w lewo<br />#define K3 (1&lt;&lt;PB3)       // przycisk kręcenie w stop<br />#define K5 (1&lt;&lt;PB5)       // PRZYCISK ZEROWANIA<br />#define KRA (1&lt;&lt;PB7)      // krancowka<br /><br /><br />//DEKLARACJA FUNKCJI<br />void kierunek_lewo(void);<br />void kierunek_prawo(void);<br />void stop(void);<br />void caly(void);<br /><br /><br /><br />int main (void)<br /><br />{<br /><br />DDRC |= (dioda);                              //ustawienie portu C jako wyjciowy<br /><br />PORTB |= ( K1|K2|K3|KRA );                     // podciągamy linie klawiszy do VCC<br /><br />DDRD |= ( T1 | T2 | T3 | T4) ;            //jako wyjscie<br />PORTD &amp;= !(T1|T2|T3|T4);                //zanegowanie wyjscie (wyłączenie tranzystorów)<br />DDRA |= (1&lt;&lt;PA7);// ustawiamy kierunek linii podświetlenia LCD jako WYJŚCIE<br />PORTA |= (1&lt;&lt;PA7);<br /><br />lcd_init();<br />lcd_locate(1,0);<br />lcd_str(&quot;ZEROWANIE&quot;);<br /><br />enum {STOP, LEWO, PRAWO, PELEN, };<br />uint8_t stan = STOP;<br />while(1)                //*************PETLA GLOWNA***************<br />{<br />        if( !(PINB &amp; K1) )  stan = LEWO;<br />        else   if( !(PINB &amp; K3) ) stan = PELEN;<br />        else   if( !(PINB &amp; K2) ) stan = PRAWO;<br />        else   if( !(PINB &amp; KRA) ) stan = STOP;<br /><br /><br />        if(stan == LEWO) kierunek_lewo();<br />        else if(stan == PRAWO) kierunek_prawo();<br />        else if(stan == PELEN) { caly(); stan = STOP ; } // PO WCISNIECIU K3 WYKONA SIE JEDEN OBROT TARCZY<br />        else stop();<br /><br />}<br />}<br />//LEWO<br />void kierunek_lewo(void)<br />{<br />    static uint8_t kr;<br />        if( kr == 0 ) { KROK1; }<br />        _delay_ms(20);<br />        if( kr == 1 ) { KROK2; }<br />        _delay_ms(20);<br />        if( kr == 2 ) { KROK3; }<br />        _delay_ms(20);<br />        if( kr == 3 ) { KROK4; }<br />        _delay_ms(20);<br />        if( ++kr &gt; 3 ) kr=0;<br />        lcd_init();<br />        lcd_locate(0,4);<br />        lcd_str(&quot; LEWO &quot;);<br />}<br /><br />//PRAWO<br />void kierunek_prawo(void)<br />{<br />     static uint8_t kr;<br />         if( kr == 0 ) { KROK4; }<br />         _delay_ms(20);<br />         if( kr == 1 ) { KROK3; }<br />         _delay_ms(20);<br />         if( kr == 2 ) { KROK2; }<br />         _delay_ms(20);<br />         if( kr == 3 ) { KROK1; }<br />         _delay_ms(20);<br />         if( ++kr &gt; 3 ) kr=0;<br />         lcd_init();<br />         lcd_locate(0,4);<br />         lcd_str(&quot; PRAWO &quot;);<br />}<br /><br /><br /><br /><br />//STOP<br />void stop(void)<br />{<br />        PORTD &amp;= !(T1|T2|T3|T4);<br />        lcd_locate(0,4);<br />                 lcd_str(&quot;wyzerowane&quot;);<br /><br /><br />}<br /><br />// JEDEN PELNY OBROT<br />void caly(void)<br /><br />{<br />     uint16_t x=0;<br />        while(x&lt;510)<br />{<br />        KROK1;<br />             _delay_ms(100);<br />        KROK2;<br />                _delay_ms(100);<br />        KROK3;<br />                _delay_ms(100);<br />        KROK4;<br />                _delay_ms(100);<br /><br />x=x+1;<br />}<br />}[/syntax]<br /><br />Dwie rzeczy mi się nie podobają... <br /><br />1. po włączeniu urządzenia na LCD pojawiają się dwa napisy zamiast tylko ZEROWANIE dziwne bo po wyzerowaniu jest jeden napis wyzerowanie<br />2. mruganie napisów &lt;--- rozumiem, że to jest w pętli wykonywane i dla tego mruga<br /><br /><br /><span style="color: #0000BF"><strong>Czekam oczywiście na pomoc w napisaniu tej tablicy, może jednak ktoś pomoże.</strong></span><br /><br /><span style="color: #40BF00">Tak działa obecnie urządzenie. </span><br /><br />v= ( <!-- m --><a class="postlink" href="https://www.youtube.com/watch?v=fYZUYdlF_wo&amp;feature=youtu.be" >https://www.youtube.com/watch?v=fYZUYdl ... e=youtu.be</a><!-- m --> )<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8020">Respect1523</a> — 21 lut 2015, o 15:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[brat_kamyka]]></name></author>
<updated>2015-02-20T19:19:18+01:00</updated>
<published>2015-02-20T19:19:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=120106#p120106</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=120106#p120106"/>
<title type="html"><![CDATA[Re: Witam, Pytanie o silnik krokowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=120106#p120106"><![CDATA[
Niech kolega się zastanowi.<br />Chce Napisać dom taką maszynką. Pytanie gdzie jest literka d, gdzie o a gdzie m ? (oczywiście na tarczy).<br /> Wartość na tarczy = wartość tablicy (literka cyferka czy co tam jeszcze jest) wypisane w kolejności wystąpienia na tarczy <br />(analogia do alfabetu a, b, c, .....itd )<br />i teraz jak chcesz napisać &quot;dom&quot; swoją maszynką to :<br />porównujesz wpis w tablicy z wprowadzoną literką (np przez UARTa)<br />w jakiejś pętli jak się zgadza to tylko zapamiętujesz indeks pętli w zmiennej <br />jak ustawiłeś tarcze jakąś krańcówką to wiesz gdzie jest na starcie pozycja 0( bo tablica zaczyna się od elementu o indeksie 0). wystarczy porównać wartość indeksu z wartością położenia tarczy,<br />dalej już z górki kroki wprzód albo w tył o  tyle, ile wynosi różnica położeń kroki, położenie tarczy.<br />a kod do samodzielnego wykonania. <br />Analiza Algorytmu:<br />tarcza w pozycji 0<br />Literka do porównania d<br />tablica indeks 3<br />porównanie co większe 0 czy 3 czyli tablica więcej<br />czyli 3-0 =3 czyli d<br />tarcza na pozycji 3 została<br />następna literka do porównania to o <br />tablica o indeksie 14 (liczone bez polskich znaków) czyli tablica więcej<br />czyli 14-3 = 11 kroków dalej jest o od literki d na tarczy<br /> następna literka do porównania to o <br />tablica o indeksie 14 (liczone bez polskich znaków)<br />czyli 14-3 = 11 kroków dalej w przód jest o od literki d na tarczy<br />tarcza w pozycji 14<br /> następna literka do porównania to m <br />tablica o indeksie 12 (liczone bez polskich znaków)czyli tarcza na więcej - zmiana kierunku obrotów<br />czyli 14-12 = 2 kroki wcześniej  jest m od literki o na tarczy.<br /><br />ale to tylko pomysł początkującego. sorry ale ja tak tylko na szybko wymyśliłem może nie być optymalnie<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6029">brat_kamyka</a> — 20 lut 2015, o 19:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Respect1523]]></name></author>
<updated>2015-02-20T14:34:19+01:00</updated>
<published>2015-02-20T14:34:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=120016#p120016</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=120016#p120016"/>
<title type="html"><![CDATA[Re: Witam, Pytanie o silnik krokowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=120016#p120016"><![CDATA[
Witam,<br /><br />Trochę mi się pochorowało, ale czas wracać. <br />Oczywiście rady pomogły wszystko działa tak jak miało być. <br /><br />Wykonuje się jeden pełen obrót po wciśnięciu K3 u mnie to jest 510 kroków, dioda miga sygnalizując prace silniczka. <br /><br />Wrzuca poprawiony kod a może ktoś skorzysta.<br /><br /><br /><br />[syntax=c]#include&lt;avr/io.h&gt;<br />#include&lt;util/delay.h&gt;<br /><br /><br />/* definicje pinów sterujących tranzystorami<br /> *<br /> */<br />#define T1 (1&lt;&lt;PD2)<br />#define T2 (1&lt;&lt;PD3)<br />#define T3 (1&lt;&lt;PD4)<br />#define T4 (1&lt;&lt;PD5)<br />#define dioda (1&lt;&lt;PC7)  // symbolizuje prace SILNIKA miganie<br /><br /><br />/* definicje kroków sterujących pracą silnika */<br />#define KROK1 PORTD |= T1; PORTD &amp;= ~(T2|T3|T4) ; PORTC ^= dioda;<br />#define KROK2 PORTD |= T2; PORTD &amp;= ~(T1|T3|T4) ; PORTC ^= dioda;<br />#define KROK3 PORTD |= T3; PORTD &amp;= ~(T1|T2|T4) ; PORTC ^= dioda;<br />#define KROK4 PORTD |= T4; PORTD &amp;= ~(T1|T2|T3) ; PORTC ^= dioda;<br />//inicjacja przycisków<br />#define K1 (1&lt;&lt;PB1)       // przycisk kręcenie w praw<br />#define K2 (1&lt;&lt;PB2)<br />#define K3 (1&lt;&lt;PB3)<br />#define KRA (1&lt;&lt;PB7)<br /><br /><br />//DEKLARACJA FUNKCJI<br />void kierunek_lewo(void);<br />void kierunek_prawo(void);<br />void stop(void);<br />void caly(void);<br /><br /><br /><br />int main (void)<br /><br />{<br /><br />DDRC |= (dioda);                              //ustawienie portu C jako wyjciowy<br /><br />PORTB |= ( K1|K2|K3|KRA );                     // podciągamy linie klawiszy do VCC<br /><br />DDRD |= ( T1 | T2 | T3 | T4) ;            //jako wyjscie<br />PORTD &amp;= !(T1|T2|T3|T4);                //zanegowanie wyjscie (wyłączenie tranzystorów)<br /><br /><br /><br />enum {STOP, LEWO, PRAWO,PELEN};<br />uint8_t stan = STOP;<br />while(1)                //*************PETLA GLOWNA***************<br />{<br />        if( !(PINB &amp; K1) )  stan = LEWO;<br />        else   if( !(PINB &amp; K3) ) stan = PELEN;<br />        else   if( !(PINB &amp; K2) ) stan = PRAWO;<br />        else   if( !(PINB &amp; KRA) ) stan = STOP;<br /><br /><br />        if(stan == LEWO) kierunek_lewo();<br />        else if(stan == PRAWO) kierunek_prawo();<br />        else if(stan == PELEN) { caly(); stan = STOP ; } // PO WCISNIECIU K3 WYKONA SIE JEDEN OBROT TARCZY<br />        else stop();<br /><br />}<br />}<br />//LEWO<br />void kierunek_lewo(void)<br />{<br />    static uint8_t kr;<br />        if( kr == 0 ) { KROK1; }<br />        _delay_ms(20);<br />        if( kr == 1 ) { KROK2; }<br />        _delay_ms(20);<br />        if( kr == 2 ) { KROK3; }<br />        _delay_ms(20);<br />        if( kr == 3 ) { KROK4; }<br />        _delay_ms(20);<br />        if( ++kr &gt; 3 ) kr=0;<br /><br />}<br /><br />//PRAWO<br />void kierunek_prawo(void)<br />{<br />     static uint8_t kr;<br />         if( kr == 0 ) { KROK4; }<br />         _delay_ms(20);<br />         if( kr == 1 ) { KROK3; }<br />         _delay_ms(20);<br />         if( kr == 2 ) { KROK2; }<br />         _delay_ms(20);<br />         if( kr == 3 ) { KROK1; }<br />         _delay_ms(20);<br />         if( ++kr &gt; 3 ) kr=0;<br /><br />}<br /><br />//STOP<br />void stop(void)<br />{<br />        PORTD &amp;= !(T1|T2|T3|T4);<br /><br />}<br /><br />// JEDEN PELNY OBROT<br />void caly(void)<br /><br />{<br />     uint16_t x=0;<br />        while(x&lt;510)<br />{<br />        KROK1;<br />             _delay_ms(100);<br />        KROK2;<br />                _delay_ms(100);<br />        KROK3;<br />                _delay_ms(100);<br />        KROK4;<br />                _delay_ms(100);<br /><br />x=x+1;<br />}<br />}[/syntax]<br /><br /><br />Czas na dalszą zabawę, wiedząc że tarcza ma 34 pola  (narazie ma 33 ale zmienie na 34 pola aby nie bawić się w połówki kroków) , czyli przesunięcie o jedno pole to 15 kroków.<br /><br />Teraz pytanie  co do tablicy jaką muszę stworzyć.<br /><br />czy mogę tak zdefiniować swoje przesunięcia krokowe do tablicy ? <br /><br />void  [A, B, C,];   &lt;----  wyczytałem w książce BB strona 146 że nie można używać typu zmiennej void  ??? <br /><br />czyli nie mogę tego tak zapisać w programie ?<br /><br />[syntax=c]// A - 15 kroki<br /><br />void A(void)<br /><br />{<br />     uint16_t x=0;<br />        while(x&lt;15)<br />{<br />        KROK1;<br />             _delay_ms(100);<br />        KROK2;<br />                _delay_ms(100);<br />        KROK3;<br />                _delay_ms(100);<br />        KROK4;<br />                _delay_ms(100);<br /><br />x=x+1;<br />}<br />}<br /><br />// B - 30 kroki<br /><br />void B(void)<br /><br />{<br />     uint16_t x=0;<br />        while(x&lt;30)<br />{<br />        KROK1;<br />             _delay_ms(100);<br />        KROK2;<br />                _delay_ms(100);<br />        KROK3;<br />                _delay_ms(100);<br />        KROK4;<br />                _delay_ms(100);<br /><br />x=x+1;<br />}<br />}<br /><br /><br />// C - 45 kroki<br /><br />void C(void)<br /><br />{<br />     uint16_t x=0;<br />        while(x&lt;45)<br />{<br />        KROK1;<br />             _delay_ms(100);<br />        KROK2;<br />                _delay_ms(100);<br />        KROK3;<br />                _delay_ms(100);<br />        KROK4;<br />                _delay_ms(100);<br /><br />x=x+1;<br />}<br />}[/syntax]<br /><br />Jakoś nie dam rady tego rozkminić z tymi tablicami, proszę o jakieś uwagi sugestie jak powinienem się do tego zabrać.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8020">Respect1523</a> — 20 lut 2015, o 14:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2015-02-16T22:40:32+01:00</updated>
<published>2015-02-16T22:40:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=119464#p119464</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=119464#p119464"/>
<title type="html"><![CDATA[Re: Witam, Pytanie o silnik krokowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=119464#p119464"><![CDATA[
<div class="quotetitle">Respect1523 napisał(a):</div><div class="quotecontent"><br />Nie działa czemuś gdzieś jest jeszcze jakiś mankament<br /></div><br />No to sprawdź swoje połączenia, bo przetestowałem program bez żadnych zmian (użyłem LEDów zamiast silnika) i znośnie działa.<br /><br />Pin, który nazwałeś sobie dioda jest cały czas w stanie niskim (0V)<br /><div class="quotetitle">Respect1523 napisał(a):</div><div class="quotecontent"><br />no chyba że źle zrozumiałem Pana (wieku nie znam ale mam wrażenie jak by Twój zawód to wykładowca na uczelni).<br /></div> Dlatego na forum wszyscy są na ty<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 16 lut 2015, o 22:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Respect1523]]></name></author>
<updated>2015-02-16T21:38:46+01:00</updated>
<published>2015-02-16T21:38:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=119458#p119458</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=119458#p119458"/>
<title type="html"><![CDATA[Re: Witam, Pytanie o silnik krokowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=119458#p119458"><![CDATA[
[syntax=c]#include&lt;avr/io.h&gt;<br />#include&lt;util/delay.h&gt;<br /><br /><br />/* definicje pinów sterujących tranzystorami<br /> *<br /> */<br />#define T1 (1&lt;&lt;PD2)<br />#define T2 (1&lt;&lt;PD3)<br />#define T3 (1&lt;&lt;PD4)<br />#define T4 (1&lt;&lt;PD5)<br />#define dioda (1&lt;&lt;PC7)  // symbolizuje prace <br /><br /><br />/* definicje kroków sterujących pracą silnika */<br />#define KROK1 PORTD |= T1; PORTD &amp;= ~(T2|T3|T4) ; PORTC &amp;= ~dioda;<br />#define KROK2 PORTD |= T2; PORTD &amp;= ~(T1|T3|T4) ; PORTC &amp;= ~dioda;<br />#define KROK3 PORTD |= T3; PORTD &amp;= ~(T1|T2|T4) ; PORTC &amp;= ~dioda;<br />#define KROK4 PORTD |= T4; PORTD &amp;= ~(T1|T2|T3) ; PORTC &amp;= ~dioda;<br />//inicjacja przycisków<br />#define K1 (1&lt;&lt;PB1)       // przycisk kręcenie w praw<br />#define K2 (1&lt;&lt;PB2)<br />#define K3 (1&lt;&lt;PB3)<br />#define KRA (1&lt;&lt;PB7)<br /><br /><br />//DEKLARACJA FUNKCJI<br />void kierunek_lewo(void);<br />void kierunek_prawo(void);<br />void stop(void);<br />void jedenkrok(void);<br /><br /><br /><br />int main (void)<br /><br />{<br /><br />DDRC |= (dioda);                              //ustawienie portu C jako wyjciowy<br /><br />PORTB |= ( K1|K2|K3|KRA );                     // podciągamy linie klawiszy do VCC<br /><br />DDRD |= ( T1 | T2 | T3 | T4) ;            //jako wyjscie<br />PORTD &amp;= !(T1|T2|T3|T4);                //zanegowanie wyjscie (wyłączenie tranzystorów)<br /><br /><br /><br />enum {STOP, LEWO, PRAWO,JEDEN};<br />uint8_t stan = STOP;<br />while(1)                //*************PETLA GLOWNA***************<br />{<br />        if( !(PINB &amp; K1) )  stan = LEWO;<br />        else   if( !(PINB &amp; K3) ) stan = JEDEN;<br />        else   if( !(PINB &amp; K2) ) stan = PRAWO;<br />        else   if( !(PINB &amp; KRA) ) stan = STOP;<br /><br /><br />        if(stan == LEWO) kierunek_lewo();<br />        else if(stan == PRAWO) kierunek_prawo();<br />        else if(stan == JEDEN) { jedenkrok(); stan = STOP ; } // po wcinięciu przycisku K3 na płytce silnik wykonuje jeden krok<br />        else stop();<br /><br />}<br />}<br />//LEWO<br />void kierunek_lewo(void)<br />{<br />    static uint8_t kr;<br />        if( kr == 0 ) { KROK1; }<br />        _delay_ms(20);<br />        if( kr == 1 ) { KROK2; }<br />        _delay_ms(20);<br />        if( kr == 2 ) { KROK3; }<br />        _delay_ms(20);<br />        if( kr == 3 ) { KROK4; }<br />        _delay_ms(20);<br />        if( ++kr &gt; 3 ) kr=0;<br /><br />}<br /><br />//PRAWO<br />void kierunek_prawo(void)<br />{<br />     static uint8_t kr;<br />         if( kr == 0 ) { KROK4; }<br />         _delay_ms(20);<br />         if( kr == 1 ) { KROK3; }<br />         _delay_ms(20);<br />         if( kr == 2 ) { KROK2; }<br />         _delay_ms(20);<br />         if( kr == 3 ) { KROK1; }<br />         _delay_ms(20);<br />         if( ++kr &gt; 3 ) kr=0;<br /><br />}<br /><br />//STOP<br />void stop(void)<br />{<br />        PORTD &amp;= !(T1|T2|T3|T4);<br /><br />}<br /><br />// JEDEN KROK ----no niby pętla powinna się wykonać 30 razy<br /><br />void jedenkrok(void)<br /><br />{<br />     uint8_t x=0;<br />while(x&lt;30)<br />{<br />KROK1;<br />     _delay_ms(100);<br />KROK2;<br />_delay_ms(100);<br />KROK3;<br />_delay_ms(100);<br />KROK4;<br />_delay_ms(100);<br /><br />x=x+1;<br />}<br />}[/syntax]<br /><br />Nie działa czemuś gdzieś jest jeszcze jakiś mankament no chyba że źle zrozumiałem Pana (wieku nie znam ale mam wrażenie jak by Twój zawód to wykładowca na uczelni).<br /><br />Chciałem również zrobić tak poprzez zdefiniowanie zmiennej <span style="color: #0000BF">dioda</span> aby widzieć,że napewno silnik się nie drga po wciśnięciu przycisku K3 ale nawet po ruszeniu silniczka równiez nie zapala się dioda....<br /><br />A może ktoś inny z forumowiczów ma jakieś sugestie?<br /> Bo 630 wyświetleń same się nie robi no chyba że to przyszli nie doszli nowi użytkowicy forum.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8020">Respect1523</a> — 16 lut 2015, o 21:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2015-02-16T18:14:29+01:00</updated>
<published>2015-02-16T18:14:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=119409#p119409</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=119409#p119409"/>
<title type="html"><![CDATA[Re: Witam, Pytanie o silnik krokowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=119409#p119409"><![CDATA[
1. Jak stoi na krańcówce to nigdy stan JEDEN nie nadejdzie, bo najpierw sprawdzany jest KRA. W takim układzie co jest wyżej ma wyższy priorytet. Jak [syntax=c]else   if( !(PINB &amp; KRA) ) stan = STOP;[/syntax] dasz na koniec tego warunku to będzie w porządku.<br /><br />2. Po wykonaniu jednego kroku ustaw stan na STOP inaczej wykona się znowu jeden krok i tak dopóki inny stan nie nastąpi<br />[syntax=c]else if(stan == JEDEN) {  jedenkrok();  stan = STOP; } //jeden krok i stop[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 16 lut 2015, o 18:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Respect1523]]></name></author>
<updated>2015-02-15T17:17:51+01:00</updated>
<published>2015-02-15T17:17:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=119122#p119122</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=119122#p119122"/>
<title type="html"><![CDATA[Re: Witam, Pytanie o silnik krokowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=119122#p119122"><![CDATA[
z tego co rozumiem to chyba zestaw ATB 1.04 posiada taką przejściówke <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><!-- m --><a class="postlink" href="http://www.atnel.pl/ft232r-programator-w-atb.html" >http://www.atnel.pl/ft232r-programator-w-atb.html</a><!-- m -->  ?<br /><br />P.S. Nierówna praca silnika była spowodowana źle zaciśniętym kablem na płytce.<br /><br /><br />ODPOWIEDZ <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />  <br /><br /><!-- m --><a class="postlink" href="http://atnel.pl/atb-przejsciowka-usb-rs232.html" >http://atnel.pl/atb-przejsciowka-usb-rs232.html</a><!-- m --><br /><br />Proszę o podpowiedź sugestie ... dlaczego po wciśnięciu klawisz K3 silnik nie porusza się o jeden krok ? a raczej czemu  nie reaguje silnik .<br /><br />Chciałbym mieć taką funkcje dzięki której był by wykonywany jeden krok ale już próbuje zrobić taką funkcje co niby powinna się wykonać 30 razy. <br /><br />Bez tego mego projektu dalej nie popchnę.<br /><br /><br />[syntax=c]#include&lt;avr/io.h&gt;<br />#include&lt;util/delay.h&gt;<br /><br /><br />/* definicje pinów sterujących tranzystorami<br /> *<br /> */<br />#define T1 (1&lt;&lt;PD2)<br />#define T2 (1&lt;&lt;PD3)<br />#define T3 (1&lt;&lt;PD4)<br />#define T4 (1&lt;&lt;PD5)<br /><br /><br />/* definicje kroków sterujących pracą silnika */<br />#define KROK1 PORTD |= T1; PORTD &amp;= ~(T2|T3|T4)<br />#define KROK2 PORTD |= T2; PORTD &amp;= ~(T1|T3|T4)<br />#define KROK3 PORTD |= T3; PORTD &amp;= ~(T1|T2|T4)<br />#define KROK4 PORTD |= T4; PORTD &amp;= ~(T1|T2|T3)<br />//inicjacja przycisków<br />#define K1 (1&lt;&lt;PB1)<br />#define K2 (1&lt;&lt;PB2)<br />#define K3 (1&lt;&lt;PB3)<br />#define KRA (1&lt;&lt;PB7)<br /><br />//DEKLARACJA FUNKCJI<br />void kierunek_lewo(void);<br />void kierunek_prawo(void);<br />void stop(void);<br />void jedenkrok(void);<br /><br /><br /><br />int main (void)<br /><br />{<br /><br />PORTB |= ( K1|K2|K3|KRA );                     // podciągamy linie klawiszy do VCC<br /><br />DDRD |= ( T1 | T2 | T3 | T4) ;            //jako wyjscie<br />PORTD &amp;= !(T1|T2|T3|T4);                //zanegowanie wyjscie (wyłączenie tranzystorów)<br /><br /><br /><br />enum {STOP, LEWO, PRAWO,JEDEN};<br />uint8_t stan = STOP;<br />while(1)                //*************PETLA GLOWNA***************<br />{<br />        if( !(PINB &amp; K1) )  stan = LEWO;<br />        else   if( !(PINB &amp; K2) ) stan = PRAWO;<br />        else   if( !(PINB &amp; KRA) ) stan = STOP;<br />        else   if( !(PINB &amp; K3) ) stan = JEDEN;<br /><br />        if(stan == LEWO) kierunek_lewo();<br />        else if(stan == PRAWO) kierunek_prawo();<br />        else if(stan == JEDEN)  jedenkrok(); // po wcinięciu przycisku K3 na płytce silnik wykonuje jeden krok<br />        else stop();<br /><br />}<br />}<br />//LEWO<br />void kierunek_lewo(void)<br />{<br />    static uint8_t kr;<br />        if( kr == 0 ) { KROK1; }<br />        _delay_ms(20);<br />        if( kr == 1 ) { KROK2; }<br />        _delay_ms(20);<br />        if( kr == 2 ) { KROK3; }<br />        _delay_ms(20);<br />        if( kr == 3 ) { KROK4; }<br />        _delay_ms(20);<br />        if( ++kr &gt; 3 ) kr=0;<br /><br />}<br /><br />//PRAWO<br />void kierunek_prawo(void)<br />{<br />     static uint8_t kr;<br />         if( kr == 0 ) { KROK4; }<br />         _delay_ms(20);<br />         if( kr == 1 ) { KROK3; }<br />         _delay_ms(20);<br />         if( kr == 2 ) { KROK2; }<br />         _delay_ms(20);<br />         if( kr == 3 ) { KROK1; }<br />         _delay_ms(20);<br />         if( ++kr &gt; 3 ) kr=0;<br /><br />}<br /><br />//STOP<br />void stop(void)<br />{<br />        PORTD &amp;= !(T1|T2|T3|T4);<br /><br />}<br /><br />// JEDEN KROK ----no niby pętla powinna się wykonać 30 razy<br /><br />void jedenkrok(void)<br /><br />{<br />     uint8_t x=0;<br />while(x&lt;30)<br />{<br />KROK1;<br />    _delay_ms(100);<br />KROK2;<br />_delay_ms(100);<br />KROK3;<br />_delay_ms(100);<br />KROK4;<br />_delay_ms(100);<br /><br />x=x+1;<br />}<br />}[/syntax]<br /><br />dziękuje za wyrozumiałość<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8020">Respect1523</a> — 15 lut 2015, o 17:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2015-02-15T14:30:45+01:00</updated>
<published>2015-02-15T14:30:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=119095#p119095</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=119095#p119095"/>
<title type="html"><![CDATA[Re: Witam, Pytanie o silnik krokowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=119095#p119095"><![CDATA[
Krańcówka się przyda, bo po podaniu zasilania tarcza powinna obrócić się do punktu startowego. Potem już wiesz o ile kroków się poruszać. Tablica znaków jak najbardziej będzie potrzebna. Po porównaniu aktualnego znaku z tablicą otrzymasz indeks (lub wprost liczbę kroków jeśli wykorzystasz tablicę 2 wymiarową) i pamiętając aktualną pozycję przemieścisz tarczę gdzie potrzeba.<br /><br />Karta SD to kieski pomysł w tym przypadku (ciągłe przekładanie jest bez sensu). Najlepiej wykorzystaj UART, czy tam podepniesz przejściówkę USB-UART, moduł Bluetooth czy ATNEL-WIFI232-T to sprawa drugorzędna. Najlepiej zacząć od USB-UART oparty o FT232R. Nie musisz też pisać żadnego programu. Przynajmniej na razie. Wykorzystać możesz dowolny terminal RS232 np. BrayTerminal. Czytając książkę natrafisz na rozdział o komunikacji szeregowej wraz z prostą biblioteką. Jak się trochę pobawisz to wrócisz z pytaniami.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 15 lut 2015, o 14:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zaba]]></name></author>
<updated>2015-02-15T11:48:37+01:00</updated>
<published>2015-02-15T11:48:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=119076#p119076</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=119076#p119076"/>
<title type="html"><![CDATA[Re: Witam, Pytanie o silnik krokowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=119076#p119076"><![CDATA[
Nie napisze nic odkrywczego i nie uznaj tego jako malkontenctwo,<br />ale wszystkie Twoje pomysły są dobre i ciekawe oraz zależne tylko od posiadanego<br />sprzętu i od środków które chcesz wydać na projekt.<br /><br />Tylko weź pod uwagę że to jest Twój projekt i doradzanie w tym temacie<br />(co wybrać, jak zrealizować) jest bardzo trudne. Możesz urzeczywistnić wszystkie te<br />pomysły a wyniesione doświadczenie spożytkować w innych projektach.<br /><br />Wszystko zależy od zbyt wielu czynników w tym i finansowych.<br />Podejmij decyzję sam, a forumowicze Ci pomogą jeśli będziesz miał kłopot w realizacji.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1044">Zaba</a> — 15 lut 2015, o 11:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Respect1523]]></name></author>
<updated>2015-02-15T10:26:20+01:00</updated>
<published>2015-02-15T10:26:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=119069#p119069</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=119069#p119069"/>
<title type="html"><![CDATA[Re: Witam, Pytanie o silnik krokowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=119069#p119069"><![CDATA[
to teraz czas na drugą część zadania.<br /><br />Tu niestety brak z mojej strony pomysłu. <br /><br />Niby mając krańcówkę mogę określić już gdzie w danej chwili jest tarcza. <br /><br />Nie wiem czy powinienem zrobić jakaś tablice w której bym umieścił wszystkie znaki znajdujące się na tarczy?<br /><br />Ale wtedy jak wgrać do procesora z jakiejś zewnętrznej pamięci np. wyraz kot.  <br /><br />Czy powinienem nauczyć się C++ Visual Studio aby napisać jakiś programik do którego bym wpisywał ciąg znaków?<br /><br />Czy może jednak wykorzystać miejsce na kartę sd i na niego zgrywać ciąg znaków a potem odczytywać , no chyba że dokupić moduł wifi i z niego przesyłać dane do atmegi .... <br /><br />Całą noc myślałem ale nic ciekawego nie wymyśliłem  za duży mętlik w głowie.<br /><br />Proszę o jakieś opinie,sugestie, podpowiedzi.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8020">Respect1523</a> — 15 lut 2015, o 10:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Respect1523]]></name></author>
<updated>2015-02-14T21:35:49+01:00</updated>
<published>2015-02-14T21:35:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=119016#p119016</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=119016#p119016"/>
<title type="html"><![CDATA[Re: Witam, Pytanie o silnik krokowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=119016#p119016"><![CDATA[
działa <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />  <br /><br />dziękuje pochwała leci.<br /><br />wstawiłem krańcówkę aby wiedzieć gdzie jest w danym momencie  tarcza, aby mógł spróbować zrobić zadanie z pierwszego postu w temacie.<br /> <br /><br />v= (<!-- m --><a class="postlink" href="https://www.youtube.com/watch?v=fSTt59-dC6s&amp;feature=youtu.be" >https://www.youtube.com/watch?v=fSTt59- ... e=youtu.be</a><!-- m -->)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8020">Respect1523</a> — 14 lut 2015, o 21:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2015-02-14T20:45:02+01:00</updated>
<published>2015-02-14T20:45:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=119007#p119007</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=119007#p119007"/>
<title type="html"><![CDATA[Re: Witam, Pytanie o silnik krokowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=119007#p119007"><![CDATA[
Tą klamrę } co masz na końcu przenieś przed komentarz //LEWO<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 14 lut 2015, o 20:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Respect1523]]></name></author>
<updated>2015-02-14T21:37:08+01:00</updated>
<published>2015-02-14T20:30:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=119003#p119003</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=119003#p119003"/>
<title type="html"><![CDATA[Re: Witam, Pytanie o silnik krokowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=119003#p119003"><![CDATA[
te K2 u siebie poprawiłem wcześniej w programie to chyba bardziej o to chodzi że silniczek ma mało siły w porównaniu  z obciążeniem ale to przeżyje jakoś.<br /><br /><br /><br />[syntax=c]#include&lt;avr/io.h&gt;<br />#include&lt;util/delay.h&gt;<br /><br /><br />/* definicje pinów sterujących tranzystorami<br /> *<br /> */<br />#define T1 (1&lt;&lt;PD2)<br />#define T2 (1&lt;&lt;PD3)<br />#define T3 (1&lt;&lt;PD4)<br />#define T4 (1&lt;&lt;PD5)<br /><br /><br />/* definicje kroków sterujących pracą silnika */<br />#define KROK1 PORTD |= T1; PORTD &amp;= ~(T2|T3|T4)<br />#define KROK2 PORTD |= T2; PORTD &amp;= ~(T1|T3|T4)<br />#define KROK3 PORTD |= T3; PORTD &amp;= ~(T1|T2|T4)<br />#define KROK4 PORTD |= T4; PORTD &amp;= ~(T1|T2|T3)<br />//inicjacja przycisków<br />#define K1 (1&lt;&lt;PB1)<br />#define K2 (1&lt;&lt;PB2)<br />#define K3 (1&lt;&lt;PB3)<br /><br /><br />//DEKLARACJA FUNKCJI<br />void kierunek_lewo(void);<br />void kierunek_prawo(void);<br />void stop(void);<br /><br />//inicjacja przycisków<br /><br /><br /><br />int main (void)<br /><br />{<br /><br />PORTB |= ( K1|K2|K3 ); // podciągamy linie klawiszy do VCC<br /><br />DDRD |= ( T1 | T2 | T3 | T4) ;            //jako wyjscie<br />PORTD &amp;= !(T1|T2|T3|T4);                //zanegowanie wyjscie (wyłączenie tranzystorów)<br /><br /><br /><br />enum {STOP, LEWO, PRAWO};<br />uint8_t stan = STOP;<br />while(1)                //*************PETLA GLOWNA***************<br />{<br />        if( !(PINB &amp; K1) )  stan = LEWO;<br />        else   if( !(PINB &amp; K2) ) stan = PRAWO;<br />        else   if( !(PINB &amp; K3) ) stan = STOP;<br /><br />        if(stan == LEWO) kierunek_lewo();<br />        else if(stan == PRAWO) kierunek_prawo();<br />        else stop();<br />}<br />}<br />//LEWO<br />void kierunek_lewo(void)<br /><br />{<br />        static uint8_t kr;<br />        if( kr == 0 ) { KROK1; }<br />        _delay_ms(100);<br />        if( kr == 1 ) { KROK2; }<br />        _delay_ms(100);<br />        if( kr == 2 ) { KROK3; }<br />        _delay_ms(100);<br />        if( kr == 3 ) { KROK4; }<br />        _delay_ms(100);<br />        if( ++kr &gt; 3 ) kr=0;<br /><br />}<br /><br />//PRAWO<br />void kierunek_prawo(void) <br /><br />{<br />        static uint8_t kr;<br />                if( kr == 0 ) { KROK4; }<br />                _delay_ms(100);<br />                if( kr == 1 ) { KROK3; }<br />                _delay_ms(100);<br />                if( kr == 2 ) { KROK2; }<br />                _delay_ms(100);<br />                if( kr == 3 ) { KROK1; }<br />                _delay_ms(100);<br />                if( ++kr &gt; 3 ) kr=0;<br /><br />}<br /><br />//STOP<br />void stop(void)<br /><br />{<br />        PORTD &amp;= !(T1|T2|T3|T4);<br /><br />}[/syntax]<br /><br />dziwne błędy bez zaznaczenia  w kodzie nie rozumiem ...<br /><br /><br />**** Build of configuration Release for project silniczekzabawa ****<br /><br />make all <br />Building target: silniczekzabawa.elf<br />Invoking: AVR C Linker<br />avr-gcc -Wl,-Map,silniczekzabawa.map -mmcu=atmega16 -o &quot;silniczekzabawa.elf&quot;  ./main.o   <br />./main.o: In function `main':<br />main.c:(.text+0x24): undefined reference to `kierunek_lewo'<br />main.c:(.text+0x30): undefined reference to `kierunek_prawo'<br />main.c:(.text+0x36): undefined reference to `stop'<br />collect2: ld returned 1 exit status<br />make: *** [silniczekzabawa.elf] Error 1<br /><br />**** Build Finished ****<br /><br /><br />niesamowity artykuł,  jutro dokładnie sobie go wchłonę dziękuje za link.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8020">Respect1523</a> — 14 lut 2015, o 20:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2015-02-14T20:06:34+01:00</updated>
<published>2015-02-14T20:06:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=119000#p119000</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=119000#p119000"/>
<title type="html"><![CDATA[Re: Witam, Pytanie o silnik krokowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10313&amp;p=119000#p119000"><![CDATA[
<div class="quotetitle">Respect1523 napisał(a):</div><div class="quotecontent"><br />Chciałbym wyeliminować drganie styków bo mam wrażenie że trzymając przycisk silnik się kręci bardzo nieregularnie.<br /></div> To nie wina drgań styków tylko tego co po kolei dzieje się w programie.<br /><br />Poradnik, który warto zobaczyć <!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2012/10/drgania-stykow-to-bajki-wiec-jak-to.html" >http://mirekk36.blogspot.com/2012/10/dr ... ak-to.html</a><!-- m --><br /><br />PS. A tutaj masz 2 razy K2.<br /><div class="quotetitle">Respect1523 napisał(a):</div><div class="quotecontent"><br />[syntax=c]else   if( !(PINB &amp; K2) )<br />                kierunek_prawo ();<br /> <br />else   if( !(PINB &amp; K2) )<br />                stop ();[/syntax]<br /></div><br /><div class="quotetitle">Respect1523 napisał(a):</div><div class="quotecontent"><br />Jeszcze pytanie jakiej funkcji użyć aby nie było trzeba trzymać przycisku a tylko raz nacisnąć....<br /></div><br />Musisz w zmiennej trzymać stan programu.<br />[syntax=c]enum {STOP, LEWO, PRAWO};<br />uint8_t stan = STOP;<br />while(1)                //*************PETLA GLOWNA***************<br />{<br />        if( !(PINB &amp; K1) )  stan = LEWO;<br />        else   if( !(PINB &amp; K2) ) stan = PRAWO;<br />        else   if( !(PINB &amp; K3) ) stan = STOP;<br /><br />        if(stan == LEWO) kierunek_lewo();<br />        else if(stan == PRAWO) kierunek_prawo();<br />        else stop();<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 14 lut 2015, o 20:06</p><hr />
]]></content>
</entry>
</feed>