Ożywiamy nasze Arduino


Ożywiamy nasze Arduino Uno.

Przed rozpoczęciem pracy musimy zadbać o podstawowe elementy i źródło zasilania:

Arduino Uno, port USB w komputerze jako zasilanie lub zasilacz 5-12 V –  tu należy zaznaczyć, że wskazany jest jednak zasilacz 6-7 V z wydajnością prądową około 1,5-2 A. Dlaczego ?  Logika w arduino pracuje przy napięciu 5V, wyższe napięcie będzie wymagało wydajniejszej pracy stabilizatora na płytce arduino, co wiąże się z wyższą temperaturą pracy układu. 

Pierwszym projektem jaki wykonamy jest Blink, krótki programik, który pozwoli włączać i wyłączać z określona częstotliwością diodę led, która jest wbudowana w twoje Arduino.

Aby uruchomić ten program, połącz twoje Arduino Uno z portem USB komputera, sprawdź na jakim porcie com pracuje twoje urządzenie i skonfiguruj odpowiednio Arduino IDE, a następnie rozpocznij pracę. Nie wiesz jak sprawdzić na jakim porcie pracuje twoje Arduino ? Nic prostszego, uruchom Arduino IDE bez podłączonej płytki, wybierz z górnego menu Tools, następnie Board, wskaż w nim Arduino Uno, jeśli takie masz, następnie wskaż poniższą opcję Port. Nie powinno się nic pojawić, ponieważ płytka nie jest podpięta. Jeśli zdarzyłoby się tak, że będą wskazane jakieś porty COM, zapisz je, następnie podłącz do portu USB twoje Arduino i ponowienie wybierz opcje Port z menu górnego Tools. Powinien pojawić się numer portu komunikacyjnego, wskaż go i od tej pory twoje Arduino będzie pracować na tym porcie (chyba, że przepniesz je do innego wolnego portu USB, wtedy musisz ponownie sprawdzić na jakim porcie będzie pracować twoja nowa zabawka). W tym momencie Arduino już jest gotowe, by przyjmować twoje rozkazy. Nowa wersja Arduino IDE automatycznie wybiera prędkość transmisji dla Arduino Uno (9600), nie jest tak w przypadku płytek Wemos D1 i NodeMcu, które z reguły pracują z prędkością 115000. O tym dowiesz się w dalszych częściach naszego poradnika.

Po podpięciu Arduino Uno do portu USB powinna zapalić się czerwona (zielona, niebieska dioda LED Power – PWD, zależne od producenta oznaczenia i kolor diody może być różny) oraz powinna zacząć migać inna dioda sygnalizacyjna, która mówi nam, że nasze nowe Arduino działa poprawnie. Dzieje się tak, ponieważ w pamięci naszej płytki firmowo jest wgrany program Blink.

Program ten jest wbudowany w bazę kodów Arduino IDE, aby go wywołać wybierz menu File, a następnie Examples, z wyświetlonej listy wybierz 01.Basics a następnie Blink, poniżej wyświetli ci się kod programu Blink. Z pewnością zauważyłeś, że jest tam cała masa różnych innych kodów, o czym napisze później.

[pastacode lang=”cpp” manual=”%2F*%0A%0ABlink%0A%0ATurns%20on%20an%20LED%20on%20for%20one%20second%2C%20then%20off%20for%20one%20second%2C%20repeatedly.%0A%0AMost%20Arduinos%20have%20an%20on-board%20LED%20you%20can%20control.%20On%20the%20UNO%2C%20MEGA%20and%20ZERO%0A%0Ait%20is%20attached%20to%20digital%20pin%2013%2C%20on%20MKR1000%20on%20pin%206.%20LED_BUILTIN%20is%20set%20to%0A%0Athe%20correct%20LED%20pin%20independent%20of%20which%20board%20is%20used.%0A%0AIf%20you%20want%20to%20know%20what%20pin%20the%20on-board%20LED%20is%20connected%20to%20on%20your%20Arduino%20model%2C%20check%0A%0Athe%20Technical%20Specs%20of%20your%20board%C2%A0%20at%20https%3A%2F%2Fwww.arduino.cc%2Fen%2FMain%2FProducts%0A%0AThis%20example%20code%20is%20in%20the%20public%20domain.%0A%0Amodified%208%20May%202014%0A%0Aby%20Scott%20Fitzgerald%0A%0Amodified%202%20Sep%202016%0A%0Aby%20Arturo%20Guadalupi%0A%0Amodified%208%20Sep%202016%0A%0Aby%20Colby%20Newman%0A%0A*%2F%0A%0A%0A%0A%0A%0A%2F%2F%20the%20setup%20function%20runs%20once%20when%20you%20press%20reset%20or%20power%20the%20board%0A%0Avoid%20setup()%20%7B%0A%0A%2F%2F%20initialize%20digital%20pin%20LED_BUILTIN%20as%20an%20output.%0A%0ApinMode(LED_BUILTIN%2C%20OUTPUT)%3B%0A%0A%7D%0A%0A%0A%0A%2F%2F%20the%20loop%20function%20runs%20over%20and%20over%20again%20forever%0A%0Avoid%20loop()%20%7B%0A%0AdigitalWrite(LED_BUILTIN%2C%20HIGH)%3B%C2%A0%C2%A0%20%2F%2F%20turn%20the%20LED%20on%20(HIGH%20is%20the%20voltage%20level)%0A%0Adelay(1000)%3B%20%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%2F%2F%20wait%20for%20a%20second%0A%0AdigitalWrite(LED_BUILTIN%2C%20LOW)%3B%C2%A0%C2%A0%C2%A0%20%2F%2F%20turn%20the%20LED%20off%20by%20making%20the%20voltage%20LOW%0A%0Adelay(1000)%3B%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20%2F%2F%20wait%20for%20a%20second%0A%0A%7D” message=”blink” highlight=”” provider=”manual”/]

 

Między znakami /* */ zawsze znajduje się komentarz, który oznaczyłem na czerwono, abyś mógł go łatwiej odróżnić  od kodu.

Autor pisze w nim o programie, do czego służy, daje krótkie uwagi, nazwisko autora, wersję etc.

Znak // również oznacza komentarz, ale używamy go tylko wtedy, jeśli chcemy krótko skomentować co program robi w danej linii kodu. Wszystko napisane po znaku // jest odczytywane jako komentarz i nie ma wpływu na kod, taki komentarz może być zawarty tylko w jednej linii, w przeciwieństwie do komentarzy zawartych między znakami /* */

 

// Rozpoczynamy funkcje programu, ktora rozpocznie sie po wcisnieciu przycisku restet na plytce

void setup() {

//uruchamiamy pin LED_BUILTIN, OUTPUT jako wyjscie

pinMode(LED_BUILTIN, OUTPUT);

}

// Uruchamiamy petle ktora bedzie ciagle wykonywana

void loop() {

digitalWrite(LED_BUILTIN, HIGH);   // wlacz na cyfrowym wyjscu stan wysoki (HIGH oznacza wlaczone 5V)

delay(1000);                       // czekaj 1000 ms (1 sekunde)

digitalWrite(LED_BUILTIN, LOW);    // wlacz na cyfrowym wyjsciu stan niski (LOW oznacza wylaczone napiecie, stan 0V)

delay(1000);                       // czekaj 1000 ms (1 sekunde)

}

 

WAŻNE !!! po każdej linii kodu sprawdź czy jest znak ; oraz czy każdy znak { jest zamknięty znakiem}, czyt. Czy klamra jest zamknięta, są to najczęstsze błędy popełniane przy pisaniu kodów.

Void setup (){  — otwieramy jedną klamrą, wpisujemy parametry pinMode(); i zamykamy klamrę} Nie ma znaczenia czy znak } jest bezpośrednio po znaku ; czy w nowej linii. Aby kod był czytelniejszy, przyjęło się, że klamry zamykamy w następnej linii.  Podobnie jest z void loop, funkcja delay (1000) mówi ile czasu program ma czekać, by przejść do kolejnej linii programu. Po sekundzie przechodzi do kolejnego wiersza aż do znaku } po czym przeskakuje do pierwszej funkcji zawartej w pętli, czyli do digitalWrite(LED_BUILTIN, HIGH); i tak w nieskończoność.

 

Zadanie dla ciebie.

Zmień parametry  delay(1000); w taki, by dioda led zapalała się na 3 sekundy, a wyłączała się po 1,5 s.

Poniżej przedstawiam kod podobny, którego efekt jest identyczny, lecz jest realizowany w inny sposób. Kod ten jest pozbawiony funkcji delay, ponieważ (jak powiedział mi jeden z twórców learnduino) cyt.”używaj blink z millis, bo blink z delay jest złą formą nauki, w sensie dobrze wiedzieć że tak się da, ale nie używać “. Dlaczego? Tak jest dlatego, ponieważ funkcja delay zatrzymuje cały program na określony czas, niejednokrotnie spotkamy się z tym, że nie jest to wskazane. Prawdą jest, że funkcje delay jest dużo prościej umieścić w kodzie, ale w przypadku większego projektu funkcje delay, niestety, mogą sprawić spore problemy.

Porównaj powyższy przykład z przykładem znajdującym się poniżej, przeanalizuj go oraz postaraj się zrozumieć poszczególne części kodu.

[pastacode lang=”cpp” manual=”%2F%2F%20Blink%20bez%20delay%0A%0Aconst%20int%20ledPin%20%3D%2010%3B%20%2F%2F%20podajemy%20numer%20pinu%20do%20kt%C3%B3rego%20podielimy%20diode%0A%0A%2F%2F%20Ustawiamy%20zmienne%3A%0Aint%20ledState%20%3D%20LOW%3B%20%2F%2F%20ustawiamy%20stan%20diody%20led%20po%20wlaczeniu%20arduino%0Along%20previousMillis%20%3D%200%3B%20%2F%2F%20podajemy%20czas%20od%20kt%C3%B3ego%20licznik%20zaczyna%20liczenie%0A%0A%2F%2Flicznik%0Along%20interval%20%3D%201000%3B%20%2F%2F%20przedzial%20jaki%20ma%20zliczac%20licznik%20(milisekundy)%0A%0Avoid%20setup()%20%7B%0A%2F%2F%20ustawiamu%20pin%20jako%20wyjsciowy%3A%0ApinMode(ledPin%2C%20OUTPUT)%3B%0A%7D%0A%0Avoid%20loop()%0A%7B%0A%2F%2F%20czesc%20odliczajaca%0A%0A%2F%2F%20parametry%20funkcji%3A%0Aunsigned%20long%20currentMillis%20%3D%20millis()%3B%0A%0Aif(currentMillis%20-%20previousMillis%20%3E%20interval)%20%7B%0A%2F%2F%20zapisz%20czas%20w%20jakim%20ma%20migac%20dioda%0ApreviousMillis%20%3D%20currentMillis%3B%0A%0A%2F%2F%20jesli%20dioda%20jest%20wlaczaona%20to%20ja%20wylacz%20lub%20jestli%20jest%20wylaczaona%20to%20ja%20wlacz%3A%0Aif%20(ledState%20%3D%3D%20LOW)%0AledState%20%3D%20HIGH%3B%0Aelse%0AledState%20%3D%20LOW%3B%0A%0A%2F%2F%20wyslij%20wynik%20ledState%20na%20pin%20ledPin%20wyjsciowy%3A%0AdigitalWrite(ledPin%2C%20ledState)%3B%0A%7D%0A%7D” message=”Blink bez delay” highlight=”” provider=”manual”/]

Poniżej przedstawiam kolejny prosty kod, który pomoże ci zrozumieć jak działa program wykonywany przez Arduino.

Przed rozpoczęciem pracy musimy zadbać o podstawowe elementy i źródło zasilania:

Arduino Uno, port USB w komputerze jako zasilanie lub zasilacz 5-15, trzy diody led, trzy rezystory 560 ohm, kilka przewodów, pytka stykowa

Na początku jest komentarz,

/*

  Miganie  LEDs – uruchomienie migania  3 diod led

*/

W poniższych liniach podajemy zmienne za pomocą funkcji int . W moim przypadku nazywa się ona aled i podłączona będzie do wyjścia nr 10 arduino z diodą led, analogicznie jest ze zmienna bled i cled, które wskazują programowi, że na złączu nr 11 i 12 również podłączone są diody led.

int aled = 10;

int bled = 11;

int cled = 12;

 

// ustawiamy stan po wcisnieciu przycisku reset

 

Funkcja setup programu

void setup() {               

  // ustawiamy wyjscia

Funkcja pinMode(aled, OUTPUT), mówi, że zmienna aled,bled I cled są wyjsciami.

pinMode(aled, OUTPUT);  

pinMode(bled, OUTPUT); 

pinMode(cled, OUTPUT);   

}

 

Nie zapominamy o zamknięciu klamry }

 

// funkcja petli, która ma być wykonywana zawsze przez program

void loop() {

  digitalWrite(aled, HIGH);   // wlacz diode aled (HIGH 5V)

  delay(1000);                      // czekaj sekunde

  digitalWrite(aled, LOW);    // wylacz diode aled (LOW 0V)

  digitalWrite(bled, HIGH);    // wlacz diode bled (HIGH 5V)

  delay(1000);                      // czekaj sekunde

  digitalWrite(bled, LOW);     // wylacz diode aled (LOW 0V)

  digitalWrite(cled, HIGH);     // wlacz diode bled (HIGH 5V)

  delay(1000);                      // czekaj sekunde

  digitalWrite(cled, LOW);      // wylacz diode aled (LOW 0V)

  delay(500);                     // czekaj pol sekundy

}

 

digitalWrite(aled,HIGH); wyślij na cyfrowe wyjście przypisane dla zmiennej aled stan 5V czyli stan HIGH – wysoki, następnie delay(1000); czekaj 1000 milisekund, czyli jedną sekundę, a następnie digitalWrite(aled,LOW); wyślij na pin przypisany dla aled, LOW – stan 0V niski, wyłącz diodę. Kolejny skok jest analogiczny dla diody ze zmienna bled i cled. Po wykonaniu wszystkich kroków jest dodana funkcja delay(500); mówi ona, że po wykonaniu wszystkich, w naszym wypadku 6, operacji włączania i wyłączania diod, program ma czekać pół sekundy, zakończyć się, a następnie skoczyć ponownie do funkcji void loop, czyli ponownie zacząć ta funkcję i tak w nieskończoność do wyłączenia Arduino z sieci lub wciśnięcia przycisku reset na naszej płytce.

 

Poniżej przedstawiam gotowy kod, zapraszam do zapoznania się z nim.

 

 

[pastacode lang=”cpp” manual=”%2F*%0A%0AMiganie%C2%A0%20LEDs%20-%20uruchomienie%20migania%C2%A0%203%20diod%20led%0A%0A*%2F%0A%0Aint%20aled%20%3D%2010%3B%0A%0Aint%20bled%20%3D%2011%3B%0A%0Aint%20cled%20%3D%2012%3B%0A%0A%2F%2F%20ustawiamy%20stan%20po%20wcisnieciu%20przycisku%20reset%0A%0Avoid%20setup()%20%7B%0A%0A%2F%2F%20ustawiamy%20wyjscia%20.%0A%0ApinMode(aled%2C%20OUTPUT)%3B%0A%0ApinMode(bled%2C%20OUTPUT)%3B%0A%0ApinMode(cled%2C%20OUTPUT)%3B%0A%0A%7D%0A%0A%2F%2F%20funkcja%20petli%2C%20co%20ma%20wykonywa%20zawsze%20program%0A%0Avoid%20loop()%20%7B%0A%0AdigitalWrite(aled%2C%20HIGH)%3B%C2%A0%C2%A0%20%2F%2F%20wlacz%20diode%20aled%20(HIGH%205V)%0A%0Adelay(1000)%3B%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20%2F%2F%20czekaj%20sekunde%0A%0AdigitalWrite(aled%2C%20LOW)%3B%C2%A0%C2%A0%C2%A0%20%2F%2F%20wylacz%20diode%20aled%20(LOW%200V)%0A%0AdigitalWrite(bled%2C%20HIGH)%3B%C2%A0%C2%A0%C2%A0%20%2F%2F%20wlacz%20diode%20bled%20(HIGH%205V)%0A%0Adelay(1000)%3B%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20%2F%2F%20czekaj%20sekunde%0A%0AdigitalWrite(bled%2C%20LOW)%3B%C2%A0%C2%A0%C2%A0%C2%A0%20%2F%2F%20wylacz%20diode%20aled%20(LOW%200V)%0A%0AdigitalWrite(cled%2C%20HIGH)%3B%C2%A0%C2%A0%C2%A0%C2%A0%20%2F%2F%20wlacz%20diode%20bled%20(HIGH%205V)%0A%0Adelay(1000)%3B%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20%2F%2F%20czekaj%20sekunde%0A%0AdigitalWrite(cled%2C%20LOW)%3B%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20%2F%2F%20wylacz%20diode%20aled%20(LOW%200V)%0A%0Adelay(500)%3B%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20%2F%2F%20czekaj%20pol%20sekundy%0A%0A%7D” message=”blink bez delay” highlight=”” provider=”manual”/]

 

Zadanie dla Ciebie. Zmień dane w zmiennych aled, bled, cled, tak by podłączyć piny 6,7,8 do diod led, zmień czas świecenia i wyłączenia diod na pół sekundy. Nie zapomnij zmienić pinów w twoim pierwszym projekcie w sposób o jakim mówi funkcja int .

Kolejny przykład, jaki chcę wam przedstawić, jest oparty na 3 diodach led oraz przycisku.

Przed rozpoczęciem pracy musimy zadbać o podstawowe elementy i źródło zasilania:

Arduino Uno, port USB w komputerze jako zasilanie lub zasilacz 5-15, trzy diody led, trzy rezystory 560 ohm oraz jeden 10 Kohm, kilka przewodów, pytka stykowa, przycisk montażowy

Tym razem nie będę już rozpisywał co robi program, ponieważ zrobiłem to już w samym kodzie. Zawarłem w nim komentarze, które już powinieneś umieć odczytać i wiedzieć co dana funkcja robi w programie, do czego służy i jaki jest efekt jej działania.

 

Proszę, przeanalizuj poniższy kod, porównaj go z poprzednim i zobacz co się zmieniło i jaki to ma wpływ na efekt końcowy.

 

[pastacode lang=”cpp” manual=”%2F*%0A%0AMiganie%C2%A0%20LEDs%20-%20uruchomienie%20migania%C2%A0%203%20diod%20led%20przyciskiem%0A%0A*%2F%0A%0A%0A%0Aint%20przycisk%20%3D%202%3B%0A%0Aint%20aled%20%3D%2010%3B%0A%0Aint%20bled%20%3D%2011%3B%0A%0Aint%20cled%20%3D%2012%3B%0A%0A%0A%0Avoid%20setup()%7B%0A%0A%2F%2F%20definiujemy%20piny%20ktore%20sa%20wyjsciami%20i%20podpiete%20do%20nich%20mamy%20diody%20led%0A%0ApinMode(aled%2C%20OUTPUT)%3B%0A%0ApinMode(bled%2C%20OUTPUT)%3B%0A%0ApinMode(cled%2C%20OUTPUT)%3B%0A%0A%0A%0A%2F%2F%20deklarujemy%20pin%202%20jako%20wejscie%0A%0ApinMode(2%2C%20INPUT)%3B%0A%0A%7D%0A%0A%0A%0Avoid%20loop()%7B%0A%0A%2F%2F%20petla%20ktora%20jest%20wykonywana%20przez%20program%0A%0A%2F%2F%20digitalRead()%20funkcja%20ta%20sprawdza%20czy%20na%20pinie%20cyfrowym%20(2)%0A%0A%2F%2F%20mamy%20napiecie%20czy%20nie%0A%0Aprzycisk%20%3D%20digitalRead(2)%3B%0A%0A%0A%0A%2F%2F%20jesli%20przycisk%20nie%20jest%20wcisniety%20(LOW%20-%200V)%20to%20zapalamy%20tylko%20diode%20aled%0A%0Aif%20(przycisk%20%3D%3D%20LOW)%20%7B%0A%0AdigitalWrite(aled%2C%20HIGH)%3B%0A%0AdigitalWrite(bled%2C%20LOW)%3B%0A%0AdigitalWrite(cled%2C%20LOW)%3B%0A%0A%7D%0A%0A%2F%2F%20jesli%20jest%20inaczej%20jak%20wyzej%20(na%20pinie%202%20pojawi%20si%C4%99%20napi%C4%99cie)%20zapal%20diode%20aled%2C%20wylacz%20blec%2C%20cled%2C%20delay(50)%20czekaj%2050%20ms%0A%0A%2F%2F%20nastepnie%20wylacz%20diode%20aled%2C%20wlacz%20bled%2C%20wylac%20cled%2C%20delay(50)%20czekaj%2050%20ms%0A%0A%2F%2F%20nastepnie%20wylacz%20diode%20aled%2C%20wylacz%20diode%20bled%2C%20wlacz%20diode%20cled%2C%20delay(50)%20czekaj%2050%20ms%0A%0A%2F%2F%20zmaknij%20program%20i%20wroc%20do%20funkcji%20void%20loop%0A%0Aelse%20%7B%0A%0AdigitalWrite(aled%2C%20HIGH)%3B%0A%0AdigitalWrite(bled%2C%20LOW)%3B%0A%0AdigitalWrite(cled%2C%20LOW)%3B%0A%0Adelay(50)%3B%0A%0AdigitalWrite(aled%2C%20LOW)%3B%0A%0AdigitalWrite(bled%2C%20HIGH)%3B%0A%0AdigitalWrite(cled%2C%20LOW)%3B%0A%0Adelay(50)%3B%0A%0AdigitalWrite(aled%2C%20LOW)%3B%0A%0AdigitalWrite(bled%2C%20LOW)%3B%0A%0AdigitalWrite(cled%2C%20HIGH)%3B%0A%0Adelay(50)%3B%0A%0A%7D%0A%0A%7D” message=”miganie 3 diodami z przyciskiem” highlight=”” provider=”manual”/]

Zadanie dla Ciebie.

Zbuduj układ wg wytycznych zawartych w programie, dobierz parametry w taki sposób, by po włączeniu arduino diody migały, a po wciśnięciu przycisku przestały działać, a świeciła tylko dioda podpięta do pinu 12.

No, i doszliśmy do kolejnego przykładu niezależnego migania trzema diodami led.

 

[pastacode lang=”cpp” manual=”%2F%2F%20Blink%203%20led%20bez%20delay%0A%0Aconst%20int%20ledPin%20%3D%20%2010%3B%20%20%20%20%20%20%2F%2F%20podajemy%20numer%20pinu%20do%20kt%C3%B3rego%20podpielismy%20diode%0Aconst%20int%20ledPin1%20%3D%20%2011%3B%20%0Aconst%20int%20ledPin2%20%3D%20%2012%3B%20%0A%2F%2F%20Ustawiamy%20zmienne%3A%0Aint%20ledState%20%3D%20LOW%3B%20%20%2F%2F%20ustawiamy%20stan%20diody%20led%20po%20wlaczeniu%20arduino%0Aint%20ledState1%20%3D%20LOW%3B%0Aint%20ledState2%20%3D%20HIGH%3B%0Along%20previousMillis%20%3D%200%3B%20%20%20%20%20%20%20%20%2F%2F%20podajemy%20czas%20od%20kt%C3%B3ego%20licznik%20zaczyna%20liczenie%0Along%20previousMillis1%20%3D%200%3B%20%0Along%20previousMillis2%20%3D%200%3B%0A%2F%2Flicznik%0Along%20interval%20%3D%20175%3B%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20przedzial%20jaki%20ma%20zliczac%20licznik%20%20(milisekundy)%0Along%20interval1%20%3D%20220%3B%20%0Along%20interval2%20%3D%20357%3B%0Avoid%20setup()%20%7B%0A%20%20%2F%2F%20ustawiamu%20pin%20jako%20wyjsciowy%3A%0A%20%20pinMode(ledPin%2C%20OUTPUT)%3B%20%0A%20%20pinMode(ledPin1%2C%20OUTPUT)%3B%20%0A%20%20pinMode(ledPin2%2C%20OUTPUT)%3B%20%20%20%20%0A%7D%0A%20%0Avoid%20loop()%0A%7B%0A%20%20%2F%2F%20czesc%20odliczajaca%0A%20%20%20%2F%2F%20parametry%20funkcji%3A%0A%20%20unsigned%20long%20currentMillis%20%3D%20millis()%3B%0A%20%20%0A%20%20if(currentMillis%20-%20previousMillis%20%3E%20interval)%20%7B%0A%20%20%20%20%2F%2F%20zapisz%20czas%20w%20jakim%20ma%20migac%20dioda%20%0A%20%20%20%20previousMillis%20%3D%20currentMillis%3B%20%20%20%0A%20%20%20%20%20%2F%2F%20jesli%20dioda%20jest%20wlaczaona%20to%20ja%20wylacz%20lub%20jestli%20jest%20wylaczaona%20to%20ja%20wlacz%3A%0A%20%20%20%20if%20(ledState%20%3D%3D%20LOW)%0A%20%20%20%20%20%20ledState%20%3D%20HIGH%3B%0A%20%20%20%20else%0A%20%20%20%20%20%20ledState%20%3D%20LOW%3B%0A%20%20%20%20%20%2F%2F%20wyslij%20wynik%20ledState%20na%20pin%20ledPin%20wyjsciowy%3A%0A%20%20%20%20digitalWrite(ledPin%2C%20ledState)%3B%0A%20%20%7D%0Aunsigned%20long%20currentMillis1%20%3D%20millis()%3B%0A%20%0A%20if(currentMillis%20-%20previousMillis1%20%3E%20interval1)%20%7B%0A%20%20%20%20%2F%2F%20zapisz%20czas%20w%20jakim%20ma%20migac%20dioda%20%0A%20%20%20%20previousMillis1%20%3D%20currentMillis%3B%20%20%20%0A%20%0A%20%20%20%20%2F%2F%20jesli%20dioda%20jest%20wlaczaona%20to%20ja%20wylacz%20lub%20jestli%20jest%20wylaczaona%20to%20ja%20wlacz%3A%0A%20%20%20%20if%20(ledState1%20%3D%3D%20LOW)%0A%20%20%20%20%20%20ledState1%20%3D%20HIGH%3B%0A%20%20%20%20else%0A%20%20%20%20%20%20ledState1%20%3D%20LOW%3B%0A%20%0A%20%20%20%20%2F%2F%20wyslij%20wynik%20ledState%20na%20pin%20ledPin%20wyjsciowy%3A%0A%20%20%20%20digitalWrite(ledPin1%2C%20ledState1)%3B%7D%0A%0Aunsigned%20long%20currentMillis2%20%3D%20millis()%3B%0Aif(currentMillis%20-%20previousMillis2%20%3E%20interval2)%20%7B%0A%20%20%20%20%2F%2F%20zapisz%20czas%20w%20jakim%20ma%20migac%20dioda%20%0A%20%20%20%20previousMillis2%20%3D%20currentMillis%3B%20%20%20%0A%20%0A%20%20%20%20%2F%2F%20jesli%20dioda%20jest%20wlaczaona%20to%20ja%20wylacz%20lub%20jestli%20jest%20wylaczaona%20to%20ja%20wlacz%3A%0A%20%20%20%20if%20(ledState2%20%3D%3D%20HIGH)%0A%20%20%20%20%20%20ledState2%20%3D%20LOW%3B%0A%20%20%20%20else%0A%20%20%20%20%20%20ledState2%20%3D%20HIGH%3B%0A%20%0A%20%20%20%20%2F%2F%20wyslij%20wynik%20ledState%20na%20pin%20ledPin%20wyjsciowy%3A%0A%20%20%20%20digitalWrite(ledPin2%2C%20ledState2)%3B%7D%0A%7D” message=”blink 3 led bez delay ” highlight=”” provider=”manual”/]

Zachęcam was jeszcze do zapoznania się z powyższym kodem, który zadziała w trochę inny sposób niż poprzednie. Proszę przeanalizuj ten program i postaraj się go zrozumieć, zastanów się również nad tym, która funkcja jest odpowiedzialna za częstotliwość migania diody. Zachęcam Was do zmian parametrów i obserwacji jak wasze  arduino reaguje na nowe ustawienia. Metoda prób i błędów jest najlepszą formą nauki.

Już niebawem przedstawię Wam kolejny biuletyn poświęcony diodom led, tym razem będą to diody dwu i trój kolorowe (rgb), pokazę wam proste programy, które pozwolą na zbudowanie bardzo ciekawych projektów. Diody programowalne i sterowanie nimi opisze w osobnym felietonie. Zapraszam was do komentowania wpisu, odwiedzin naszej grupy facebookowej oraz fanpage.

Poprzednia informacja Arduino - komunikacja przewodowa
Kolejna informacja Wesołych Świąt

Brak komentarzy

Zostaw odpowiedź

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *