Jak utworzyć menu na LCD za pomocą Arduino Uno

Jak utworzyć menu na LCD za pomocą Arduino Uno
Aby użyć mikrokontrolerów do wykonywania różnych zadań, najskuteczniejszym sposobem jest użycie płyt Arduino, ponieważ ułatwiają one interfejs z mikrokontrolerem. Arduino zapewnia użytkownikom wiele różnych tablic Arduino o różnych rodzajach mikrokontrolerów. Ponadto mikrokontrolery mogą być łączone z wieloma peryferyjami, takimi jak LCD i czujniki za pomocą płyt Arduino. Dzięki interfejsowi różnych urządzeń z Arduino możemy wykonać wiele projektów. Na przykład, jak tworzenie wentylatora kontrolowanego temperaturą, mierzenie temperatury, alarm przeciwpożarowy i wiele innych. Stworzyliśmy mały projekt tworzenia menu za pomocą Arduino IDE i wyświetlania tego menu na LCD. Ponadto podczas projektowania systemu zautomatyzowanego lub dowolnego systemu monitorowania można użyć menu.

Jak utworzyć menu za pomocą Arduino na LCD

Tworzenie menu za pomocą Arduino może być przydatne do wykonywania wielu zadań w razie potrzeby. Praktycznie widzimy użycie menu w naszych telefonach komórkowych lub dowolnym inteligentnym urządzeniu zdolnym do wykonywania określonych funkcji. Krótko mówiąc, menu jest listą opcji lub akcji, które można wykonać z odpowiednim urządzeniem, więc użyliśmy następującego sprzętu do tworzenia menu za pomocą Arduino na LCD:

  • Arduino Uno
  • Łączenie przewodów
  • Jeden potencjometr
  • Cztery przyciski naciśnięcia
  • Jedna dioda
  • Jeden wyświetlacz ciekłokrystaliczny (16 × 2)
  • Jeden brzęczyk
  • Jeden czujnik temperatury (LM35)

Schematy podano poniżej:

Zespół sprzętu do tworzenia menu za pomocą Arduino

Złożliśmy komponenty w taki sposób, że najpierw umieściliśmy wszystkie komponenty na tablicy chleba, a następnie za pomocą przewodów łączących każdy komponent jest połączony z Arduino. Opublikowaliśmy zdjęcie poniżej dla montażu sprzętu, za pomocą którego połączenia komponentów można łatwo zrozumieć.

Zielone przewody łączą szpilki danych LCD z Arduino, podczas gdy szare przewody łączą przyciski z Arduino. Czujnik temperatury jest bezpośrednio podłączony do Arduino bez żadnych przewodów łączących, ponieważ podłączanie przewodów czasami zniekształcają wyjście czujnika. Komponenty są zasilane za pomocą pinu 5 -woltowego Arduino.

Sekwencja przycisków jest wymieniona na powyższym obrazie.

Kod Arduino do tworzenia menu

Utworzyliśmy menu z trzema opcją pierwszą jest włączenie i wyłączenie diody LED, druga mierzy temperaturę, a trzeci brzmi alarm:

#include // biblioteka dla LCD
Liquidcrystal LCD (7,6, 5, 4, 3, 2); // szpilki Arduino dla LCD
int vcc = a0; // A0 Zasilanie pinów LM35
int vout = a1; // Pin A1 dla wyjścia LM35
int gnd = a2; // Pin A2 dla wyjścia LM35
zmienna zmienna; // do przechowywania wartości temperatury
Wartość zmiennoprzecinka; // przechowywanie wartości czujnika temperatury
Const Bajt UpButtonpin = 12; // Arduino Pin dla przycisku w górę
Const Bajte Downbuttonpin = 11; // szpilka Arduino dla przycisku w dół
Const Bajte w prawo Buttonpin = 10; // arduino pin do prawego przycisku
const bajte leftbuttonpin = 8; // arduino pin dla lewego przycisku
Const Bajte Buzzlerpin = 9; // szpilka Arduino dla brzęczyka
Const Byte Ledpin = 13; // arduino pin dla diody LED
Ciąg menuitems [] = // tworzenie ciągów opcji w menu
„Przełącznik LED”,
"Temperatura",
„Przełącznik brzęczyka”
;
Nieważne funkcje menu (int menu, bajt po prawej, bajt po lewej) / * Tworzenie funkcji opcji podanych w menu * /

if (menu == 1) // dla pierwszej opcji

if (right == 1) // Jeśli naciśnięty jest prawy przycisk

LCD.setCursor (0, 1); // Ustawienie miejsca dla danych na LCD
LCD.wydrukuj („off”); // Drukowanie opcji OFF
LCD.setCursor (10, 1); // Ustawienie miejsca dla danych na LCD
LCD.wydrukować (" <<");// move the cursor on the ON option
DigitalWrite (Ledpin, High); // Włącz diodę LED

if (po lewej == 1) // Jeśli naciśnię jest lewy przycisk

LCD.setCursor (0, 1); // Ustawienie miejsca dla danych na LCD
LCD.wydrukować <<");// printing the off option
LCD.setCursor (10, 1); // Ustawienie miejsca dla danych na LCD
LCD.wydrukuj („on”); // Drukowanie opcji ON
DigitalWrite (Ledpin, niski); // wyłączanie diody LED


if (menu == 2) // Jeśli wybrana jest druga opcja w menu

wartość = analogread (vout); // Odczyt wyjścia czujnika
temp = wartość*0.48; // Przekształcanie wartości analogowych w wartości temperatury
LCD.setCursor (0, 1); // Ustawienie miejsca dla danych na LCD
LCD.druk („Temperatura:”); // Wyświetlanie danych
LCD.SetCursor (12, 1); // Ustawienie miejsca dla danych na LCD
LCD.druk (temp); // wyświetlanie wartości temperatury

if (menu == 3) // Jeśli wybrana jest trzecia opcja

if (right == 1) // Jeśli naciśnięty jest prawy przycisk

LCD.setCursor (0, 1); // Ustawienie miejsca dla danych na LCD
LCD.wydrukować "); // Drukowanie opcji OFF
LCD.setCursor (10, 1); // Ustawienie miejsca dla danych na LCD
LCD.wydrukować (" <<");// move the cursor on the ON option
ton (brzęczen, 125); // Włącz brzęczyk

if (po lewej == 1) // Jeśli naciśnięty jest lewy przycisk

LCD.setCursor (0, 1); // Ustawienie miejsca dla danych na LCD
LCD.wydrukować <<");// move the cursor on the off option
LCD.setCursor (10, 1); // Ustawienie miejsca dla danych na LCD
LCD.drukuj („on”); // Drukowanie opcji ON
notone (brzęczen); // wyłącz brzęczyk



// Tworzenie szablonu menu
szablon /* zmienna dla nazwy opcji i rozmiaru menu* /
size_t menuitemsSize (t (&) [numerOFSIZE]) return numerOFSIZE; /* Nazwa opcji menu i liczba opcji*/
int numberOfMenuitems = menuitemsSize (menuitems) - 1;
int currentmenuitem = 0; // zmienna do przechowywania bieżącej opcji
int poprzednimenuitem = 1; // zmienna do przechowywania poprzedniej opcji
bajt button_flag = 0;
niepodpisane długie poprzednie Millis = Millis ();
// Funkcja konfiguracji
void Setup ()

pinmode (LEDPIN, wyjście); // Definiowanie trybu PIN dla LED
pinmode (VCC, wyjściowe); // Definiowanie trybu pinu dla pinu zasilającego dla czujnika
pinmode (vout, input); // Definiowanie trybu pinu dla pinu wyjściowego czujnika
Pinmode (GND, wyjściowe); // definiowanie trybu pinu dla bleń uziemienia czujnika
// definiowanie stanów dla pinów zaopatrzenia i uziemienia dla czujników
DigitalWrite (VCC, High); // daje wysokim stanu szpilki Arduino A0
DigitalWrite (GND, niski); // dając niskiemu stanowi arduino a2
pinmode (upbuttonpin, input_pullup); // przypisanie trybu przycisku input_pullup
pinmode (DownButtonPin, input_pullup);/*Przypisanie przycisku w górę input_pullup tryb*/
pinmode (prawybuttonpin, input_pullup);/*Przypisanie przycisku w górę input_pullup tryb*/
pinmode (leftbuttonpin, input_pullup); /*Przypisanie przycisku w górę input_pullup tryb*/
LCD.Rozpocznij (16,2); // inicjowanie wymiarów LCD
LCD.clear (); // usuwanie LCD
LCD.setCursor (0, 0); // Ustawienie miejsca dla danych do wyświetlenia na LCD
LCD.drukuj („Witamy”); // dane do wyświetlenia na LCD
LCD.setCursor (3, 1); // Ustawienie miejsca na wyświetlenie danych na LCD
LCD.drukuj („menu Arduino”); // dane do wyświetlenia na LCD
opóźnienie (6000); // czas, dla którego dane będą wyświetlane na LCD
LCD.clear (); // usuwanie LCD
LCD.setCursor (0, 0); // Ustawienie miejsca na wyświetlenie danych na LCD
LCD.Drukuj („Linuxhint.com "); // dane do wyświetlenia na LCD
opóźnienie (7000); // czas, dla którego dane będą wyświetlane na LCD
LCD.clear (); // usuwanie LCD

// Korzystanie z IF Warunki do zdefiniowania funkcjonalności każdego przycisku
Void Loop ()

if (DigitalRead (rightButtonPin) == Low && button_flag == 0)/ *Jeśli naciśnięty jest prawy przycisk */

funkcje menu (currentMenuitem + 1, 1, 0); // przesuń o jeden krok w prawo
button_flag = 1;
poprzednimillis = millis ();

if (DigitalRead (leftbuttonpin) == Low && button_flag == 0)/*Jeśli naciśnięty jest lewy przycisk*/

funkcje menu (CurrentMenuitem + 1, 0, 1);
button_flag = 1;
poprzednimillis = millis ();

if (DigitalRead (upbuttonpin) == Low && button_flag == 0) /*Jeśli przycisk w górę jest naciśnięty* /

++CurrentMenuitem;
if (currentMenuitem> numberOfMenuitems)

currentMenuitem = NumberOfMenuitems;

button_flag = 1;
poprzednimillis = millis ();

else if (DigitalRead (DownButtonPin) == Low && button_flag == 0) /*Jeśli przycisk w dół zostanie naciśnięty* /

CurrentMenuitem-;
if (currentmenuitem = 400)

poprzednimillis = millis ();
button_flag = 0;

Podsumowując działanie podanego powyżej kodu Arduino, możemy powiedzieć, że początkowo przypisaliśmy szpilki do LCD, czujnika temperatury, brzęczyka i przycisków. Następnie utworzyliśmy menu, mając niektóre opcje, takie jak przełączanie diody LED, wykrywanie temperatury i przełączanie brzęczyka.

Użyliśmy warunków IF dla każdej opcji, którą podaliśmy w menu, a następnie utworzyliśmy szablon do tworzenia menu i zdefiniowania niektórych zmiennych do zapamiętania opcji w menu.

W funkcji konfiguracji wszystkie piny Arduino są przypisywane ich trybie, a wymiar LCD jest inicjowany.

Przechodząc do funkcji pętli, zdefiniowaliśmy funkcjonalność każdego przycisku używanego w programie Arduino. Istnieją cztery przyciski, które są używane w tym programie: dwa to przyciski przełączające, a pozostałe dwa są używane jako przełącznik włączania/wyłączania dla podłączonych urządzeń.

Implementacja sprzętu do tworzenia menu za pomocą Arduino Uno

Obrazy wyjścia programu Arduino na sprzęcie są opublikowane w sekwencji przepływu kodu Arduino. Aby poruszać się po menu, naciśnij przyciski „Up” i „Down”, aby wykonać funkcje, naciśnij przyciski „lewe” i „prawe”.

Pierwszą opcją menu jest przełącznik LED:

Kiedy dioda LED jest poza stanem:

Po naciśnięciu prawego przycisku LED zostanie włączony:

Drugą opcją w menu jest temperatura:

Następną opcją jest przełączanie brzęczyka:

Gdy brzęczyk jest w stanie, gdy naciśnięty jest prawy przycisk:

Brzęczyk jest wyłączony po naciśnięciu lewego przycisku:

Wniosek

Stworzenie różnych projektów na poziomie początkującym lub zaawansowanym najbardziej wykonalnym sposobem, w jaki doszło do umysłu, jest korzystanie z platformy Arduino. Ta platforma zapewnia różnorodne opcje dla użytkowników na podstawie wymagań projektu. Podobnie ta platforma jest rodzajem kompletnego pakietu, ponieważ zapewnia zarówno rodzaje oprogramowania pomocy i sprzętu. Tak więc tworzenie projektów korzystających z Arduino daje szansę na naukę i zrozumienie różnych pojęć dotyczących obwodów. Opracowaliśmy również projekt tworzenia menu za pomocą płyty Arduino Uno i wyświetlania go na LCD 16 × 2.