Licznik w mikrokontrolerze

2019-03-31
Licznik w mikrokontrolerze

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". Zobacz jak prosto zaprogramować licznik w mikrokontrolerze.

Licznik w mikrokontrolerze — 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ć funkcję "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"



Licznik w mikrokontrolerze — 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ści 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 ten link, aby przejść do strony z kodami. Zerknij na filmik z działaniem układu.



Licznik w mikrokontrolerze — 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.

Pokaż więcej wpisów z Marzec 2019
pixelpixelpixelpixel