Licznik w mikrokontrolerze

31 marca 2019

Założę się, że spotkałeś się w swoich projektach z taką sytuacją, że potrzebowałeś, aby jakaś część Twojego kodu wykonała się określoną przez Ciebie ilość razy i dopiero gdy wykona się odpowiednia ilość powtórzeń, Arduino wykona kolejną czynność. Nawet w życiu codziennym nieświadomie spotykałeś się z tego typu sytuacjami. Przykład? Proszę bardzo. Rodzice mówili Ci nie raz, abyś zastanowił się trzy razy zanim coś zrobisz. Odzwierciedleniem tych słów w języku, w którym piszesz programy na Arduino są funkcje „if” oraz „for„.

Wykorzystane elementy

Pięciokrotny blink

Załóżmy, że wykonujesz swój nowy projekt i potrzebujesz, aby czerwona dioda LED pięć razy zapaliła się i zagasła, a następnie zaczekała dwie sekundy zanim znów pięciokrotnie mignie. Początkujący zapewne rozwiązaliby ten problem w taki sposób :

digitalWrite (dioda, HIGH);
delay (500);
digitalWrite (dioda, LOW);
delay (500);

i tak pięć razy

delay (2000);

Sprawi to, że Twój kod nie będzie przejrzysty i będzie o wiele, wiele za długi. Wyobraź sobie, co by było gdyby dioda miała zabłysnąć 100 lub 1000 razy! W takim wypadku kod miałby kilkaset linijek, a wystarczyłoby tylko zastosować fukcję „if„…

Przykład funkcji „if” (jeżeli)

void loop()
{
digitalWrite (dioda, HIGH);
delay(500);
digitalWrite (dioda, LOW);
delay(500);
blysk++;

if (blysk == 5)
{
delay(2000);
blysk = 0;
}
}

Powyższy przykład będzie działał w następujący sposób :

  1. Zapal diodę
  2. Odczekaj 0.5 sekundy
  3. Zgaś diodę
  4. Odczekaj 0.5 sekundy
  5. Dodaj wartość 1 do zmiennej „blysk”
  6. Jeżeli wartość zmiennej „blysk” będzie równa 5 to wykonaj polecenie w nawiasie klamrowym (zaczekaj 2 sekundy)
  7. Przypisz wartość 0 zmiennej „blysk”
https://www.instagram.com/p/BpTpkvPHlbK/

Drobny upgrade

Rozbudujmy od razu nasz projekt dodając kolejną diodę LED oraz kilka linijek kodu. Stworzymy również własną funkcję o nazwie „red”. Czy rozumiesz działanie poniższego kodu? Jeżeli niezbyt, to nie masz się czym przejmować, wszystko Ci wyjaśnię.

void loop() {
for (licznik1 = 0; licznik1 < 5; licznik1++)
{
red();
}
if (licznik1 == 5)
{
licznik1 = 0;
}
}
void red() {
digitalWrite(czerwony, HIGH);
delay(100);
digitalWrite(czerwony, LOW);
delay(100);
}
  1. Do zmiennej „licznik1” o wartośći 0 dodaj wartość 1 do momentu, gdy ta wartość osiągnie wartość 5
  2. Jeżeli wartość się powiększy to wykonaj funkcję „red”
  3. Jeżeli zmienna „licznik1” osiągnie wartość 5 to wykonaj zadanie w nawiasie klamrowym
  4. Przypisz zmiennej „licznik1” wartość 0

Reszta kodu powinna być dla Ciebie zrozumiała. Możesz go pobrać i pozmieniać wartości zmiennych, aby lepiej zrozumieć jego działanie. Kliknij w ten link, aby przejść do strony z kodami. Zerknij na filmik z działaniem układu.

https://www.instagram.com/p/BpWJoKDHLCt

Podsumowanie

Zapoznałeś się z podstawowymi elementami kodu, które będą Ci potrzebne do budowy bardziej zaawansowanych szkiców, a co za tym idzie – projektów. Wiesz już, że można tworzyć oddzielne funkcje o dowolnych nazwach, aby Twój kod był o wiele bardziej przejrzysty. Dodaj kilka elementów na płytce prototypowej i dokonaj własnych zmian w kodzie. Jeżeli masz jakieś pytania lub uwagi – pisz w komentarzu.

Dodaj komentarz

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