Spisu treści:

Arduino UNO (tworzenie menu i funkcji): 4 kroki
Arduino UNO (tworzenie menu i funkcji): 4 kroki

Wideo: Arduino UNO (tworzenie menu i funkcji): 4 kroki

Wideo: Arduino UNO (tworzenie menu i funkcji): 4 kroki
Wideo: Arduino dla każdego! Czym jest Arduino UNO, kiedy się przydaje i jak zacząć? 2024, Listopad
Anonim
Arduino UNO (tworzenie menu i funkcji)
Arduino UNO (tworzenie menu i funkcji)
Arduino UNO (tworzenie menu i funkcji)
Arduino UNO (tworzenie menu i funkcji)

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: