Zakres laboratorium:
- Wyświetlacz LCD – interfejs I2C – program “Hello World”
- Zegarek z budzikiem na LCD – podstawa czasu z przerwania
- Przetwornik ADC – pomiar napięcia
- Cykliczny pomiar napięcia z wykorzystaniem przerwań, uśrednianie pomiaru
1. Wyświetlacz LCD – interfejs I2C – program “Hello World”
Zapoznać się z obsługa wyświetlacza LCD. Ściągnąć paczkę z przykładowym programem: LCD_I2C
Jak wyświetlać napisy, liczby, obsługiwać dwie linie itd.
Utworzyć program, który ma podłączone dwa przyciski:
- pierwszy przycisk zwiększa liczbę o 1
- drugi przycisk zmniejsza liczbę o 1
- liczba jest z zakresu -100 – 100
- liczba ma być wyświetlana na wyświetlaczu LCD
- przyciski powinny działać płynnie i przewidywalnie (drgania styków)
2. Zegarek z budzikiem na LCD – podstawa czasu z przerwania
Utworzyć program, który będzie realizował funkcje budzika:
- w pierwszej linii wyświetlacza prezentowany jest przykładowy czas (czas zapisujemy w kodzie programu jako stałą wartość) w formacie: 12:05:19
- czas, sekundy są odliczane precyzyjnie z wykorzystaniem przerwania wewnętrznego od układu licznikowego(wybrać i skonfigurować Timer, obsłużyć przerwanie)
- w drugiej linii wyświetlacza pokazywany jest czas budzika, jeśli czas budzika pokryje się z czasem aktualnym to uruchamiany jest sygnał alarmowy
- sygnał alarmowy działa na buzerze (do testów można wykorzystać diodę LED), wyłączenie budzika następuje z użyciem przycisku
- czas budzika możemy ustawiać za pomocą przycisków lub impulsatora (do wyboru jedna forma)
3. Przetwornik ADC – pomiar napięcia
Co to jest przetwornik ADC? Jak działa? Co oznacza, że przetwornik jest 10-bitowy? Co to jest napięcie referencyjne przetwornika?
Wykonać kolejne polecenia:
- podłączyć zadajnik napięcia pin “A_Pot1″do pinu pomiarowego mikrokontrolera PC0 (kanał pomiarowy ADC0)
- przygotować funkcję “ADC_init()” w której dokonana będzie konfiguracja przetwornika A/D na podstawie dokumentacji mikrokontrolera:
- Rejestr ADMUX bity: REFS0:1 – konfiguracja napięcia referencyjnego – wybrać napięcie AVCC
- Rejestr ADCSRA bity: ADPS0:2 – konfiguracja podzielnika częstotliwości dla układu przetwornika (częstotliwość sygnału taktującego) – ustawić aby częstotliwość była mniejsza
niż 150KHz - Rejestr ADCSRA bit: ADEN – uruchomienie układu przetwornika
- Rejestr ADMUX bity: MUX0:4 – konfiguracja/wybór kanału/pinu na którym będzie dokonywany pomiar – wybrać ADC0 – odpowiada pinowi PC0
- przygotować funkcję “uint16_t ADC_10bit()” – zwraca zmierzone napięcie:
- Rejestr ADCSRA bit: ADSC – uruchomienie pojedynczego pomiaru – ustawienie bitu
- Rejestr ADCSRA bit: ADSC – oczekiwanie na zakończenie pomiaru – oczekiwanie na wyzerowanie bitu – np. “loop_until_bit_is_set”,”loop_until_bit_is_clear”
- Rejestr ADC – przechowuje wynik pomiaru – wartość jaką ma zwrócić funkcja
Funkcja “ADC_10bit()” zwraca liczbę z zakresu 0-1023 odpowiadającą zmierzonemu napięciu zgodnie z działaniem przetwornika A/D. 0 to napięcie 0V a 1023 to napięcie “AVCC”, czyli 5V, więc dokładność pomiaru wynosi około 5V/1023= 0.00488V. Inne wartości napięcia są proporcjonalne.
Uruchomić funkcje i sprawdzić czy wszystko działa:
- wartość zmierzonego napięcia (wartość zwracaną przez funkcję “ADC_10bit()”) wyświetlić na wyświetlaczu LCD w pierwszej linii
- przeliczyć wartość z przetwornika ADC na V i wyświetlić w drugiej linii wyświetlacza w postaci: Napięcie: 2.56V
- funkcja sprintf z Arduino nie wyświetla liczby zmiennoprzecinkowych, należy zaproponować własne rozwiązanie problemu
4. Pomiar napięcia z większej liczby kanałów, czujnik natężenia światła -automatyczny włącznik zmierzchowy
Zadania I:
- podłączyć sygnał analogowy z czujnika natężenia światła (fotorezystor) “A_photo” do pinu mikrokontrolera PC1 (kanał pomiarowy ADC1)
- zmodyfikować program tak aby obsługiwał pomiar z dwóch kanałów, utworzyć funkcję adcChannel1() i adcChannel1() , które dokonują pomiaru i zwracają wyniki pomiarów
- pomiary wyświetlić w pierwszej linii wyświetlacza
Zadanie II – automatyczny włącznik zmierzchowy:
- napisać program, który realizuje funkcję automatycznego włącznika zmierzchowego
- wykorzystać fotorezystor, który będzie pełnił funkcję czujnika światła
- próg działa/włączenia światła ustawiamy przy użyciu potencjometru 1
- symulatorem światła jest włączenie/wyłączenie diody LED i wyświetlenie odpowiedniego napisu na wyświetlaczu LCD w drugiej linii
- załączenie/wyłączenie światła powinno odbywać się przy użyciu wyłącznika z histerezą (opis jak działa histereza można znaleźć na stronie link)