Spisu treści:

Menu Arduino w telefonie Nokia 5110 Lcd za pomocą enkodera obrotowego: 6 kroków (ze zdjęciami)
Menu Arduino w telefonie Nokia 5110 Lcd za pomocą enkodera obrotowego: 6 kroków (ze zdjęciami)

Wideo: Menu Arduino w telefonie Nokia 5110 Lcd za pomocą enkodera obrotowego: 6 kroków (ze zdjęciami)

Wideo: Menu Arduino w telefonie Nokia 5110 Lcd za pomocą enkodera obrotowego: 6 kroków (ze zdjęciami)
Wideo: testy z wyświetlaczem po nokii 3310 na sterowniki LPH7779 2024, Grudzień
Anonim
Image
Image
Menu Arduino w telefonie Nokia 5110 Lcd za pomocą enkodera obrotowego
Menu Arduino w telefonie Nokia 5110 Lcd za pomocą enkodera obrotowego

Drodzy przyjaciele, zapraszamy do kolejnego samouczka! W tym filmie dowiemy się, jak zbudować własne menu dla popularnego wyświetlacza LCD Nokia 5110, aby nasze projekty były bardziej przyjazne dla użytkownika i bardziej funkcjonalne. Zacznijmy!

To jest projekt, który zamierzamy zbudować. Na wyświetlaczu pojawia się proste menu, a za pomocą enkodera obrotowego mogę poruszać się w górę lub w dół i wybrać pozycję menu za pomocą przycisku enkodera obrotowego. Po naciśnięciu środkowego przycisku enkodera obrotowego pojawia się kolejny ekran i możemy zmienić wartość zmiennej. Jeśli ponownie wciśniemy przycisk enkodera obrotowego, wrócimy do ekranu głównego menu. Menu ma 6 pozycji i możemy przewijać menu w dół lub w górę, a pozycje na wyświetlaczu będą się odpowiednio zmieniać. Obejrzyj załączony film, aby zobaczyć dokładnie, jak działa to menu. Oczywiście możesz go zmodyfikować, aby zbudować własne, bardziej złożone menu, jeśli chcesz.

Zobaczmy teraz, jak zbudować ten projekt.

Krok 1: Zdobądź wszystkie części

Zdobądź wszystkie części
Zdobądź wszystkie części

Części potrzebne do zbudowania tego projektu to:

  • Arduino Uno ▶
  • Wyświetlacz LCD Nokia 5110 ▶
  • Enkoder obrotowy ▶
  • Mała tablica prototypowa ▶
  • Niektóre przewody ▶
  • Powerbank ▶

Koszt projektu jest bardzo niski, to mniej niż 10 dolarów. Linki do wszystkich użytych przeze mnie części znajdziesz w opisie filmu poniżej.

Krok 2: Wyświetlacz LCD Nokia 5110

Image
Image
Budowanie projektu
Budowanie projektu

Nokia 5110 to mój ulubiony wyświetlacz dla Arduino Projects.

Nokia 5110 to podstawowy graficzny ekran LCD, który pierwotnie miał służyć jako ekran telefonu komórkowego. Wykorzystuje kontroler PCD8544, który jest kontrolerem/sterownikiem LCD CMOS o niskiej mocy. Z tego powodu ten wyświetlacz ma imponujący pobór mocy. Używa tylko 0,4 mA, gdy jest włączony, ale podświetlenie jest wyłączone. W trybie uśpienia zużywa mniej niż 0,06 mA! To jeden z powodów, dla których ten wyświetlacz jest moim ulubionym. PCD8544 łączy się z mikrokontrolerami poprzez interfejs magistrali szeregowej. Dzięki temu wyświetlacz jest bardzo łatwy w obsłudze z Arduino. Wystarczy podłączyć 8 przewodów.

Przygotowałem szczegółowy tutorial jak używać wyświetlacza LCD Nokia 5110 z Arduino. Załączam ten film w tej instrukcji, dostarczy on przydatnych informacji na temat wyświetlacza, więc zachęcam do uważnego obejrzenia go. Koszt wyświetlacza to około 4 USD.

Możesz go pobrać tutaj: ▶

Krok 3: Enkoder obrotowy

Image
Image

Enkoder obrotowy, zwany także koderem wału, to urządzenie elektromechaniczne, które przekształca położenie kątowe lub ruch wału lub osi na kod analogowy lub cyfrowy. Enkodery obrotowe są używane w wielu aplikacjach, które wymagają precyzyjnego, nieograniczonego obrotu wału, w tym sterowania przemysłowego, robotyki, specjalnych obiektywów fotograficznych, komputerowych urządzeń wejściowych (takich jak optomechaniczne myszy i trackballe), kontrolowanych reometrów naprężeń i obrotowych platform radarowych.

Enkoder obrotowy, którego użyjemy w tym projekcie, jest bardzo niedrogim enkoderem. Posiada również wbudowany przycisk i do jego działania wystarczy podłączyć 5 przewodów. Przygotowałem szczegółowy samouczek dotyczący obsługi enkodera obrotowego. Ten film można znaleźć w załączeniu tutaj.

Koszt tego enkodera obrotowego jest bardzo niski. Kosztuje około 1,5 USD.

Możesz go pobrać tutaj ▶

Krok 4: Budowanie projektu

Image
Image
Budowanie projektu
Budowanie projektu
Budowanie projektu
Budowanie projektu

Połączmy teraz wszystkie części. Przed zbudowaniem tego projektu, jeśli nie korzystałeś w przeszłości z enkoderów obrotowych, zachęcam do obejrzenia przygotowanego przeze mnie tutoriala o enkoderach obrotowych. Pomoże Ci zrozumieć, jak działają enkodery obrotowe i zdobędziesz z nimi pewne doświadczenie. Ten film jest załączony tutaj.

Wyświetlacz umieściłem na takiej małej płytce stykowej. Najpierw podłączmy wyświetlacz. Pierwszy pin wyświetlacza, który jest Reset, trafia do cyfrowego pinu 3 Arduino Uno, drugi pin do cyfrowego pinu 4, trzeci pin do cyfrowego pinu 5, czwarty pin do cyfrowego pinu 11, a piąty do cyfrowego pinu pin 13. Następny pin to Vcc. Podłączamy Vcc do dodatniej szyny płytki stykowej, a szynę dodatnią płytki stykowej do wyjścia 3,3 V Arduino. Następny pin to Podświetlenie wyświetlacza. Ponieważ chcemy sterować nim za pomocą oprogramowania, podłączamy go do cyfrowego pinu 7. Ostatni pin to GND. GND podłączamy do ujemnej szyny płytki stykowej, a ujemną szynę płytki stykowej do Arduino GND.

Teraz wystarczy podłączyć enkoder obrotowy. Pierwszy pin to GND i łączymy go z szyną ujemną płytki stykowej. Następny pin to Vcc i podłączamy go do dodatniej szyny płytki stykowej. Następny pin to SW i podłączamy go do pinu analogowego 2. Następny pin nazywa się DT i podłączamy go do pinu analogowego 1. Na koniec pin CLK jest podłączony do pinu analogowego 0. Schemat ideowy tego projektu można znaleźć w opis filmu poniżej.

Teraz jesteśmy gotowi do uruchomienia projektu. Jak widać, projekt działa dobrze, a menu działa zgodnie z oczekiwaniami! Świetnie, zobaczmy teraz oprogramowanie projektu.

Krok 5: Kodeks Projektu

Kodeks Projektu
Kodeks Projektu

W tym projekcie korzystamy z 4 bibliotek. Używamy dwóch bibliotek do wyświetlacza i dwóch do enkodera obrotowego.

  1. Adafruit GFX:
  2. Nokia 5110:
  3. Biblioteka koderów:
  4. Biblioteka TimerOne:

Najpierw przyjrzymy się funkcji drawMenu. Ta funkcja odpowiada za rysowanie Menu na wyświetlaczu. Funkcja ta jest wywoływana co kilka milisekund, więc w przypadku zmiany w menu funkcja ta odpowiada za aktualizację menu na ekranie.

int menuitem = 1;int ramka = 1; wew strona = 1; int lastMenuItem = 1;

Istnieją również 3 bardzo ważne zmienne globalne, strona zmiennej, pozycja menu zmiennej i ramka zmiennej. Strona zmiennej zapamiętuje, który ekran interfejsu użytkownika jest wyświetlany na ekranie. Tak więc, jeśli zmienna strony wynosi 1, jesteśmy na głównym ekranie interfejsu użytkownika, a jeśli zmienna wynosi 2, jesteśmy na dodatkowym ekranie interfejsu użytkownika, gdzie ustawiamy wartość zmiennej. Pozycja menu zapamiętuje wybraną pozycję menu. Tak więc, jeśli jego wartość wynosi 1, wybierany jest pierwszy element menu, więc funkcja drawMenu musi narysować ten element menu jako czarny z białymi literami. Jeśli pozycja menu to 2, wybierana jest druga pozycja menu i tak dalej. Zmienna frame zapamiętuje, która część menu jest wyświetlana na ekranie. Ponieważ stworzone przez nas menu zawiera 6 pozycji i jednocześnie możemy wyświetlić tylko 3 z nich, musimy wiedzieć, które pozycje są wyświetlane na ekranie. Zmienna frame mówi nam dokładnie to. Jeśli zmienna frame ma wartość 1, wyświetlamy pierwsze trzy pozycje menu, jeśli jest 2, wyświetlamy pozycje 2, 3, 4 i tak dalej.

Starałem się, aby kod był jak najłatwiejszy do modyfikacji, więc stworzyłem kilka zmiennych globalnych, które przechowują nazwy pozycji menu. W ten sposób możesz łatwo tworzyć własne menu bez wyszukiwania w kodzie.

String menuItem1 = "Kontrast";String menuItem2 = "Głośność"; String menuItem3 = "Język"; String menuItem4 = "Trudność"; String menuItem5 = "Światło: WŁ"; String menuItem6 = "Resetuj";

podświetlenie logiczne = prawda;

wewn. kontrast=60; objętość całkowita = 50;

String language [3] = { "EN", "ES", "EL" };

int wybranyJęzyk = 0;

Trudność ciągu [2] = { "ŁATWE", "TRUDNE" };

int zaznaczone Trudność = 0;

Na początku inicjujemy wszystkie zmienne globalne, które są potrzebne w kodzie. Następnie inicjujemy wyświetlacz. W funkcji pętli najpierw wywołujemy funkcję drawMenu, aby narysować menu na ekranie. Następnie odczytujemy wartość z Rotary encoder i sprawdzamy, czy przycisk jest wciśnięty. Na przykład, jeśli jesteśmy na głównym ekranie interfejsu użytkownika i wybrana jest pierwsza pozycja menu, jeśli wartość z enkodera obrotowego wzrosła, zmienna menuitem wzrasta iw następnej pętli funkcja drawMenu narysuje drugą pozycję menu jako wybraną. Jeśli teraz naciśniemy przycisk enkodera obrotowego, przechodzimy do drugiej strony, gdzie ustawiamy wartość zmiennej. Ponownie za pomocą enkodera obrotowego możemy zwiększyć lub zmniejszyć wartość zmiennej. Jeśli naciśniemy przycisk, nawigujemy z powrotem do strony menu głównego, a zmienna strony zmniejsza się.

To podstawowa idea tego menu. Postępujemy według tej samej procedury dla wszystkich pozycji menu i stron. Kod jest złożony, ma ponad 400 linii. Wydaje się to skomplikowane, ale jeśli sam spróbujesz, łatwiej to zrozumiesz i będziesz mógł to zmienić, rozbudować i wykorzystać we własnych projektach. Jak zawsze kod znajdziesz tutaj.

Krok 6: Testowanie projektu

Testowanie projektu
Testowanie projektu

Jeśli wczytamy kod, zobaczymy, że projekt działa zgodnie z oczekiwaniami. Możemy poruszać się po menu w górę iw dół za pomocą wałka i możemy wybrać dowolną pozycję menu, naciskając przycisk obrotowego enkodera. Jakie to jest świetne!

Teraz, gdy wiemy, jak budować menu dla wyświetlaczy LCD Nokia 5110, możemy dodać więcej funkcji do naszych projektów i uczynić je bardziej przyjaznymi dla użytkownika. To proste menu, które dzisiaj zbudowaliśmy, można jednak ulepszyć. Moglibyśmy używać przerwań zamiast ciągłego sprawdzania stanów przycisków. W ten sposób możemy zmniejszyć zużycie energii przez projekt i sprawić, że kod będzie czystszy. Wkrótce przygotuję film o przerwaniach, więc bądźcie czujni. Chętnie poznam Twoją opinię na temat tego projektu menu. Czy uważasz to za przydatne i czy planujesz użyć menu w dowolnym swoim projekcie. Prześlij swoje przemyślenia i pomysły poniżej, dzięki!

Zalecana: