Zaczynamy! Lista zadań Menu programu sprawdzanie kodu Skróty wybranych poleceń wgrywanie kodu nowy program otwieranie zapisanych prog. Pole do wprowadzania kodu zapisywanie zmian wywołanie podglądu portu szeregowego nazwa wybranej płytki i portu Pole komunikatów programu Nawigacja w programie Arduino W środowisku Arduino tworzymy programy, które nazywane są szkicami (ang. sketch). Każdy nowo otwarty szkic zawiera podstawowy wzorzec programistyczny, czyli dwie główne funkcje, które musza być zawsze zawarte:
nazwa szkicu funkcja setup zawiera zbiór instrukcji dla mikrokontrolera wykonywanych tylko jeden raz po uruchomieniu lub resecie funkcja loop (pętla) powtarza instrukcje zawarte pomiędzy nawiasami {...} teoretycznie w niekończoną liczbę razy, a praktycznie do wyłączenia zasilania lub zawieszenia // tekst w linii poprzedzonej // jest niewidoczny dla programu. // Stanowi tylko komentarz do kodu. /* tekst wprowadzony pomiędzy znakami: /*...*/ jest również niewidoczny dla programu, ale może zajmować kilka linijek. */ Widok czystego szkicu 1 zadanie. Na płytce Arduino Uno do portu cyfrowego nr 13 mamy na stałe podłączoną diodę LED. Wykorzystamy ją do napisania pierwszego programu: Umiejscowienie diody LED podłączonej do pinu 13.
2 zadanie. Zmodyfikuj działanie 1. programu i zrealizuj poniższy cykl świecenia, który składa się z dwóch krótszych cykli: High Low t=1s t/2 T
3 zadanie. Jeśli wykonałeś zadanie 2, to przyjrzyj się poniższemu programowi i wynotuj różnice. Następnie podłącz zewnętrzną diodę do pinu nr 3. Przetestuj kod z zadania trzeciego dla okresów T = 1s; 0,1s; 0,01s oraz 0,001s. Obserwacje zapisz.
Dla dociekliwych: schemat połączeń diody do mikrokontrolera 4 zadanie Skoro tak dobrze nam idzie, to zanim zabierzemy się za czujniki, nauczymy się jak zmieniać wartość zmiennej za pomocą funkcji for. Ok, ale po co? W zadaniu 3 zmniejszając okres T, czyli zwiększając częstotliwość f (f=1/t) błysków odnieśliśmy wrażenie ciągłego świecenia. Teraz zobaczymy, jak za pomocą portu cyfrowego uzyskać efekt przygaszania (ściemniania) światła, czyli mając dwa stany włącz/wyłącz osiągniemy wrażenie płynności! Uwaga: jeśli nie wiecie jak działa pętla for, to koniecznie to zgłoście! W jakich praktycznych projektach można wykorzystać tę funkcję? Czy dostrzegasz jej ograniczenia?
Dodatek dla dociekliwych: jaką wartość średnią uzyskujemy w przedziale T dla różnych współczynników wypełniania w? w=0 (w-wypełnienie) T~2ms w=63 (w-wypełnienie) w=127 (w-wypełnienie) w=191 (w-wypełnienie) w=255 (w-wypełnienie) https://www.arduino.cc/en/tutorial/pwm 5 zadanie Podłącz czujnik opadów/wilgotności według poniższego schematu:
Arduino Uno Czujnik YL 83 5 V Vcc GND GND A7 A0 --- D0 obsługę wyjścia cyfrowego realizują tylko chętne osoby Na wyjściu analogowym czujnika A0 otrzymujemy informację o wartości napięcia, które jest proporcjonalne do rezystancji płytki. Kiedy jest sucho rezystancja pomiędzy ścieżkami jest duża (sygnał napięciowy wysoki ~ 5V - w cyfrowej reprezentacji jest to wartość 1023). Z każdą kroplą rezystancja pomiędzy elektrodami zmnijsza się i wartość sygnału npięciowego maleje. Zadania do realizacji: a. bazując na szablonie (szkicu) odczytu wartości analogowej (Plik->Przykłady->03.Analog -> AnalogInput) zrealizuj pomiar wilgotności. Zapoznaj się z budową programu. b. w funcji setup wpisz funkcję inicjalizacji portu szeregowego: Serial.begin(9600); // inicjalizacja portu szeregowego - transmisji do komputera Natomiast po odczycie z portu analogowego ( sensorvalue = analogread(sensorpin);) wpisz: Serial.println("Wartosc odczytana z sensora = "); // '\n' polecenie zapisu od nowej linii Serial.println(sensorValue); Wgraj program i uruchom monitor szeregowy (ikona lupy w prawym rogu).
Wilgotnym papierem dotknij sensora. Co zaobserwowałeś? W jakich granicach zmieniał się sygnał? c. bazując na kolejnym szablonie AnalogInOut (Plik->Przykłady->03.Analog -> AnalogInOut) zrealizuj ponownie pomiar wilgotności. Program ten odczytuje wartość z pinu analogowego i za pomocą funkcji: map(sensorvalue, 0, 1023, 0, 255) steruje (proporcjonalnie do wartości sygnału) portem cyfrowym, czyli wartości 0 portu analogowego opowiada wartość 0 portu cyfrowego, a wartości 1023 portu analogowego - wartość 255. d. Podłacz do wskazanego w programie portu cyfrowego diodę LED. e. Jeśli program działa poprawnie, odłącz Arduino od komputera i podłącz Power Bank. Umieść kilka kropel wody na czujniku i obserwuj działanie diody LED. Uwaga: zauważ, że mikrokontroler pracuje samodzielnie! NIe wymaga podłączenia do komputera. Jest to wszak mikrokomputer jednoukładowy. 5 zadanie Podłącz moduł cyfrowego czujnika temperatury i wilgotności DHT11 według poniższego schematu: 1. Ze strony ifd.uni.wroc.pl/~radwas/warsztaty/ ściągnij plik biblioteki: DHT-sensor-librarymaster i zapisz na komputerze.
2. W menu wybierz opcję: Szkic->Dołącz bibliotekę->dodaj bibliotekę.zip, a następnie wskaż na ściągnięty plik. 3. Uruchom program DHTtester dołączony wraz z biblioteką (Plik->Przykłady->DHT Sensor library->dhttester). 4. Upewnij się, że wyjście czujnika jest podłączone do portu wskazanego w programie. 5. Sprawdź, czy jest wybrany właściwy typ czujnika (ewentualnie usuń znak komentarza przy czujniku DHT: #define DHTTYPE DHT11 // DHT 11 ( Uwaga: ustaw komentarz przy czujniku, którego nie posiadasz.) 6. Załaduj program do Arduino i włącz monitor portu szeregowego. 7. Zapoznaj się z kodem programu. Jakie wielkości mierzy czujnik? Czy wymaga on kalibrowania?