Makowe przygody z elektroniką [#3]
Skoro postawiliśmy już pierwsze kroki w teorii oraz praktyce to teraz czas na rozpoczęcie przygody z układami opartymi o platformę Arduino. Dowiemy się jak skonfigurować całość do pracy z Makiem oraz zaczniemy programować proste układy elektroniczne.
Strona 3 z 3
Odczyt wartości cyfrowej
W tym przykładzie będziemy odczytywać wartości cyfrowe („zera lub jedynki”) korzystając z funkcji przełącznika stykowego.
Potrzebne materiały
- płytka Arduino (w przykładzie wykorzystam UNO)
- kabel USB do połączenia Arduino z Makiem
- rezystor 10kΩ
- przełącznik stykowy
- płytka stykowa
- kabelki połączeniowe
Połączenie
Jedną stronę przełącznika stykowego podłączamy do gniazda 5V, a drugą poprzez rezystor 10kΩ do GND (masy) oraz bezpośrednio do cyfrowego pinu nr 13.
W przełączniku stykowym nóżki w danej linii o większej odległości pomiędzy sobą są zmostkowane, natomiast te w bliższej są rozdzielone. Dla pewności zawsze możemy dokonać pomiaru ciągłości obwodu korzystając z Omomierza.
Kod źródłowy
Na początku dla ułatwienia tworzymy zmienną pushButton, której przypisujemy wartość 2 (jako drugi cyfrowy PIN)
int pushButton = 2;
W funkcji setup() ustawiamy komunikację szeregową z naszym Makiem:
Serial.begin(9600);
Następnie deklarujemy pin 2 (przez zmienną) jako źródło wejściowe:
pinMode(pushButton, INPUT);
W funkcji loop() odczytujemy stan przełącznika:
int buttonState = digitalRead(pushButton);
oraz prezentujemy jego wartość:
Serial.println(buttonState);
Po uruchomieniu podglądu Serial Monitor (⌘ + Shift + M) pojawi się nam okno, w którym możemy obserwować wartości z przedziału 0 - 1 reprezentujące stan przełącznika (0 - rozwarty, 1 - zwarty).
Ściemnianie diody LED
W tym przykładzie zaprogramujemy diodę LED tak, aby płynnie się zapalała, a następnie gasła, tworząc wrażenie jej rozjaśniania i ściemniania.
Potrzebne materiały
- płytka Arduino (w przykładzie wykorzystam UNO)
- kabel USB do połączenia Arduino z Makiem
- dioda LED
- rezystor 220Ω
- kabelki połączeniowe
- płytka stykowa
Połączenie
Dłuższą nóżkę diody (anodę) przez rezystor 220Ω wpinamy do cyfrowego gniazda nr 9 (DIGITAL), natomiast krótszą bezpośrednio do GND (masy).
Kod źródłowy
Na początku deklarujemy 3 zmienne:
- int led = 9; (zmienna skojarzona z cyfrowym pinem 9 z PWM)
- int brightness = 0; (zmienna przechowująca informacje o jasności diody)
- int fadeAmount = 5; (zmienna przechowująca ilość poziomów o jaki zaciemnia/rozjaśnia się dioda w pojedyńczym cyklu pętli)
oraz pin 9 jako wyjściowy:
pinMode(led, OUTPUT);
W pętli loop ustawiamy wartość (z przedziału 0 do 255) dla pinu 9 za pomocą funkcji analogWrite(), która będzie odpowiadać za wartość napięcia a tym samym za jasność diody:
analogWrite(led, brightness);
następnie zmieniamy wartość jasności do kolejnego przejścia pętli:
brightness = brightness + fadeAmount;
oraz w razie konieczności korygujemy kierunek - zaciemnianie/rozjaśnianie.
Analogowy odczyt napięcia
W tym przykładzie ponownie będziemy odczytywać wartość analogową na podstawie ustawień potencjometru, ale dla odmiany będziemy prezentować ją w woltach. Do tego celu dodamy do naszego kodu stosowne przeliczenia.
Potrzebne materiały
- płytka Arduino (w przykładzie wykorzystam UNO)
- kabel USB do połączenia Arduino z Makiem
- potencjometr 10kΩ
- kabelki połączeniowe
Połączenie
- Pierwszą nóżkę potencjometru (nie ma znaczenia, czy to prawa, czy lewa) łączymy z gniazdem 5V (w sekcji POWER)
- Środkową nóżkę łączymy z A0 (w sekcji ANALOG IN)
- Ostatnią nóżkę łączymy z GND, tzw. masą (w sekcji POWER)
Kod źródłowy
Na początku ustawiamy komunikację szeregową z naszym Makiem:
Serial.begin(9600);
W funkcji loop() (wywoływanej w pętli), definiujemy zmienną sensorValue, która będzie przybierała wartości analogowe z przedziału 0 do 1023, sczytywane z gniazda A0 (analog 0):
int sensorValue = analogRead(A0);
Aby przeliczyć wartości z przedziału 0 - 1023 na wolty mnożymy je przez wynik dzielenia 5/1023 (5V to maksymalny stan gniazda wejściowego, natomiast 1023 to maksymalna sczytana wartość analogowa):
float voltage= sensorValue * (5.0 / 1023.0);
Po wykonaniu obliczeń prezentujemy ich wynik:
Serial.println(voltage)
Po uruchomieniu podglądu Serial Monitor (⌘ + Shift + M) pojawi się nam okno w którym możemy obserwować wartości z przedziału 0.0 - 5.0V reprezentujące wartość napięcia wejściowego na pinie A0.
Bibliografia: