Cześć,
dzisiaj chcemy Wam pokazać, jak w prosty sposób obsługuję się wyświetlacz od Nokii 3310 albo 5110 na sterowniku PCD8544. Zapraszamy !
Spis treści:
- Specyfikacja wyświetlacza
2.Podstawowe funkcje
3.Wyświetlanie tekstu i zmiennych
Co będziemy potrzebować:
- 1x Wyświetlacz 5110/3310
- 1x Arduino
- 1x 74HC4050
- 1x czujnik temperatury DS18B20
- 1x zestaw przewodów połączeniowych
- Bilbioteki Adafruit
1. Specyfikacja wyświetlacza
- Rozdzielczość:48px x 84px
- Sterownik: Philips PCD8544
- Napięcie zasilania: 3,3V
- Poziom napięć logicznych: 3,3V
2. Podstawowe funkcje:
Informujemy kompilator z jakich bibliotek chcemy korzystać:
1 2 3 |
#include <SPI.h> //dodaj bilbiotekę SPI #include <Adafruit_GFX.h> //dodaj podstawową bibliotekę graficzną #include <Adafruit_PCD8544.h> //dodaj bilbiotekę obsługującą LCD 5110 |
Następnie podajemy do jakich pinów podłączamy wyświetlacz:
1 |
Adafruit_PCD8544 display = Adafruit_PCD8544(SCLK, DIN, D/C, CS, RST); |
void setup():
1 2 3 |
display.begin(); //uruchom ekran display.setContrast(50); //ustaw kontrast display.clearDisplay(); //wyczyść bufor ekranu |
Tak jak komentarze wskazują, czyli najpierw informujemy, że chcemy korzystać z LCD, następnie podajemy wartość kontrastu napisów względem tła, czyli 50% i to jest „najciemniejsza” wartość napisów. Na końcu czyścimy ekran. Czyszczenie ekranu warto również wstawić na początek pętli głównej programu.
void loop():
Ustawiamy wielkość czcionki (1 = najmniejsza)
1 |
display.setTextSize(1); //ustaw rozmiar czcionki na 1 |
Ustawiamy kolor czcionki (w przypadku wyświetlacza monochromatycznego nie mamy innego wyjścia niż czarny)
1 |
display.setTextColor(BLACK); //ustaw kolor tekstu na czarny |
Dopisując na początku WHITE, otrzymamy białe napisy w czarnych obwódkach
1 |
display.setTextColor(WHITE,BLACK); |
Możemy również obracać wyświetlany tekst
1 2 |
display.setRotation(X); X- wartości 0-3, gdzie zero to standardowe położene |
Abyśmy mogli cokolwiek wyświetlić to musimy podać ekranowi, w którym miejscu chcemy tego dokonać:
1 |
display.setCursor(3,5); //ustaw kursor w pozycji 3 kolumna 5 wiersz |
Należy pamiętać, że przy tej funkcji najpierw podajemy, w której kolumnie chcemy wyświetlić, a następnie, w którym wierszu.
Teraz przejdźmy do wyświetlania tekstu. W taki sposób wyświetlamy napis: (w tym przypadku feriar-lab.pl)
1 |
display.print("feriar-lab.pl"); |
W taki sposób zmienną:
1 |
display.print(temperatura); |
Aby wyświetlać w nowej linii, piszemy println zamiast print. Zupełnie jak dla UART.
Wyżej podane funkcje tylko wskazują ekranowi, gdzie co ma wyświetlić. Żeby ekran zapalił odpowiadające piksele to musimy zakończyć pętlę funkcją:
1 |
display.display(); |
I to tak na prawdę wszystko, aby móc wyświetlać tekst i zmienne. Teraz przejdźmy do programu.
3.Wyświetlanie tekstu i zmiennych
Schemat:
Pinout 74HC4050:
Układ 74HC4050 potrzebny jest w tym przykładzie po to aby obniżyć poziomy napięć występujących w Arduino. Ponieważ wyświetlacz nie toleruje sygnałów 5V to cały układ, w przypadku Arduino Pro Mini można zasilać z 3V i nie ma potrzeby obniżania poziomów napięć, natomiast dla Arduino UNO trzeba zastosować takie obniżenie, ponieważ jak zasilamy z USB nasze Arduino to dostaje ono 5V, czyli sygnały z niego też będą 5V. Układ 74HC4050 musi być zasilany napięciem 3,3V
Program:
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 57 58 59 60 61 62 63 64 65 66 67 |
#include <SPI.h> //dodaj bilbiotekę SPI #include <Adafruit_GFX.h> //dodaj podstawową bibliotekę graficzną #include <Adafruit_PCD8544.h> //dodaj bilbiotekę obsługującą LCD 5110 #include <OneWire.h> //dodaj biblitekę OneWire #include <DallasTemperature.h> //dodaj biblitekę obsługującą DS18B20 int bcl = 9; //podświetlanie ekranu do pinu 9 (PWM) int one_wire = 10; //Transmisja 1-Wire na pinie 10 int i,jasnosc; Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3); //podłączamy ekran do pinów SCLK,DIN,DC,CS,RST OneWire oneWire(one_wire); //wywołujemy transmisję 1-Wire na pinie 10 DallasTemperature sensors(&oneWire); //informujemy Arduino, ze przy pomocy 1-Wire //chcemy komunikowac sie z czujnikiem void setup() { pinMode(bcl, OUTPUT); //ustaw pin podświetlania ekranu jako wyjście display.begin(); //uruchom ekran display.setContrast(50); //ustaw kontrast display.clearDisplay(); //wyczyść bufor ekranu sensors.begin(); //rozpocznij odczyt z czujnika } void loop() { i=i+25; //dodawaj do i 25 jasnosc = map(i,0,250,0,100); //przeskalujmy wartość PWM na wartość procentową sensors.requestTemperatures(); //zazadaj odczyt temperatury z czujnika display.clearDisplay(); //wyczyść bufor ekranu display.setTextSize(1); //ustaw rozmiar czcionki na 1 display.setTextColor(BLACK); //ustaw kolor tekstu na czarny display.setCursor(3,5); //ustaw kursor w pozycji 3 kolumna 5 wiersz display.print("feriar-lab.pl"); //wyświetl "feriar-lab.pl" display.setCursor(5,20); //ustaw kurs w pozycji 5 kolumna 20 wiersz display.print("Temp: "); //wyświetl "Temp: " display.setCursor(34,20); //ustaw kursor w pozycji 34 kolumna 20 wiersz display.print(sensors.getTempCByIndex(0));//wyświetl odczytaną temperaturę z czujnika display.print((char)247); //wyświetl znak stopnia display.print("C"); //.... display.setCursor(6,35); display.print("Jasnosc: "); display.setCursor(54,35); display.print(jasnosc); //wyświetl wartość zmiennej jasność display.print("%"); display.display(); //wyświetl to co podaliśmy wyżej analogWrite(bcl,i); //ustaw jasność podświetlania na podstawie zmiennej i if(i>= 250) //jeżeli i większe bądź równe 250 { i=50; // przypisz i wartość 50 } } |
Na początku informujemy Arduino na jakich pinach będzie podłączony wyświetlacz. Następnie w setup() uruchamiamy wyświetlacz, ustawiamy kontrast oraz czyścimy bufor sterownika ekranu. W pętli głównej programu tworzymy funkcję, która będzie do zmiennej „i” dodawać 25. W ten sposób zwiększamy jasność ekranu o 10%. Teraz przy pomocy funkcji map() skalujemy wartość PWM na wartość procentową podświetlenia i przypisujemy tą wartość zmiennej jasnosc. Następnie żądamy wykonania odczytu z czujnika temperatury. Od tego momentu zaczynamy obsługę ekranu. Na samym początku czyścimy bufor oraz ustawiamy wielkość czcionki na 1. Ustawiamy kolor czcionki na czarny i ustawiamy kursor w pozycji (3,5) co odpowiada 3 kolumnie i 5 rzędowi. W tym miejscu wyświetlamy napis feriar-lab.pl. Następnie przechodzimy do pozycji (5,20) i wyświetlamy napis „Temp: „. W tym samym rzędzie, ale innej kolumnie wyświetlamy wartość, temperatury. Jeżeli chcemy dopisać coś obok to nie musimy ręcznie ustawiać kursora. Wystarczy, że po prostu napiszemy w nowej linii co chcemy wyświetlić, w tym przypadku jest to znak stopnia oraz „C„. Tym samym sposobem robimy dla napisu „Jasność” oraz wyświetlenia wartości procentowej podświetlenia ekranu. Na samym końcu wykonujemy funkcję analogWrite(), aby ustawić wartość dla podświetlenia ekranu ze zmiennej i. Na końcu- aby wartość PWM nie rosła w nieskończoność – ustawiamy, aby przy uzyskaniu wartości większej bądź równej 250, wartość podświetlenia spadła do 50 (czyli 20%). Tak przygotowany program wgrywamy i powinniśmy otrzymać taki efekt jak na filmie niżej:
W dzisiejszym poradniku przedstawiliśmy najprostszy sposób na obsługę wyświetlacza od popularnej nokii 3310 lub 5110. Mamy nadzieję, że ta część kursu się przyda oraz zapraszamy na następne w przyszłości ;)
Materiały do tej części kursu:
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 ; )