Kazalo:

Arduino UNO (ustvarjanje menijev in funkcij): 4 koraki
Arduino UNO (ustvarjanje menijev in funkcij): 4 koraki

Video: Arduino UNO (ustvarjanje menijev in funkcij): 4 koraki

Video: Arduino UNO (ustvarjanje menijev in funkcij): 4 koraki
Video: # 59 Nextion Display Урок #2: Создаем собственное приложение 2024, Julij
Anonim
Arduino UNO (ustvarjanje menijev in funkcij)
Arduino UNO (ustvarjanje menijev in funkcij)
Arduino UNO (ustvarjanje menijev in funkcij)
Arduino UNO (ustvarjanje menijev in funkcij)

V tem navodilu bomo raziskovali, kako ustvariti menije, prebrati temperaturo s senzorja TC74A0 in prikazati "vrednosti" (v tem primeru številke mobilnih telefonov) na neskončen način, vendar omejen na pomnilnik arduina na krovu.

Uporabljali bomo

-Nizki

-Zaslon s tekočimi kristali

-Tipkovnica

Navodila za uporabo so vključena v zadnji korak.

1. korak: Komponente

Arduino Uno

· 4x4 tipkovnica

· TC74A0 digitalni temperaturni senzor

· I2c 16x2 LCD modul

· Zaslon s tekočimi kristali 16x2

· Mostične žice

· Ogledna plošča

· Osebni računalnik

· Arduino IDE

· Prenosni kabel

2. korak: ožičenje komponent

TEMP. SENZOR IN LCD, POVEZANI NA ISTO LINIJO NA SDA IN SCL (A4, A5)

LCD (modul I2c)

o SDA do A5 na Arduinu

o SCL do A4 na Arduinu

o VCC do 5V na Arduinu

o GND do GND na Arduinu

· 4 x 4 tipkovnica

o Pin 1 - 8 na tipkovnici, priključen na pin 9 - 2 na Arduinu

TC74A0 temperaturni senzor

o TC74A0 pin 2 na SDA na Arduinu

o TC74A0 pin 3 do GND na Arduinu

o TC74A0 pin 4 do SCL na Arduinu

o TC74A0 pin 5 do 5V na Arduinu

3. korak: Koda

#include // Vključuje knjižnice pri sestavljanju

#vključi

#vključi

#define Password_Lenght 5

#define Command_Lenght 3

#define CellNumber 10

int uporabniki = 0;

int Prikaz = 0;

int naslov = 72; // tc74a0 NASLOV

int I = 0;

int UPORABNIK;

int X = 0;

int XY = 0;

int temp;

int tempPre = 0;

char userNum [10] [10] = {{}, {}, {}};

char Podatki [Password_Lenght];

char Master [Password_Lenght] = "5466"; // GESLO

char ExitData [Command_Lenght]; //

char Master1 [Command_Lenght] = "**"; //

char MenuItem;

char CELLArrayA [10];

char CELLArrayB [10];

char CELLArrayC [10];

const byte ROWS = 4; // štiri vrstice

const bajt COLS = 4; // štirje stolpci

byte rowPins [ROWS] = {5, 4, 3, 2};

bajt colPins [COLS] = {9, 8, 7, 6};

bajt data_count = 0, master_count = 0;

bool Pass_is_good;

LiquidCrystal_I2C lcd (0x26, 16, 2);

char hexaKeys [ROWS] [COLS] = // ZAČETNA TASTATURA

{

{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}

};

Tipkovnica customKeypad = Tipkovnica (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS);

void setup ()

{

Serial.begin (9600); // s tem se ustvari serijski monitor

Wire.begin (); // s tem se ustvari objekt Wire

lcd.begin (16, 2);

lcd.backlight ();

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Prosim, počakajte 3"); // NALOŽITVENI EKRAN

zamuda (1000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Prosim počakajte 2");

zamuda (1000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Prosim, počakajte 1");

zamuda (300);

lcd.clear ();

String myString = "ARDUINO INSTRUCTABLE";

lcd.setCursor (2, 2);

lcd.print (myString);

zamuda (2500);

for (int scrollCounter = 0; scrollCounter <24; scrollCounter ++)

{

lcd.scrollDisplayLeft ();

zamuda (300);

}

lcd.clear ();

lcd.print ("Vnesite geslo");

}

void loop ()

{

stikalo (Zaslon) // KJE V GLAVNEM MENIU SMO

{// ALI JE UPORABNIK TISKAL A, B, C, D

primer 0:

{

Geslo ();

}

zlom;

primer 1:

{

lcd.clear ();

lcd.setCursor (0, 1);

lcd.print ("A B C D");

lcd.setCursor (0, 0);

lcd.print ("Glavni meni");

Zaslon = 2;

zamuda (100);

zlom;

}

primer 2:

{

char customKey = customKeypad.getKey ();

stikalo (customKey)

{

primer 'A':

{

Serial.println ("A je bil pritisnjen");

StoreUser ();

zlom;

}

primer 'B':

{

Serial.println ("B je bil pritisnjen");

če (uporabniki == 0) {

lcd.clear ();

lcd.print ("NO SAVED UPORABNIKOV");

zamuda (3000);

lcd.clear ();

Zaslon = 1;

zlom;

}

DisplayUsers (); zlom;

}

primer 'C':

{

Serial.println ("C je bil pritisnjen"); // UPORABLJENO MED TESTIRANJEM

int ext = 0;

medtem ko (! ext) {

char ch;

temp = TempMenu ();

if (temp! = tempPre) {

lcd.clear ();

lcd.print ("Temparatura");

lcd.setCursor (0, 1);

lcd.print (temp);

lcd.print ("C");

tempPre = temp;

zamuda (500);

}

ch = customKeypad.getKey ();

if (ch == ' *') // IZHODI TEMPERATURNI MENI (če * PRESSED)

{

ext = 1;

lcd.clear ();

Zaslon = 1;

}

}

zlom;

TempMenu ();

zlom;

}

primer 'D':

{

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("NUA PRAC");

lcd.setCursor (0, 1);

lcd.print ("JB SCHOEMAN");

zamuda (3000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("MAJ 2019");

lcd.setCursor (0, 1);

lcd.print ("CC OOSTHUIZEN");

zamuda (3000);

lcd.clear ();

Zaslon = 1;

}

}

}

}

}

// PRILAGOJENE FUNKCIJE ZA KLICANJE VREDNOSTI ALI POSTOPKOV

void Password ()

{

char customKey = customKeypad.getKey ();

if (customKey) // poskrbi, da je tipka dejansko pritisnjena, enako (customKey! = NO_KEY)

{

Data [data_count] = customKey; // shrani char v podatkovno polje

lcd.setCursor (data_count, 1); // premaknite kazalec za prikaz vsakega novega znaka

lcd.print ("*"); // natisni znak na kazalec

data_count ++; // povečanje matrike podatkov za 1 za shranjevanje novega znaka in tudi spremljanje števila vnesenih znakov

}

if (data_count == Password_Lenght-1) // če je indeks polja enak številu pričakovanih znakov, primerjajte podatke z glavnim

{

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Geslo je");

if (! strcmp (Data, Master)) // enako (strcmp (Data, Master) == 0)

{

lcd.print ("Dobro");

lcd.clear ();

Zaslon = 1;

}

drugače

lcd.print ("Slabo");

delay (1000); // dodamo 1 sekundo zakasnitve, da se prepričamo, da je geslo v celoti prikazano na zaslonu, preden se počisti.

lcd.clear ();

Počisti podatke();

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Vnesite geslo");

}

}

int TempMenu ()

{

Wire.beginTransmission (naslov);

Wire.write (0);

Wire.endTransmission ();

Wire.requestFrom (naslov, 1);

while (Wire.available () == 0);

int c = Wire.read ();

vrnitev c;

}

void clearData ()

{

while (podatkovni_števek! = 0)

{// To lahko uporabimo za poljubno velikost matrike, Podatki [data_count--] = 0; // počisti matriko za nove podatke

}

}

void StoreUser ()

{

int ext = 0;

int uporabnik;

char ch;

medtem ko (! ext) {

lcd.clear ();

lcd.print ("Vnesite uporabnika");

uporabnik = uporabniki + 1;

lcd.print (uporabnik);

int x = 0;

medtem ko (! x) {

za (int i = 0; i <10; i ++) {

ch = customKeypad.waitForKey ();

lcd.setCursor (i, 1);

lcd.print (ch);

userNum [uporabnik - 1] = ch;

}

zamuda (500);

lcd.clear ();

lcd.print ("Nadaljuj");

lcd.setCursor (0, 1);

lcd.print ("* da # ne");

ch = customKeypad.waitForKey ();

if (ch == '*') {

x = 1;

}

if (ch == '#') {

x = 1;

ext = 1;

lcd.clear ();

Zaslon = 1;

}

}

uporabniki ++;

}

}

void DisplayUsers ()

{

lcd.clear ();

for (int i = 0; i <uporabniki; i ++) {

lcd.print ("Shranjeni uporabnik");

lcd.print (i + 1);

za (int u = 0; u <10; u ++) {

lcd.setCursor (u, 1);

lcd.print (uporabniška številka [u]);

}

zamuda (2000);

lcd.clear ();

Zaslon = 1;

}

}

4. korak: NAVODILA ZA UPORABO

1. Ob vklopu projekta se prikaže zaslon za nalaganje ali dobrodošlico.

2. Prikaže se zaslon “Enter Password”, ki vam omogoča vnos 4 znakov, črk ali številk, pravilno geslo je: 5466, s tem boste imeli dostop do glavnega menija.

3. Ko vnesete pravilno geslo, se prikaže glavni meni s 4 možnimi možnostmi za krmarjenje po različnih razpoložljivih funkcijah.

· A - Vnesite številke mobilnega telefona uporabnika.

o Vnesite 10 mest, da shranite uporabnika v sistem

o Ko vnesete 10 številk, pritisnite “*”, da dodate več uporabnikov, ali pritisnite “#”, da se vrnete v glavni meni

· B - Prikaz shranjenih uporabnikov

o Uporabniki se bodo pomikali mimo zaslona, prikazani so po 3 sekunde, takoj ko bodo prikazani vsi uporabniki, se bo stran zaprla in vrnila v glavni meni.

o Če v menijski možnosti A ni bil dodan noben uporabnik, bo prikazano »NO SAVED UPORABNIKOV«.

· C - Prikazuje temperaturo v živo

o Pritisnite “*” za izhod nazaj v glavni meni

· D - Prikaz kratkega besedila

o Prikaže ime ustvarjalca in predmet, za katerega je bil sestavljen, z datumom.

Priporočena: