Zakres materiału:
- biblioteki arduino – link
- interfejs komunikacyjny UART – biblioteka Serial
- biblioteka do LCD – LiquidCrystal
- przetwornik analogowo-cyfrowy – biblioteka Analog
- kody ASCI (“ENTER” – Carriage Return) – link
Pytania wstępne:
- jak działa interfejs komunikacyjny UART? Jakie parametry transmisji należy ustawić w urządzeniu? jakie są potrzebne linie do transmisji?
- jak działa wyświetlacz LCD? Co oznacza, że ma rozmiar 2×16?
Zadanie 0:
1 2 3 4 5 6 7 8 9 10 |
#include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2); void setup() { lcd.init(); lcd.backlight(); lcd.print("Hello!!!"); } |
Uruchomić wyświetlacz LCD z przykładowym kodem znajdującym się powyżej.
Następnie napisać kod programu, który wyświetli imię/imiona autorów w pierwszej linii.
W drugiej linii wyświetlacza zaprogramować funkcję licznika, który liczy od 0-16.
Zadanie 1 (ocena 3):
Jak działa interfejs komunikacyjny UART? Jakie parametry transmisji należy ustawić w urządzeniu? jakie są potrzebne linie do transmisji?
Wykorzystać bibliotekę Serial i wysłać na terminal w Arduino napis: “Hello World!!! i”, gdzie i to licznik, jego wartość ulega zwiększeniu, co 1 sekundę.
Odebrać znak z terminala – ‘a’, który włączy diodę LED, ‘b’-wyłączy diodę LED.
Zadanie 2 (ocena 4):
Odebrać z terminala znaki i zrobić na ich podstawie menu z podprogramami:
- ‘a’ – program wysyła na terminal napis “Hello world”
- ‘b’ -włącza diodę LED, ponowne wysłanie znaku wyłączy diodę LED1
- ‘c’ – program prosi o podanie roku urodzenia osoby z terminala, po wpisaniu roku, następuje obliczenie ile dana osoba ma lat i wyświetlenie tej informacji na terminalu
- ‘d’ – uruchamia program działający w tle, mruga dioda LED2 z częstotliwością 1Hz, ponowne wysłanie znaku wyłączy program
- ‘?’ – wyświetla możliwe opcje z menu terminalu
wszystkie opcje z menu po wybraniu, wyświetlają na terminalu odpowiednie komunikaty.
Zadanie 3 (ocena 4.5):
Potencjometr należy podłączyć do wejść analogowych (Ax) przy mikrokontrolerze i do potencjometru – złącze “Pot_1”.
Dodać kolejną opcję:
- ‘e’ – dokonuje pojedynczego pomiaru analogowego na potencjometrze A_POT1-podłączyć do A0, wyświetla wartość w V na terminalu
- ‘f’ – dokonuje cyklicznego pomiaru (częstotliwość 1 Hz) na kanale A0, wciśnięcie ‘x’ kończy operację i wraca do menu
sprawdzić opcję rysowania wykresów w oprogramowaniu Arduino z trybem ‘f’. Do przygotowania wykresów należy wykorzystać wbudowaną w środowisko Arduino funkcję “Kreślarka”.
Zadanie 4 (ocena 5):
dla opcji z menu ‘c’,’e’, ‘f’ odpowiednie informacje są wyświetlane równocześnie na wyświetlaczu LCD. Np. Opcja ‘c’ wypisuje po dokonaniu obliczeń: “Twój wiek to: 24lata”, opcja ‘f’ wyświetla na LCD aktualne napięcie w formacie “Napięcie: 4.56V”
Wszystkie funkcje powinny działać równocześnie (bez blokowania programu na długich opóźnieniach).
Warto wykorzystać funkcję millis() i tworzyć opóźnienia w formie warunków.
Zakres laboratorium 2017-2021 (nie aktualne)
Zajęcia stacjonarne:
Zakres laboratorium:
- Przetwornik A/D
- Timer – generator sygnału PWM (link, link2)
- Regulator dwustawny (link)
- Regulator dwustawny z histerezą
- Regulator trójstawny
- Regulator PID(link)
Przed wysłaniem programu należy sprawdzić jego działanie dla wszystkich wykonanych regulatorów i w każdym zakresie ustawienia potencjometrów.
Czy program poprawnie reaguje na wartości ujemne itd.
Zastanowić się nad przykładami urządzeń, w jakich występują zaprezentowane regulatory, potrafić wymienić minimum 3 urządzenia dla każdego regulatora.
Zadanie 1 – ocena 3
Program realizujący funkcję woltomierza:
- podłączyć LCD, potencjometr (kanał A0) do mikrokontrolera
- podłączyć elementy i napisać program, gdzie mikrokontroler wykorzystuje przetwornik A/D do pomiaru napięcia i wyświetla je na wyświetlaczu LCD
- w pierwszej linii LCD wyświetlana jest wartość mierzonego napięcia w woltach i wartość od 0-100, proporcjonalnie odpowiadająca mierzonemu napięciu, 0V to 0, 2,5V to 50 itd.
Zadanie 2 – ocena 4
Program realizujący funkcję regulatora dwupołożeniowego bez histerezy i z histerezą oraz regulatora trójpołożeniowego:
- do programu z zadania 1 dodajemy:
- podłączyć 4 diody z linijki diodowej i nazwać je L1, L2,L3A i L3B
- tworzymy 3 funkcje, jedna funkcja to jeden regulator, funkcja przyjmuje parametr (uint8_t wartośćZadana, uint8_t wartoscRzeczywista)
- zadaniem każdej funkcji jest realizacja następującego działania:
- regulator dwupołożeniowy – realizuję działanie regulatora dwustanowego i wyświetla swoje stany na diodzie L1
- regulator dwupołożeniowy z histerezą – realizuję działanie regulatora dwustanowego z histerezą i wyświetla swoje stany na diodzie L2, histerezę ustawić na 0,5V
- regulator trójpołożeniowego – realizuję działanie regulatora trójpołożeniowego i wyświetla swoje stany na diodach L3A i L3B
- wartość zadana to wartość stała (ustawić połowę zakresu pomiarowego), a wartość rzeczywista to napięcie z potencjometru,
- jak działają poszczególne regulatory, jakie są ich wady i zalety?
Zadanie 3 – ocena 4,5
Do programu z zadania 2 dodajemy regulator PID:
- dodajemy funkcję, realizującą zdanie regulatora PID – przyjmuje takie same parametry jak pozostałe funkcje regulatorów
- w obecnym zadaniu działanie regulatora PID ograniczamy tylko do członu “P”,
- wyliczamy uchyb regulacji,
- uchyb przeliczamy przez współczynnik członu proporcjonalnego “Kp” i otrzymujemy wartość sterującą,
- wartość sterująca powinna być w zakresie 0-100, gdzie 50 to gdy uchyb wynosi 0 a pozostałe wartości są proporcjonalne i wypełniają cały zakres sterowania,
- wartość wyświetlamy na wyświetlaczu LCD w postaci: MOC:xxx%
Zadanie 4 – ocena 5
Do programu z zadania 3 dodajemy wyjście PWM ustawiane przez regulator PID:
- należy ustawić Timer1 do pracy w trybie PWM, należy wybrać odpowiedni tryb i skonfigurować układ licznikowy,
- funkcja PID z zdania 3 powinna sterować wypełnieniem sygnału PWM w zakresie 0-100,
- podłączyć do wyprowadzenia mikrokontrolera (tam gdzie będzie generowany sygnał PWM) miernik/oscyloskop – zapytać prowadzącego zajęcia o sprzęt
Zajęcia zdalne:
Dodatkowe materiały:
Podłączyć:
- 8 x dioda LED do portu D, wykorzystać linijkę diodową (LedBar)
- podłączyć klawiaturę do portu C (KeyPad) – klawiaturę należy zmodyfikować zgodnie z rysunkiem poniżej (ustawiamy zgodnie z parametrami po lewej stronie):
Zadania na symulatorze:
- napisać funkcję setLED(uint8_t led,uint8_t stan), gdzie led to numer diody od 1-8, a stan 1-dioda świeci 0 – dioda nie świeci,
- napisać funkcję getButton(), która zwraca numer przyciśniętego przycisku na klawiaturze z zakresu 1-12, oraz numer 13-16 dla dodatkowych przycisków. Informacje o obsłudze klawiatury matrycowej można znaleźć w zadaniu 4 z laboratorium 1.2,
- stworzyć program (wykorzystując stworzone funkcje), który po wciśnięciu przycisku 1-8 (z klawiatury spowoduje zaświecenie odpowiedniej diody), ponowne przyciśnięcie przycisku wyłączy diodę, dodatkowo “*” włącza wszystkie diody, “#” wyłącza wszystkie diod led.
Zaliczenie:
- kod programu i plik symulacji wysłać przez e-portal w odpowiednim terminie,
- zaprezentować działanie programu prowadzącemu.
Dodatkowe materiały:
Zadania na symulatorze:
- podłączyć klawiaturę do portu C (KeyPad) i zmodyfikować zgodnie z rysunkiem klawiatury:
- podłączyć wyświetlacz LCD według rysunku z paczki (pliki) i sprawdzić działanie przykładowego programu (po uruchomieniu w pierwszej linii LCD będą wyświetlać się kolejne cyfry),
- stworzyć program realizujący obsługę kalkulatora, umożliwiającego wprowadzanie liczb od 0-999, wykonującego działania dodawanie, odejmowanie, mnożenie oraz kasowanie obliczeń.
Zaliczenie:
- kod programu i plik symulacji wysłać przez e-portal w odpowiednim terminie,
- zaprezentować działanie programu prowadzącemu.