No to teraz jeszcze podnieśmy poprzeczkę i do naszego układu dodajmy diodę.
Założenie: Jeżeli wartość na przetworniku będzie większa niż 500 to dioda LED ma się zapalić, a jak będzie mniej niż 500 to dioda ma zgasnąć albo się w ogóle nie zapalać. Zatem musimy stworzyć dodatkową zmienną o nazwie „stanDiody” oraz zdefiniować dla łatwiejszego czytania programu nazwę diody. W moim przypadku to po prostu „dioda” i jest ona przypisana do pinu 10.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
#include <LiquidCrystal.h> //dodaj biblitekę LiquidCrystal.h int potencjometr = A0; //defniujemy pin A0 jako potencjometr int dioda = 10; //definiujemy pin 10 jako dioda int wartosc = 0; //definiujemy nową zmienną "wartosc" o wartosci poczatkowej 0 int stanDiody = 0; //definiujemy nową zmienną "stanDiody" o wartosci poczatkowej 0 LiquidCrystal lcd(3,4,5,6,7,8,9); //konfigurujemy ekran: //RS - pin 3 //RW -pin 4 //E - pin 5 //D4 - pin 6 //D5 - pin 7 //D6 - pin 8 //D7 - pin 9 void setup() { pinMode(dioda,OUTPUT); //ustaw dioda jako wyjście pinMode(potencjometr, INPUT); //ustaw potencjometr jako wejście lcd.begin(20,4); //ustaw rozdzielczość ekranu 20x4 lcd.clear(); //wyczysc ekran digitalWrite(dioda, LOW); } void loop() { lcd.clear(); //wyczysc ekran lcd.setCursor(0,0); //ustaw kursor w pozycji 0,0 (lewy górny róg ekranu) lcd.print("Hello World!"); //wyświetl napis Hello World! lcd.setCursor(0,2); //ustaw kursor w pozycji 0,2 (trzecia linijka) lcd.print("Wartosc A/C: "); //wyświetl napis "Wartosc A/C: " wartosc = analogRead(potencjometr); //zmiennej wartosc przypisujemy odczyt z A/C lcd.print(wartosc); //wyswietl na ekranie wartość zmiennej wartosc lcd.setCursor(0,3); //ustaw kursor w pozycji 0,3 (czwarta linijka) stanDiody = digitalRead(dioda); //przypisz zmiennej stanDiody odczyt wartości diody lcd.print("Stan diody: "); //wyświetl napis "Stan diody: " lcd.print(stanDiody); //wyswietl na ekranie wartość zmiennej stanDiody //--------------------- FUNKCJA WARUNKOWA ZAPALANIA DIODY ------------------------ if(analogRead(potencjometr) > 500) //jeżeli wartośc na przetworniku A/C będzie większa od 500 digitalWrite(dioda, HIGH); //to zaświeć diodę else //w przeciwnym wypadku digitalWrite(dioda, LOW); //zgaś diodę delay(18); //odczekaj 18ms } |
Teraz dopisujmy kolejną funkcję, dzięki której będziemy wyświetlać stan naszej diody. Jeżeli masz ekran tylko z dwoma wierszami to możesz spokojnie usunąć linijkę 33. i 34. i pozmieniać pozycje kursora (0,2) na (0,0) oraz (0,3) na (0,1). Postępujemy teraz jak poprzednio, czyli przypisujemy zmiennej stanDiody, odczyt cyfrowy pinu, do którego podłączyliśmy diodę oraz wyświetlamy na ekranie napis „Stan diody: ” i wysyłamy wartość zmiennej. Tyle odnośnie wyświetlania.
W tym momencie musimy utworzyć funkcję warunkową, dzięki której będziemy mogli zapalać lub gasić diodę według naszego założenia. Zatem przy pomocy funkcji if sprawdzamy, czy wartość przetwornika A/C przekroczyła 500. Jeżeli przekroczyła to zmieniamy stan diody na zapaloną. Funkcja else sprawdza warunek i odsyła do podprogramu w przypadku jego nie spełnienia. Czyli: Jeżeli wartość A/C nie przekroczyła 500 to nie zapalaj diody.
Po kompilacji programu powinniśmy uzyskać taki efekt jak na filmie poniżej:
4. Dodatkowe funkcje dla wyświetlacza LCD
Jako dodatek do tej części kursu pokaże jeszcze dodatkowe funkcje dla ekranu takie jakie mrygający kursor w dwóch wersjach oraz wygaszanie ekranu.
Mrygający kursor v1
Ten kursor pozostawia po sobie mała migające kreskę u dołu bloku ekranu.
1 2 3 |
lcd.noCursor(); //wyłącz kursor lcd.cursor(); //włącz kursor |
Przykład zastosowania:
1 2 3 4 5 6 7 8 9 10 11 |
void loop() { lcd.setCursor(0,0); //ustaw kursor w pozycji 0,0 (lewy górny róg ekranu) lcd.print("Hello World!"); //wyświetl napis Hello World! lcd.noCursor(); //wyłącz kursor delay(500); //odczekaj 0,5s lcd.cursor(); //włącz kursor delay(500); //odczekaj 0,5s } |
Efekt:
Mrygający kursor v2
Ten kursor natomiast mryga całym blokiem
1 2 3 |
lcd.noBlink(); //wyłącz kursor lcd.blink(); //włącz kursor |
Przykład zastosowania:
1 2 3 4 5 6 7 8 9 10 11 |
void loop() { lcd.setCursor(0,0); //ustaw kursor w pozycji 0,0 (lewy górny róg ekranu) lcd.print("Hello World!"); //wyświetl napis Hello World! lcd.noBlink(); //wyłącz kursor delay(500); //odczekaj 0,5s lcd.blink(); //włącz kursor delay(500); //odczekaj 0,5s } |
Efekt:
Wygaszanie ekranu
Przy pomocy tej funkcji możemy wygaszać ekran, aby nie świecił nie potrzebnie. Tą funkcje możemy nawet lekko rozbudować, tzn. podświetlanie ekranu możemy podłączyć pod jakiś pin Arduino i np. przy pomocy przycisku możemy wyłączać ekran i podświetlanie i po ponownym wciśnięciu uruchomić ponownie.
1 2 3 |
lcd.noDisplay(); //wygaś ekran lcd.display(); //zapal ekran |
Przykład zastosowania:
1 2 3 4 5 6 7 8 9 10 11 |
void loop() { lcd.setCursor(0,0); //ustaw kursor w pozycji 0,0 (lewy górny róg ekranu) lcd.print("Hello World!"); //wyświetl napis Hello World! lcd.noDisplay(); //wyłącz kursor delay(500); //odczekaj 0,5s lcd.display(); //włącz kursor delay(500); //odczekaj 0,5s } |
Efekt:
Materiały do dzisiejszej części:
Jeżeli chcesz być informowany na bieżąco o nowych częściach kursu to kliknij „Lubię to!” bądź subskrybuj naszą stronę, aby otrzymywać na adres e-mail nowości ze strony. Jeżeli masz jakieś pytania to śmiało zadawaj je na forum ; )