^W górę

logo

ArduinoIDE posiada zestaw stałych predefiniowanych, które określają stany wejścia/wyjścia oraz wartości logiczne. Ułatwiają one pisanie programów i analizę napisanego kodu. Każda stała predefiniowana posiada swój odpowiednik liczbowy i może on być stosowany zamiennie. Zaletą stosowania stałych jest ich czytelność i jednoznaczność w kodzie. Liczba zero może być identyfikowana jako wartość (liczba) lub stan wejścia/wyjścia (pinu). Określenie "LOW" jednoznacznie określa, że chodzi o stan wejścia/wyjścia.

true, false

true - prawda logiczna. Odpowiednikiem może być dowolna liczba różna od zera.

false - fałsz logiczny. Odpowiednikiem może być liczba zero.

HIGH, LOW

HIGH i LOW określają stany cyfrowych pinów układu. HIGH to stan wysoki, LOW stan niski. W przypadku, gdy pin zdefiniowany jest jako wyjście HIGH powoduje ustawienie na wyjsciu logicznej jedynki, czyli napiecia zbliżonego do napięcia zasilania układu, LOW natomiast ustawia logiczne zero czyli wartość napięcia zbliżona do potencjału masy. W przypadku ustawienia pinu jako wejście HIGH odczytamy, gdy na wejście podane zostanie napiecie powyżej 3V (przy zasilaniu 5V), LOW zostanie odczytane, gdy wejście zewrzemy do masy.

INPUT, INPUT_PULLUP i OUTPUT

INPUT, INPUT_PULLUP oraz OUTPUT umożliwiają konfigurację pinów układu jako wejścia lub wyjscia. INPUT ustawia pin jako wejście, OUTPUT jako wyjscie. Przed odczytaniem danych z pinu należy ustawić go jako wejście. W sytuacji, gdy do konkretnego pinu podłączony jest układ wyjściowy np. dioda LED należy go ustawić jako wyjście przed ustawieniem stanu wysokiego, lub niskiego. Najczęściej definiuje się piny układu jako wejścia lub wyjścia w funkcji setup(). W szczególnych wypadkach definicji dokonuje się w funkcji loop(), lub innej. Jeżeli dane wyprowadzenie spełnia w układzie wyłącznie funkcję wejścia lub wyjścia definiujemy to w funkcji setup(). Czasem zdarza się, że jedno wyprowadzenie układu pełni naprzemiennie funkcję wejścia i wyjścia - wtedy definicja następuje przed odczytem/ zapisem danych w konkretnej funkcji. Przykładem lini dwukierunkowej może być komunikacja z termometrem DS1820 po magistrali 1-wire.

Szczególnym przypadkiem wejścia jest INPUT_PULLUP. Umożliwia on wewnętrzne podłączenie wejścia do zasilania poprzez rezystor. Elektronicy dokładnie znają temat, informatykom należy się kilka słów wyjaśnienia problemu. Odczytując dane z wejścia otrzymujemy logiczne zero dla pinu zwartego do masy i logiczną jedynkę dla pinu podłączonego do napięcia zasilającego. W sytuacji, gdy pin nie jest podłączony ani do masy ani do zasilania powstaje tzw. stan nieustalony, który najczęściej jest interpretowany jako logiczne zero (lecz nie zawsze). W przypadku, gdy chcemy odczytać stan np. przycisku podłączonego do układu, a przycisk z drugiej strony podłączony jest do masy układu (typowa praktyka elektroniczna), to powstaje problem interpretacji danych. Przycisk zwarty - masa - zero logiczn. Przycisk rozwarty, stan nieustalony - raczej zero logiczne. Wewnętrzne podłączenie poprzez rezystor do zasilania spowoduje, że pin "w powietrzu" czyli niepodłączony do masy będzie podłączony do zasilania, co da logiczny stan wysoki. W tym przypadku naciśnięcie przycisku w efekcie da zero logiczne, a jego zwolnienie jedynkę logiczną. W tym miejscu ktoś może pomyśleć: "Czy nie lepiej podłączyć przycisk do zasilania, a nie do masy?" Odpowiedź brzmi NIE. Sporo układów elektronicznych potrafi podać logiczne zero poprzez zwarcie do masy, lecz nie potrafi podać logicznej jedynki przechodząc w stan tzw. wysokiej impedancji.  

Więcej informacji na temat wykorzystania stałych predefiniowanych znajdzie się w kolejnych częściach kursu przy opisie funkcji digitalWrite() i pinMode().

Copyright © 2005 - 2017 Katarzyna i Wojciech Płóciennik