[PROJEKT] Wskaźnik promieniowania ultrafioletowego – Arduino, wyświetlacz E-PAPER oraz czujnik UV

Gdy demo zostało wyświetlone prawidłowo, można przejść do pisania programu wyświetlającego indeks UV. Program pobiera wartość analogową z czujnika promieniowania ultrafioletowego (pin A0), sprawdza jaki indeks UV odpowiada odczytanej wartości i ostatecznie wyświetla przypisaną wartość indeksu na wyświetlaczu E-PAPER. Pomiar oraz wyświetlanie wyniku odbywa się tylko raz – przy uruchomieniu programu. Aby wyzwolić kolejny pomiar należy nacisnąć przycisk RESET na płytce KAmduino UNO lub odłączyć zasilanie i podłączyć je ponownie.

Pełen kod programu znajduje się w sekcji Do pobrania na końcu artykułu.

Na początku programu dołączane są biblioteki do obsługi interfejsu SPI i wyświetlacza E-PAPER. Definiowane są również zmienne do wybierania koloru wyświetlanego tekstu

Następnie w funkcji setup() ustawiana jest prędkość portu szeregowego oraz inicjalizowane jest działanie biblioteki. Gdy program nie wykryje podłączonego wyświetlacza, na port szeregowy zostanie wysłany komunikat „Inicjalizacja nieprawidlowa!„.

Czyszczona jest pamięć SRAM wyświetlacza oraz deklarowane są parametry potrzebne do prawidłowego wyświetlania tekstu oraz grafik na ekranie.

Następnie wyświetlany jest napis „MIKROKONTROLER.PL”. Jest on czarny (paint.Clear(UNCOLORED)), napisany czcionką font12 (dostępne są również czcionki font8, font12, font20 oraz font24). Umieszczono go centralnie w górnej cześć ekranu – pozycja x=35 (odsunięty od bocznej krawędzi o 32 pikseli), y=5 (odsunięty od górnej krawędzi o 5 pikseli).

Poniżej wyświetlony zostanie tekst „CZUJNIK UV”. Będzie on biały na czerwonym tle (paint.Clear(COLORED)), napisany czcionką font20.

Oraz ostatni tekst stały – „Indeks UV wynosi”. Będzie on czarny (paint.Clear(UNCOLORED)), napisany czcionką font16.

Teraz można przejść do pomiaru promieniowania ultrafioletowego. Wyjściem czujnika jest sygnał analogowy. Aby więc otrzymać interesujący nas indeks UV, należy przeliczyć zmierzoną wartość analogową według tabeli prezentowanej poniżej:

Rys. 5. Tabela do przeliczania wartości analogowej z czujnika promieniowania na wartość indeksu UV

Najpierw deklarujemy zmienne: indeks_UV oraz wartosc_analogowa. Funkcję do wyświetlania tekstu na wyświetlaczu E-PAPER przyjmuje tylko łańcuchy znaków. Potrzebna jest więc zmienna typu char – tekst[10].

Następnie do zmiennej wartosc_analogowa zapisywana jest wartość zmierzona na pinie A0, a na podstawie tej wartości określana jest wartość zmiennej indeks_UV (zgodnie z tabelą z rysunku 5).

Wartość z zmiennej indeks_UV jest zapisywana do tablicy tekst przy pomocy funkcji sprintf.

Ostatnim krokiem jest wyświetlenie wartości zmiennej indeks_UV na ekranie E-PAPER. Aby to zrobić, używany jest kod analogiczny jak przy poprzednich napisach z tą różnicą, że zamiast tekstu stałego, argumentem jest zmienna – tekst. Następnie wszystkie dane są wysyłane do wyświetlacza (epd.DisplayFrame()), a ekran zostaje wprowadzony w stan niskiego poboru energii (epd.Sleep()).

Działanie programu zostało pokazane na poniższych zdjęciach:

Rys. 6. Pomiar w słoneczny dzień wykonany o godzinie 12

Rys;. 7. Pomiar w tym samym dniu o godzinie 16

Do pobrania

O autorze