Podstawy działania funkcji w Arduino
W Arduino, oprócz podstawowych operatorów arytmetycznych (+
, -
, *
, /
), często stosuje się operatory inkrementacji (++
) i dekrementacji (--
), które pozwalają szybko zwiększać lub zmniejszać wartość zmiennej o jeden. Ułatwia to sterowanie licznikami, iterację pętli i zarządzanie danymi.
Poniżej znajdziesz opis tych operatorów, różnice między pre- i post-inkrementacją oraz przykłady ich zastosowania.
Operatory inkrementacji i dekrementacji pozwalają na szybkie zwiększanie (++
) lub zmniejszanie (--
) wartości zmiennej o jeden. W Arduino, podobnie jak w języku C/C++, mogą być stosowane do różnych typów danych, takich jak:
- Całkowite (np. int, long, short, byte)
- Zmiennoprzecinkowe (np. float, double)
- Znaki (np. char, ponieważ są przechowywane jako liczby w kodzie ASCII)
- Wskaźniki (przesuwają wskaźnik na kolejny lub poprzedni element w pamięci)
Wyróżnia się dwa rodzaje tych operatorów:
- Pre-inkrementacja / Pre-dekrementacja: ++x oraz –x (wartość zmiennej zmienia się przed użyciem w wyrażeniu)
- Post-inkrementacja / Post-dekrementacja: x++ oraz x– (wartość zmiennej zmienia się po jej użyciu w wyrażeniu)
Różnice w ich działaniu są kluczowe w bardziej złożonych operacjach, zwłaszcza w pętlach i wyrażeniach warunkowych.
Przykład 1: Pre-inkrementacja (++x
)
W tym przykładzie wartość zmiennej x zostaje zwiększona przed jej użyciem w instrukcji Serial.println(x);, co oznacza, że do funkcji Serial.println() trafia już zwiększona wartość.
Wynik działania programu
Najpierw wartość x wynosi 5, następnie operator ++x zwiększa ją o 1, więc Serial.println(++x); drukuje już 6. Po operacji zmienna x pozostaje na poziomie 6, co widać w ostatnim wywołaniu Serial.println(x);.
Początkowa wartość x to 5, po pre-inkrementacji zostaje zwiększona do 6, więc zarówno wynik operacji, jak i wartość końcowa x wynoszą 6.
Operator | Opis |
---|---|
&& | Operator „AND” – zwraca wartość true tylko wtedy, gdy oba wyrażenia po jego lewej i prawej stronie są prawdziwe. Przydatny do sprawdzania jednoczesnego spełnienia kilku warunków. |
|| | Operator „OR” – zwraca wartość true, jeśli przynajmniej jedno z wyrażeń po jego lewej lub prawej stronie jest prawdziwe. Idealny do sytuacji, w których wystarczy spełnienie jednego z wielu warunków. |
! | Operator „NOT” – neguje wartość logiczną wyrażenia. Jeśli wyrażenie jest true, wynik będzie false, i odwrotnie. Doskonały do odwracania logiki. |
Poniżej znajdziesz opis każdego z operatorów, kod demonstracyjny oraz wyjaśnienie ich działania.
Operator && (AND) – jednoczesne spełnienie warunków
Operator && sprawdza, czy oba wyrażenia po jego lewej i prawej stronie są prawdziwe. Jest przydatny, gdy chcemy upewnić się, że dwa różne czynniki muszą zostać spełnione jednocześnie, np. dwa czujniki są aktywne. Miejsce, w którym wstawiamy operatory lecznicze zaprezentowano na Rys.1 (na przykładzie operatora AND).

Na symulacji poniżej (Symulacja_1) przedstawiono zasadę działania operatora logicznego AND.
Wyjaśnienie:
- Definicja i inicjalizacja zmiennych:
- czujnik1 i czujnik2 są zmiennymi typu bool, co oznacza, że mogą przyjmować tylko wartości true lub false.
- Obie zmienne zostały zainicjalizowane jako true, co odpowiada logicznej prawdzie.
2. Operacja logiczna:
- Wyrażenie czujnik1 && czujnik2 sprawdza, czy obie zmienne mają wartość true.
- Operator AND (&&) zwraca true, gdy obie zmienne są prawdziwe. W przeciwnym razie wynik będzie false.
- W tym przypadku, ponieważ obie zmienne mają wartość true, rezultat operacji przypisany do zmiennej wynik to true.
3. Wyświetlanie wyniku:
- Funkcja Serial.print() na monitorze portu szeregowego wyświetla tekst: “Wynik logiczny AND: “.
- Funkcja Serial.println() wyświetla wartość zmiennej wynik, czyli 1.
Tabela prawdy przedstawia wszystkie możliwe kombinacje wartości logicznych dla operatorów, takich jak AND, OR czy NOT, wraz z wynikami tych operacji. Ułatwia zrozumienie, jakie wyniki uzyskujemy dla różnych stanów wejść i pomaga przewidzieć działanie logiki.
Tabela prawdy dla operatora && (AND)
Wejście1 | Wejście2 | Wyjście |
---|---|---|
false | false | false |
false | true | false |
true | false | false |
true | true | true |
Wynik operacji AND to true tylko wtedy, gdy oba wejścia mają wartość true. Tabele prawdy są niezwykle pomocne w projektowaniu i analizie logiki, umożliwiając przewidywanie wyników operacji logicznych.
Operator || (OR)– spełnienie jednego z warunków
Operator || sprawdza, czy przynajmniej jedno wyrażenie po jego lewej lub prawej stronie jest prawdziwe. Jest użyteczny w sytuacjach, gdy wystarczy spełnienie jednego z wielu warunków, np. jeden z dwóch czujników jest aktywny – (Symulacja_2).
Wyjaśnienie:
- Definicja i inicjalizacja zmiennych:
- czujnik1 i czujnik2 są zmiennymi typu bool.
- zmienna czujnik1 została zainicjalizowana jako false, co odpowiada wartości logicznej „fałsz”.
- zmienna czujnik2 została zainicjalizowana jako true, co odpowiada wartości logicznej „prawda”.
2. Operacja logiczna:
- Wyrażenie czujnik1 || czujnik2 sprawdza, czy przynajmniej jedna z tych zmiennych ma wartość true.
- Operator OR (||) zwraca true, jeśli dowolne z wejść (w tym przypadku zmienne czujnik1 lub czujnik2) jest prawdziwe.
- W tym przypadku zmienna czujnik2 jest true, więc wynik operacji przypisany do zmiennej wynik wynosi true.
3. Wyświetlanie wyniku:
- Funkcja Serial.print() na monitorze portu szeregowego wyświetla tekst: “Wynik logiczny OR: “.
- Funkcja Serial.println() wyświetla wartość zmiennej wynik, czyli 1, ponieważ true jest reprezentowane jako 1 w Arduino.
Tabela prawdy dla operatora || (OR)
Wejście1 | Wejście2 | Wyjście |
---|---|---|
false | false | false |
false | true | true |
true | false | true |
true | true | true |
Wynik operacji OR to true, gdy przynajmniej jedno z wejść ma wartość true. Tabele prawdy są szczególnie przydatne w projektowaniu i analizie logiki w Arduino, pozwalając na przewidywanie wyników działań logicznych.
Operator ! (NOT) – negacja wartości logicznej
Operator ! zmienia wartość logiczną na przeciwną. Jest szczególnie przydatny do odwracania logiki wyrażeń, np. sprawdzania, czy czujnik nie jest aktywny – (Symulacja_3).
Wyjaśnienie:
Definicja i inicjalizacja zmiennych:
- stanCzujnika jest zmienną typu bool.
- zmienna stanCzujnika została zainicjalizowana jako false, co odpowiada wartości logicznej „fałsz”.
2. Operacja logiczna:
- Operator NOT (!) odwraca wartość logiczną zmiennej stanCzujnika.
- Jeśli stanCzujnika wynosi false, wynik operacji !stanCzujnika będzie true.
- Jeśli stanCzujnika wynosi true, wynik operacji !stanCzujnika będzie false.
- W tym przypadku, ponieważ stanCzujnika to false, zmienna wynik otrzymuje wartość true.
3. Wyświetlanie wyniku:
- Funkcja Serial.print() wyświetla tekst: “Stan po negacji: “.
- Funkcja Serial.println() wyświetla wartość zmiennej wynik, czyli 1, ponieważ true jest reprezentowane jako 1 w Arduino.
Tabela prawdy dla operatora ! (NOT)
Wejście | Wyjście |
---|---|
false | true |
true | false |
Operator NOT (!) neguje wartość logiczną zmiennej. Jeśli zmienna ma wartość false, wynik operacji to true, i odwrotnie.
Zasada kolejności wykonywania operatorów logicznych w Arduino
W Arduino, podobnie jak w większości języków programowania, kolejność wykonywania operatorów logicznych jest ustalana na podstawie ich priorytetu. Jeśli w jednym wyrażeniu występuje kilka operatorów logicznych, są one wykonywane w ustalonej kolejności.
Kolejność wykonywania operatorów logicznych:
NOT (!) – Najwyższy priorytet
Operator NOT odwraca wartość logiczną i jest wykonywany jako pierwszy.
Przykład:
Wyrażenie: !true || false – (Symulacja_4)
Najpierw negacja: !true → false, a potem sprawdzenie logiki: false || false → false (czyli wartość 0).
AND (&&) – Średni priorytet
Operator AND zwraca wartość true, jeśli oba operandy są prawdziwe, i jest oceniany po NOT, ale przed OR.
Przykład:
Wyrażenie: true && false || true – (Symulacja_5)
Najpierw: true && false → false, a następnie: false || true → true (czyli wartość 1).
OR (||) – Najniższy priorytet
Operator OR sprawdza, czy przynajmniej jeden operand jest prawdziwy, i jest oceniany jako ostatni.
Przykład:
Wyrażenie: false || true && true – (Symulacja_6)
Najpierw: true && true → true, a następnie: false || true → true (czyli wartość 1).
Zasady stosowania nawiasów:
Aby zmienić kolejność wykonywania operatorów, można używać nawiasów (). Wyrażenia w nawiasach mają najwyższy priorytet i są wykonywane jako pierwsze.
Przykład bez nawiasów
Wyrażenie: false || true && false – (Symulacja_7)
Najpierw: true && false → false, a następnie: false || false → false (czyli wartość 0).
Przykład z nawiasami
Wyrażenie: (false || true) && false – (Symulacja_8)
Najpierw: false || true → true, a następnie: true && false → false (czyli wartość 0).
Kolejny przykład z nawiasami
Wyrażenie: false || (true && false) – (Symulacja_9)
Najpierw: true && false → false, a następnie: false || false → false (czyli wartość 0).
Operatory logiczne &&, || i ! są kluczowe w programowaniu Arduino, pozwalając na efektywne zarządzanie warunkami w kodzie. Dzięki nim możesz tworzyć bardziej złożone zależności logiczne, co jest niezbędne w wielu projektach. Ważne jest również zrozumienie kolejności wykonywania operacji – ! ma najwyższy priorytet, następnie &&, a na końcu ||. Aby zapewnić czytelność i poprawność kodu, warto stosować nawiasy, szczególnie w bardziej skomplikowanych wyrażeniach logicznych. Poznaj ich zastosowanie, aby zwiększyć elastyczność i funkcjonalność swoich programów.
Asystent Arduinowo_AI

Asystent Arduinowo_AI zgłębił powyższy zakres wiedzy i z przyjemnością wszystko Ci wyjaśni.
Zdobądź więcej wiedzy!
Przejdź do kolejnych materiałów naszego kursu: Bity i bajty.