Spisu treści:
Wideo: Arduino UNO (tworzenie menu i funkcji): 4 kroki
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:30
W tej instrukcji będziemy badać, jak tworzyć menu, odczytywać temperaturę z czujnika TC74A0 i wyświetlać „wartości” (w tym przypadku numery telefonów komórkowych) w sposób, który jest nieskończony, ale ograniczony do wbudowanej pamięci arduino.
Będziemy używać
- Tablice
-Wyświetlacz ciekłokrystaliczny
-Klawiatura
Instrukcja obsługi zawarta w ostatnim kroku.
Krok 1: Komponenty
Arduino Uno
· Klawiatura 4x4
· Cyfrowy czujnik temperatury TC74A0
· Moduł LCD I2c 16x2
· Wyświetlacz ciekłokrystaliczny 16x2
· Przewody połączeniowe
· Deska do krojenia chleba
· Komputer osobisty
· Arduino IDE
· Kabel przesyłowy
Krok 2: Okablowanie komponentów
CZUJNIK TEMPERATURY I LCD PODŁĄCZONE NA TEJ SAMEJ LINII DO SDA I SCL (A4, A5)
LCD (moduł I2c)
o SDA do A5 na Arduino
o SCL do A4 na Arduino
o VCC do 5V na Arduino
o GND do GND na Arduino
· Klawiatura 4x4
o Pin 1 – 8 na klawiaturze podłączony odpowiednio do pinu 9 – 2 na Arduino
Czujnik temperatury TC74A0
o TC74A0 pin 2 do SDA na Arduino
o TC74A0 pin 3 do GND na Arduino
o TC74A0 pin 4 do SCL na Arduino
o TC74A0 pin 5 do 5V na Arduino
Krok 3: Kod
#include //Zawiera biblioteki podczas kompilacji
#włączać
#włączać
#define Długość_hasła 5
#define Długość_komendy 3
#define numer komórki 10
użytkownicy int = 0;
int Wyświetlacz = 0;
wewn adres= 72; //tc74a0 ADRES
int I = 0;
int UŻYTKOWNIK;
int X = 0;
int XY = 0;
temp. wewn;
int tempPr = 0;
znak userNum[10][10] = {{}, {}, {}};
char Dane[Długość_hasła];
char Mistrz[Długość_Hasła] = "5466"; //HASŁO
char Dane wyjściowe[Długość_komendy]; //
char Master1[Command_Lenght] = "**";//
znak MenuItem;
char CELLArrayA[10];
char CELLArrayB[10];
char CELLArrayC[10];
stały bajt ROWS = 4; //cztery rzędy
stały bajt COLS = 4; //cztery kolumny
bajt wierszPins[ROWS] = {5, 4, 3, 2};
bajt colPins[COLS] = {9, 8, 7, 6};
bajt licznik_danych = 0, licznik_główny = 0;
bool Pass_is_good;
LiquidCrystal_I2C lcd (0x26, 16, 2);
char hexaKeys[WIERSZE][COLS] = //INICJOWANIE KLAWIATURY
{
{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}
};
Klawiatura customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
pusta konfiguracja()
{
Serial.początek(9600); //to tworzy monitor szeregowy
Wire.początek(); //to tworzy obiekt Wire
lcd.początek(16, 2);
podświetlenie LCD();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Proszę czekać 3"); //EKRAN WCZYTYWANIA
opóźnienie (1000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Proszę czekać 2");
opóźnienie (1000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Proszę czekać 1");
opóźnienie(300);
lcd.clear();
String myString = "INSTRUKCJA ARDUINO";
lcd.setCursor(2, 2);
lcd.print(mójCiąg);
opóźnienie(2500);
for(int scrollCounter=0;scrollCounter<24;scrollCounter++)
{
lcd.scrollDisplayLeft();
opóźnienie(300);
}
lcd.clear();
lcd.print("Wprowadź hasło");
}
pusta pętla()
{
przełącznik(Wyświetlacz) //GDZIE W MENU GŁÓWNYM JESTEŚMY
{ //CZY UŻYTKOWNIK NACIŚNIŁ A, B, C, D
przypadek 0:
{
Hasło();
}
przerwa;
przypadek 1:
{
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("ABCD");
lcd.setCursor(0, 0);
lcd.print("Menu główne");
Wyświetlacz = 2;
opóźnienie (100);
przerwa;
}
przypadek 2:
{
char customKey = customKeypad.getKey();
przełącznik (klucz niestandardowy)
{
przypadek „A”:
{
Serial.println("A został naciśnięty");
Użytkownik Sklepu();
przerwa;
}
przypadek „B”:
{
Serial.println("B został naciśnięty");
jeśli (użytkownicy == 0) {
lcd.clear();
lcd.print("BRAK ZAPISANYCH UŻYTKOWNIKÓW");
opóźnienie(3000);
lcd.clear();
Wyświetlacz = 1;
przerwa;
}
Wyświetlani Użytkownicy(); przerwa;
}
przypadek „C”:
{
Serial.println("C został naciśnięty"); //UŻYWANE PODCZAS TESTÓW
wewn wew = 0;
podczas (!ext) {
char ch;
temp = TempMenu();
if (temp != tempPre) {
lcd.clear();
lcd.print("Temperatura");
lcd.setCursor(0, 1);
lcd.print(temp);
lcd.print("C");
tempPr = temp;
opóźnienie (500);
}
ch = customKeypad.getKey();
if (ch == '*') //WYJŚCIE Z MENU TEMPERATURA (jeśli * NACIŚNIĘTY)
{
zewn = 1;
lcd.clear();
Wyświetlacz = 1;
}
}
przerwa;
Menu Temp();
przerwa;
}
przypadek „D”:
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("NUA PRAC");
lcd.setCursor(0, 1);
lcd.print("JB SCHOEMAN");
opóźnienie(3000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("MAJ 2019");
lcd.setCursor(0, 1);
lcd.print("CC OOSTHUIZEN");
opóźnienie(3000);
lcd.clear();
Wyświetlacz = 1;
}
}
}
}
}
// NIESTANDARDOWE FUNKCJE WYWOŁYWANIA WARTOŚCI LUB PROCEDUR
nieważne hasło()
{
char customKey = customKeypad.getKey();
if (customKey) // upewnia się, że klawisz jest faktycznie naciśnięty, równy (customKey != NO_KEY)
{
Dane[liczba_danych] = klucz niestandardowy; // przechowuj znak w tablicy danych
lcd.setCursor(liczba_danych, 1); // przesuń kursor, aby pokazać każdy nowy znak
lcd.print("*"); // drukuj znak we wspomnianym kursorze
liczba_danych++; // zwiększ tablicę danych o 1, aby zapisać nowy znak, śledź również liczbę wprowadzonych znaków
}
if(data_count == Password_Lenght-1) // jeśli indeks tablicy jest równy liczbie oczekiwanych znaków, porównaj dane z wzorcem
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Hasło to ");
if(!strcmp(Dane, Master)) // równe (strcmp(Data, Master) == 0)
{
lcd.print("Dobry");
lcd.clear();
Wyświetlacz = 1;
}
w przeciwnym razie
lcd.print("Zły");
delay(1000);// dodano 1 sekundę opóźnienia, aby upewnić się, że hasło jest w całości wyświetlane na ekranie, zanim zostanie wyczyszczone.
lcd.clear();
Wyczyść dane();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Wprowadź hasło");
}
}
int Menu Temp()
{
Wire.beginTransmisja(adres);
Wire.write(0);
Wire.endTransmission();
Wire.requestFrom(adres, 1);
while (Wire.available() == 0);
int c = Wire.read();
powrót c;
}
nieważne wyczyść dane()
{
while(liczba_danych !=0)
{ // Może to być użyte dla dowolnej wielkości tablicy, Dane[liczba_danych--] = 0; //wyczyść tablicę dla nowych danych
}
}
nieważny użytkownik sklepu()
{
wewn wew = 0;
użytkownik wewnętrzny;
char ch;
podczas (!ext) {
lcd.clear();
lcd.print("Wprowadź użytkownika");
użytkownik = użytkownicy + 1;
lcd.print(użytkownik);
int x = 0;
podczas gdy (!x) {
dla (int i = 0; i < 10; i++) {
ch = customKeypad.waitForKey();
lcd.setCursor(i, 1);
lcd.print(ch);
numer_użytkownika[użytkownik - 1] = ch;
}
opóźnienie (500);
lcd.clear();
lcd.print("Kontynuuj");
lcd.setCursor(0, 1);
lcd.print("* tak # nie");
ch = customKeypad.waitForKey();
jeśli (ch == '*') {
x = 1;
}
if (ch == '#') {
x = 1;
zewn = 1;
lcd.clear();
Wyświetlacz = 1;
}
}
użytkownicy++;
}
}
nieważni WyświetlaniUżytkownicy()
{
lcd.clear();
for (int i = 0; i < użytkowników; i++) {
lcd.print("Zapisany użytkownik");
lcd.print(i + 1);
for (int u = 0; u < 10; u++) {
lcd.setCursor(u, 1);
lcd.print(numer_użytkownika[u]);
}
opóźnienie (2000);
lcd.clear();
Wyświetlacz = 1;
}
}
Krok 4: PODRĘCZNIK UŻYTKOWNIKA
1. Po włączeniu projektu pojawi się ekran ładowania lub powitania.
2. Pojawi się ekran „Wprowadź hasło”, który umożliwia wprowadzenie 4 znaków, liter lub cyfr, prawidłowe hasło to: 5466, co umożliwi dostęp do menu głównego.
3. Po wprowadzeniu prawidłowego hasła pojawi się menu główne z 4 możliwymi opcjami nawigacji po różnych dostępnych funkcjach.
· A – Wprowadź numery telefonów komórkowych użytkownika.
o Wprowadź 10 cyfr, aby zapisać użytkownika w systemie
o Po wprowadzeniu 10 cyfr naciśnij „*”, aby dodać więcej użytkowników, lub naciśnij „#”, aby wrócić do menu głównego
· B – Wyświetl zapisanych użytkowników
o Użytkownicy przewijają się po ekranie, są wyświetlani przez 3 sekundy każdy, gdy tylko wyświetlą się wszyscy użytkownicy, strona zostanie zamknięta i powróci do menu głównego.
o Jeśli w opcji menu A nie dodano żadnych użytkowników, zostanie wyświetlony komunikat „ BRAK ZAPISANYCH UŻYTKOWNIKÓW”.
· C – Wyświetla temperaturę na żywo
o Naciśnij “* “, aby powrócić do głównego menu
· D – Wyświetl krótki tekst
o Wyświetla nazwę twórcy i temat, dla którego został skompilowany, wraz z datą.
Zalecana:
Dodawanie funkcji ograniczenia prądu do konwertera buck/boost: 4 kroki (ze zdjęciami)
Dodawanie funkcji ograniczenia prądu do konwertera buck/boost: W tym projekcie przyjrzymy się bliżej popularnemu konwerterowi buck/boost i stworzymy mały, dodatkowy obwód, który doda do niego funkcję ograniczenia prądu. Dzięki niemu konwerter buck/boost może być używany tak samo, jak zasilacz laboratoryjny o zmiennej wydajności. Le
Dodawanie funkcji Wi-Fi AutoConnect do istniejącego szkicu: 3 kroki
Dodawanie funkcji AutoConnect WiFi do istniejącego szkicu: W ostatnim poście dowiedzieliśmy się o funkcji AutoConnect dla płyt ESP32/ESP8266 i jednym z zadawanych pytań było dodanie jej do istniejących szkiców. W tym poście dowiemy się, jak to zrobić i wykorzystamy projekt czasu sieciowego
Tworzenie adaptera Bluetooth Pt.2 (tworzenie kompatybilnego głośnika): 16 kroków
Tworzenie adaptera Bluetooth Pt.2 (Tworzenie kompatybilnego głośnika): W tej instrukcji pokażę ci, jak wykorzystać mój adapter Bluetooth, aby stary głośnik był kompatybilny z Bluetooth. * Jeśli nie przeczytałeś mojej pierwszej instrukcji na temat tworzenia adapter Bluetooth” Proponuję to zrobić przed kontynuowaniem.C
Jak korzystać z terminala Mac i jak korzystać z kluczowych funkcji: 4 kroki
Jak korzystać z terminala Mac i jak korzystać z kluczowych funkcji: Pokażemy Ci, jak otworzyć terminal MAC. Pokażemy również kilka funkcji w Terminalu, takich jak ifconfig, zmiana katalogów, dostęp do plików i arp. Ifconfig pozwoli Ci sprawdzić Twój adres IP i reklamę MAC
Nauka kilku podstawowych funkcji SOLIDWORKS: Tworzenie sześciościennych kostek: 22 kroki
Nauka kilku podstawowych funkcji SOLIDWORKS: Tworzenie kostek sześciościennych: Ta instrukcja przeprowadzi Cię przez kroki wymagane do stworzenia modelu 3D sześciościennej kostki. Podczas projektowania modelu będziesz rysować na płaszczyznach i powierzchniach, wytłaczać i ciąć Kształty 3D oraz zaokrąglić narożniki wewnętrzne i zewnętrzne lub model 3D.Gdy prac