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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-06-17T12:06:25+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=47&amp;t=3336&amp;mode</id>
<entry>
<author><name><![CDATA[1bobik1]]></name></author>
<updated>2013-06-17T12:06:25+01:00</updated>
<published>2013-06-17T12:06:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3336&amp;p=39476#p39476</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3336&amp;p=39476#p39476"/>
<title type="html"><![CDATA[Re: Szybki poradnik SunDuino ...  ćwiczenia praktyczne]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3336&amp;p=39476#p39476"><![CDATA[
Ładnie SUN <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Tylko zmień L na D w &quot;L293N&quot; <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=464">1bobik1</a> — 17 cze 2013, o 12:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2013-06-16T12:59:44+01:00</updated>
<published>2013-06-16T12:59:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3336&amp;p=39398#p39398</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3336&amp;p=39398#p39398"/>
<title type="html"><![CDATA[Szybki poradnik SunDuino ...  ćwiczenia praktyczne]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3336&amp;p=39398#p39398"><![CDATA[
Jak też mówiłem tak też zrobimy na początku parę prostych ćwiczeń by poznać możliwości sterowania w praktyce prostymi układami, z których niczym z klocków można będzie przystąpić do budowy aplikacji  na nieco wyższym poziomie i wyższych lotów , <br />Nie mniej warto poznać wszystko od zera i od najprostszych zabaw przez co wszystko stanie się jaśniejsze i prostsze ....<br /><br /><br />To co zaczynamy??<br /><br /><br /><strong><span style="color: #FF0000">Ćwiczenie 1 :Sterowanie wyjściem cyfrowym:</span></strong><br /><br />Jest to podstawowe „Hello World” które wykorzystamy by coś włączyć lub wyłączyć.<br />W tym przykładzie będzie to nasza zielona dioda LED, która jest podłączona do pinu D13<br />na płytce SunDuino.  Spowodujemy że będzie ona mrugać 1 raz na sekundę. Rezystor też pominiemy bo jest już wbudowany na płytce pozostaje nam napisać program więc do dzieła.<br /><br />Schemat prezentuje się następująco jakbyście chcieli podłączyć diodę do innych pinów:<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/58/67f33a8c6159759f2dba0a75398b3f87.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/58/67f33a8c6159759f2dba0a75398b3f87.png" alt="Obrazek" /></a><br /><br />Sam program zaś tak i mozna go znaleźć w zakładce  examples:<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/58/14108c9b1979505ea318b3cd93333c1b.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/58/14108c9b1979505ea318b3cd93333c1b.png" alt="Obrazek" /></a><br /><br />No i proszę nasza zielona diodka miga radośnie J  Właśnie napisaliśmy pierwszy program <br />I ożywiliśmy trochę nasze SunDuino. A teraz stosując się do schematu ustaw diodę w programie na inny pin od 0 do 13  samodzielnie <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br /><br /><strong><span style="color: #FF0000">Ćwiczenie 2: Wejście cyfrowe <br />Czyli jak uzyc przycisku <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /></span></strong><br /><br /><a href="http://forum.atnel.pl/_obrazki/o/58/57f1bdf89216f559e7587b4e9ac77301.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/58/57f1bdf89216f559e7587b4e9ac77301.png" alt="Obrazek" /></a><br /><br />Jest to najprostsza forma wprowadzania danych ma tylko 2 stany TAK lub NIE.<br />Przykład stanowi prosty przełącznik lub przycisk podłączony do Pin D2. <br />Gdy przycisk jest wciśnięty wejście będzie mieć stan HIGH i włączy nam diodę LED.<br /><br />[syntax=cpp]int ledPin = 13;  // ustawiamy diode na pin 13<br /> int swPin = 2;    //  przycisk na pin 2<br /> <br /> void setup() <br /> {<br />      pinMode(ledPin, OUTPUT);   //pin 13 jako wyjście<br />      pinMode(swPin, INPUT);  // pin 2 jako wejście<br />}<br />void loop()<br />{<br />   if (digitalRead(swPin) == HIGH)  //sprawdź czy na pinie 2 jest stan wysoki<br />   { <br />   digitalWrite(ledPin, HIGH);  // włacz diodę<br />   delay(1000);<br />   digitalWrite(ledPin, LOW); // wyłącz diodę<br />   delay(1000);<br />   }<br />}[/syntax]<br /><br /><br /><strong>Ćwiczenie 3: wysoki prąd wyjściowy<br />Czyli jak sterować większymi odbiornikami na wyższe napięcie i większy prąd.<br /></strong><br /><br />Czasami konieczne jest sterowanie urządzeniami o większym zapotrzebowaniu na prąd niż 40mA. W tym przypadku można użyć tranzystorów MOSFET do włączania wyższego prądu obciążenia. Poniższy przykład załącza tranzystor 5x na sekundę. <br /><br /><strong>Uwaga: </strong> Schemat pokazuje przykład podłączenia silnika , ale zamiast niego można dać np. 12V żarówkę samochodową <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br /><a href="http://forum.atnel.pl/_obrazki/o/58/49519c46195064a7c5593bf18a81d997.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/58/49519c46195064a7c5593bf18a81d997.png" alt="Obrazek" /></a><br /><br />Nasz program zaś następująco:<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/58/0d30114ff6a81055d0b7ab7d8036212a.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/58/0d30114ff6a81055d0b7ab7d8036212a.png" alt="Obrazek" /></a><br /><br />Podłączcie dokładnie jak na schemacie <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> inaczej spalicie mikrokontroler , tym sposobem można sterować przekaźniki , silniki i wiele innych urządzeń na wyższe napięcie i o większym poborze prądu.<br /><br /><br /><strong><span style="color: #FF0000">Ćwiczenie 4: Używamy Wyjść PWM  - Pulse With Modulation</span></strong><br /><br /><a href="http://forum.atnel.pl/_obrazki/o/58/ee1f53dbd446454fa7252c6e1a3e3dc3.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/58/ee1f53dbd446454fa7252c6e1a3e3dc3.png" alt="Obrazek" /></a><br /><br />Pulse Width Modulation (PWM) jest sposobem na wyjście analogowe.<br />Sygnał na tym wyjściu może być modyfikowany liniowo jak w układach analogowych <br />poprzez modulację impulsów wypełnienia oraz czas ich trwania.<br />Może to być użyte do płynnego rozjaśniania diod LED czy tez do sterowania serwami i obrotami silników. Poniższy przykład powoli rozjaśnia i przyciemnia LED za pomocą pętli for. <br /><br />Schemat jak widzicie jest dla jednej diody , ale podobnie możecie się pobawić dioda RGB  wystarczy lekko zmodyfikować program dla trzech kanałów PWM które są oznaczone na płytce xxxDUINO.<br /><br />Program:<br /><br /><br /><a href="http://forum.atnel.pl/_obrazki/o/58/50b0ab3089793e4f9291c1aa8a9bd900.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/58/50b0ab3089793e4f9291c1aa8a9bd900.png" alt="Obrazek" /></a><br /><br /><br /><br /><strong><span style="color: #FF0000">Ćwiczenie 5: Użycie przetwornika analogowo-cyfrowego ADC</span></strong><br /><br />W tym przykładzie użyjemy wejścia AnalogIN 0 , który pełni funkcję ADC mogące przyjmować wartości analogowe w zakresie 0-1023. podłączymy tam potencjometr i będziemy sterować szybkością migania diody LED. <br /><br />Schemat połączenia do SunDuino jest prosty jak widać , PIN oznacza dowolny ANALOG_IN  w naszym przypadku będzie to AnalogIN_0 bo taki zdefiniowaliśmy w programie <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br /><a href="http://forum.atnel.pl/_obrazki/o/58/4536d152f4927b56993b71904a06872c.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/58/4536d152f4927b56993b71904a06872c.png" alt="Obrazek" /></a><br /><br />A tak wygląda program sterujący  prawda, że proste <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />[syntax=cpp]int potPin = 0;                 // ustalamy wejście potencjometru na ANALOG IN 0<br />int ledPin = 13;                // użyjemy wbudowanej dioy LED na pin D13<br />void setup() <br />{ <br />pinMode(ledPin, OUTPUT);    // deklarujemy D13 jako OUTPUT <br />} <br />void loop() <br />{ <br />digitalWrite(ledPin, HIGH); // zapalamy diodę  <br />delay(analogRead(potPin)); // czekamy tyle ile wynośi wartosc potencjometru <br />digitalWrite(ledPin, LOW); // gasimy diodę<br />delay(analogRead(potPin)); // i znów czekamy tyle ile wynosi wartość potencjometru<br />}[/syntax]<br /><br />jak widzicie łatwo można sterować programem z dwóch potencjometrów pobawcie się tym programikiem chwilkę , pozmieniajcie porty diody dodajcie więcej diodek i drugi potencjometr prawda ze ciekawa zabawa:)<br /><br /><br /><strong><span style="color: #FF0000">Ćwiczenie 6: Sterowanie silnikami DC</span> </strong> <br /><br /><br />Do sterowania silnikiem DC  wystarczy tranzystor , ale gdy chcemy zbudować robota <br />powinniśmy wybrać sterowanie z podwójnego mostka H jakim jest np L293D, który <br />pozwoli nam w prosty sposób sterować niezależnie dwoma silnikami DC w zakresie kierunku obrotów oraz szybkości dla każdego z silników osobno.<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/58/3a7c64c19a3a6be7f1e05e5666f6f8d9.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/58/3a7c64c19a3a6be7f1e05e5666f6f8d9.png" alt="Obrazek" /></a><br /><br />Schemat jest następujący:<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/58/097fee09da7deb63856afc09fe81d71f.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/58/097fee09da7deb63856afc09fe81d71f.png" alt="Obrazek" /></a><br /><br /><br />Poniżej  przykładowy program sterujący silnikami:<br /><br />[syntax=cpp]// --------------------------------------------------------------------------- Silniki<br />int motor_left&#91;&#93; = {2, 3};<br />int motor_right&#91;&#93; = {7, 8};<br />// --------------------------------------------------------------------------- Ustawienia<br />void setup() {<br />Serial.begin(9600);<br />// Setup motors<br />int i;<br />for(i = 0; i &lt; 2; i++){<br />pinMode(motor_left&#91;i&#93;, OUTPUT);<br />pinMode(motor_right&#91;i&#93;, OUTPUT);<br />}<br />}<br />// --------------------------------------------------------------------------- Pętla<br />void loop() {<br />drive_forward();<br />delay(1000); <br />motor_stop();<br />Serial.println(&quot;1&quot;);<br />drive_backward();<br />delay(1000);<br />motor_stop();<br />Serial.println(&quot;2&quot;);<br />turn_left();<br />delay(1000);<br />motor_stop();<br />Serial.println(&quot;3&quot;);<br />turn_right();<br />delay(1000);<br />motor_stop();<br />Serial.println(&quot;4&quot;);<br />motor_stop();<br />delay(1000);<br />motor_stop();<br />Serial.println(&quot;5&quot;);<br />}<br />// --------------------------------------------------------------------------- Sterowanie <br />void motor_stop(){<br />digitalWrite(motor_left&#91;0&#93;, LOW);<br />digitalWrite(motor_left&#91;1&#93;, LOW);<br />digitalWrite(motor_right&#91;0&#93;, LOW);<br />digitalWrite(motor_right&#91;1&#93;, LOW);<br />delay(25);<br />}<br />void drive_forward(){<br />digitalWrite(motor_left&#91;0&#93;, HIGH);<br />digitalWrite(motor_left&#91;1&#93;, LOW);<br />digitalWrite(motor_right&#91;0&#93;, HIGH);<br />digitalWrite(motor_right&#91;1&#93;, LOW);<br />}<br />void drive_backward(){<br />digitalWrite(motor_left&#91;0&#93;, LOW);<br />digitalWrite(motor_left&#91;1&#93;, HIGH);<br />digitalWrite(motor_right&#91;0&#93;, LOW);<br />digitalWrite(motor_right&#91;1&#93;, HIGH);<br />}<br />void turn_left(){<br />digitalWrite(motor_left&#91;0&#93;, LOW);<br />digitalWrite(motor_left&#91;1&#93;, HIGH);<br />digitalWrite(motor_right&#91;0&#93;, HIGH);<br />digitalWrite(motor_right&#91;1&#93;, LOW);<br />}<br />void turn_right(){<br />digitalWrite(motor_left&#91;0&#93;, HIGH);<br />digitalWrite(motor_left&#91;1&#93;, LOW);<br />digitalWrite(motor_right&#91;0&#93;, LOW);<br />digitalWrite(motor_right&#91;1&#93;, HIGH);<br />}[/syntax]<br /><br /><br />Mam nadzieję, że program jest jasny i nie wymaga tłumaczenia.<br /><br /><br /><strong><span style="color: #FF0000">Ćwiczenie 7: termometr LM32</span></strong><br /><br />To malutki projekcik , w którym użyty zostanie scalony termometr LM35 , a jego wskazania będą prezentowane na  terminalu.<br /><br />Jak wiadomo LM35 jest termometrem Analogowym w przeciwieństwie do DS18B20 który jest Cyfrowy <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Dlatego o jego obsługi użyjemy funkcji analogRead(pinx). Wyjście LM35 przyjmuje analogowe wartości w zakresie:<br /><br />0(poziom GND) do 1023(poziom +5V), <br /><br />Sunduino udostępnia nam 10 bitowy przetwornik A/C gdzie wartości są:<br /><br />210 = 1024 więc musimy dokonać konwersji by odczytywać prawidłowo pełny zakres LM35.<br /><br />W tym przypadku przyda nam się dzielnik, który wyliczymy na podstawie wzoru:<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/58/9030251adafa745da8a1d005c3f7c8c9.JPG"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/58/9030251adafa745da8a1d005c3f7c8c9.JPG" alt="Obrazek" /></a><br /><br />A oto program:<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/58/139b907d97348e94d00b9ee2c23e2e0d.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/58/139b907d97348e94d00b9ee2c23e2e0d.jpg" alt="Obrazek" /></a><br /><br /><br />UFF .... tymczasem to wszystko  ... co mam na razie dla was, ale inne troszkę przykłady znajdziecie też na naszym forum w DIY w tematach :<br /><br /><br /><!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic116.html" >topic116.html</a><!-- l -->    -- efekt plomyka<br /><!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic79.html" >topic79.html</a><!-- l -->  -- obsługa czujnika SHT21<br /><!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic97.html" >topic97.html</a><!-- l -->  -- woltomierz <br /><!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic1059.html" >topic1059.html</a><!-- l -->  -- 16 kanałowy sterownik oświetlenia LED<br /><!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic93.html" >topic93.html</a><!-- l -->  -- obsługa serwomechanizmów <br /><!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic113.html" >topic113.html</a><!-- l -->   -- prosty terminal z użyciem wyjścia TV<br /><!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic92.html" >topic92.html</a><!-- l -->   -- użycie matrycy LED 8x8<br /><!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic101.html" >topic101.html</a><!-- l -->  -- led CUBE  3x3x3<br /><!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic80.html" >topic80.html</a><!-- l -->   -- Obsługa pastylek Ibutton &gt; magistrala 1Wire<br /><!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic816.html" >topic816.html</a><!-- l -->  -- Prosty robocik mini sumo<br /><!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic1062.html" >topic1062.html</a><!-- l -->  -- wykorzystanie 3osiowego akcelerometru z kontrolera WII<br /><!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic903.html" >topic903.html</a><!-- l -->  -- prosty oscyloskop 2 kanałowy z GLCD<br /><br /><br />Warto też odwiedzać dział SunDuino na mojej stronie gdzie też znajdziecie wiele przykładów, których tutaj nie opisywałem i nie pokazywałem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 16 cze 2013, o 12:59</p><hr />
]]></content>
</entry>
</feed>