Zakres laboratorium:
- Zapoznanie z bibliotekami Arduino
- Obsługa LCD, pomiar temperatury – czujnik DS18B20
- Dioda RGB, zmiana kolorów
1. Zapoznanie z bibliotekami Arduino – program oscyloskopu
- stworzyć nowy program zgodny z koncepcją Arduino
- skonfigurować interfejs UART do pracy z prędkością 19200 (biblioteka “Serial”)
- podłączyć potencjometr do kanału pomiarowego analogowego A0, odczytać napięcie z tego pinu (funkcja “analogRead()”)
- odczytane napięcie wysłać na terminal, narysować wykres
2. Obsługa wyświetlacza LCD, pomiar temperatury czujnik DS18B20 – program termometru
- dodać kolejną funkcjonalność do poprzedniego programu
- do obsługi LCD, wykorzystać bibliotekę “LiquidCrystal”. Przykładowy kod poniżej:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2); void setup() { lcd.init(); lcd.backlight(); } void loop() { lcd.clear(); lcd.print("Hello!!!"); delay(1000); } |
- podłączyć czujnik DS18b20 – złącze na płytce “EduTar” oznaczone “DS_conn” – do wybranego pinu mikrokontrolera. Wybrany pin należy skonfigurować w programie, definicja preprocessora “ONE_WIRE_BUS”
- odczytać temperaturę i wyświetlić na wyświetlaczu LCD. Do odczytu temperatury można użyć następujący kod:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#include <OneWire.h> #include <DallasTemperature.h> #define ONE_WIRE_BUS 2 // Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs) OneWire oneWire(ONE_WIRE_BUS); // Pass our oneWire reference to Dallas Temperature. DallasTemperature sensors(&oneWire); void setup() { // DS18b20 Start up the library sensors.begin(); } void loop() { sensors.requestTemperatures(); // Send the command to get temperatures float tempC = sensors.getTempCByIndex(0); } |
3. Dioda RGB, zmiana kolorów
- Wykorzystać sygnał PWM do sterowania diodą RGB – co to jest za sygnał?
- W Arduino można użyć funkcji “analogWrite()”. Sprawdzić na jakich wyprowadzeniach można używać sygnału PWM.
- Dioda RGB ma wspólna anodę podłączoną do napięcia zasilania, jej wyprowadzane są dostępne na pinach “LED_R”, “LED_G”, “LED_B”. Każdy z pinów to osobna katoda diody RGB.
- W programie należy podawać sygnał PWM tak aby uzyskać efekt przełączającej się tęczy.
4. Program kolorowego czajnika elektrycznego
Na bazie poprzedniego programu utworzyć program naśladujący sygnalizację diodą RGB poziomu nagrzania wody w czajniku elektrycznym.
W zależności od symulowanej temperatury wody, dioda RGB powinna wskazywać barwą jej ciepła jak na rysunku poniżej.
temperaturę wyznaczyć za pomocą wzoru:
temp=Vx20, gdzie V to napięcie w woltach odczytane z potencjometru – należy podłączyć potencjometr,
więc dla napięcia 5.0V mamy 100 stopni, dla 3.0V-60stopni itd.
Napięcie i symulowaną temperaturę należy wyświetlać na wyświetlaczu LCD. Dodatkowo należy wyświetlać napis z opisem słownym o stanie wody (zimna, ciepła, gorąca, wrzątek), progi ustalić samodzielnie.
Zakres laboratorium 2017-2021 (nie aktualne)
Szybkie zapoznanie z STM32
Wykorzystać środowisko programistyczne: STM32CubeIDE 1.7.0
Do komunikacji z komputerem użyć program terminala: RealTerm
Zapoznać się z dokumentacją:
- STM32L432 – dokumentacja
- STM32L432 – rejestry
- STM32L432 – biblioteka HAL
Zadanie 1
- Skonfigurować płytkę Nucleo z mikrokontrolerem L432
- Zmienić nazwę pinu PB3 na LED
- Utworzyć program który będzie mrugał wybraną diodą LED (“HAL_GPIO_WritePin”, “HAL_Delay”)
Zadanie 2
- Zapoznać się z komunikacją UART – parametry podstawowe
- Uruchomić na komputerze program RealTerm i skonfigurować do pracy z mikrokontrolerem
- Utworzyć zmienną do przechowywania tablicy znaków o pojemności 50 znaków
- Utworzyć kod, który będzie, co 1 sekundę wysyłał na terminal komunikat: “Hello, to ja …” Zamiast “…” należy wstawić swój pomysł. Napisy powinny wyświetlać się w nowej linii terminala pod sobą.
Zadanie 3
- Zmodyfikować poprzedni program aby działał jak zegarek, wyświetlał ilość sekund od uruchomienia programu (jako podstawa czasu może być wykorzystana zmienna w pętli głównej niedementowana, co 1 sekundę)
- Do zbudowania napisu można zastosować funkcję “sprintf”