Sadržaj:

Arduino UNO (stvaranje menija i funkcija): 4 koraka
Arduino UNO (stvaranje menija i funkcija): 4 koraka

Video: Arduino UNO (stvaranje menija i funkcija): 4 koraka

Video: Arduino UNO (stvaranje menija i funkcija): 4 koraka
Video: Ошибки в сантехнике. Вводной узел в квартиру. 2024, Novembar
Anonim
Arduino UNO (stvaranje menija i funkcija)
Arduino UNO (stvaranje menija i funkcija)
Arduino UNO (stvaranje menija i funkcija)
Arduino UNO (stvaranje menija i funkcija)

U ovom uputstvu ćemo istraživati kako stvoriti menije, očitati temperaturu sa senzora TC74A0 i prikazati "vrijednosti" (u ovom slučaju brojeve mobilnih telefona) na način koji je beskonačan, ali ograničen na memoriju arduina na ploči.

Koristit ćemo

-Nizovi

-Ekran sa tečnim kristalima

-Tastavica

Korisnički vodič uključen u posljednji korak.

Korak 1: Komponente

Arduino Uno

· 4x4 tastatura

· TC74A0 digitalni senzor temperature

· I2c 16x2 LCD modul

· Ekran sa tečnim kristalima 16x2

· Premosne žice

· Oglasna ploča

· PC

· Arduino IDE

· Kabl za prenos

Korak 2: Komponentno ožičenje

TEMP. SENZOR I LCD POVEZANI NA ISTOJ LINIJI NA SDA I SCL (A4, A5)

LCD (I2c modul)

o SDA do A5 na Arduinu

o SCL do A4 na Arduinu

o VCC na 5V na Arduinu

o GND do GND na Arduinu

· 4 x 4 tastatura

o Pin 1 - 8 na tastaturi spojen na pin 9 - 2 na Arduinu

TC74A0 senzor temperature

o TC74A0 pin 2 na SDA na Arduinu

o TC74A0 pin 3 za GND na Arduinu

o TC74A0 pin 4 za SCL na Arduinu

o TC74A0 pin 5 do 5V na Arduinu

Korak 3: Kodirajte

#include // Uključuje biblioteke pri prevođenju

#include

#include

#define Password_Lenght 5

#define Command_Lenght 3

#define CellNumber 10

int korisnici = 0;

int Prikaz = 0;

int adresa = 72; // tc74a0 ADRESA

int I = 0;

int USER;

int X = 0;

int XY = 0;

int temp;

int tempPre = 0;

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

char Podaci [lozinka_dužina];

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

char ExitData [Command_Lenght]; //

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

char MenuItem;

char CELLArrayA [10];

char CELLArrayB [10];

char CELLArrayC [10];

const bajt ROWS = 4; // četiri reda

const bajt COLS = 4; // četiri kolone

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

bajtovi 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] = // POČETNA TASTATURA

{

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

};

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

void setup ()

{

Serial.begin (9600); // ovo stvara serijski monitor

Wire.begin (); // ovo stvara Wire objekt

lcd.begin (16, 2);

lcd.backlight ();

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Molimo pričekajte 3"); // EKRAN ZA Učitavanje

kašnjenje (1000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Molimo pričekajte 2");

kašnjenje (1000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Molimo pričekajte 1");

kašnjenje (300);

lcd.clear ();

String myString = "ARDUINO INSTRUCTABLE";

lcd.setCursor (2, 2);

lcd.print (myString);

kašnjenje (2500);

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

{

lcd.scrollDisplayLeft ();

kašnjenje (300);

}

lcd.clear ();

lcd.print ("Unesite lozinku");

}

void loop ()

{

prekidač (prikaz) // GDJE SMO U GLAVNOM IZBORNIKU

{// DA LI JE KORISNIK TISAO A, B, C, D

slučaj 0:

{

Lozinka ();

}

break;

slučaj 1:

{

lcd.clear ();

lcd.setCursor (0, 1);

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

lcd.setCursor (0, 0);

lcd.print ("Glavni meni");

Prikaz = 2;

kašnjenje (100);

break;

}

slučaj 2:

{

char customKey = customKeypad.getKey ();

prekidač (customKey)

{

slučaj 'A':

{

Serial.println ("A je pritisnuto");

StoreUser ();

break;

}

slučaj 'B':

{

Serial.println ("B je pritisnuto");

if (korisnici == 0) {

lcd.clear ();

lcd.print ("NO SAVED USERS");

kašnjenje (3000);

lcd.clear ();

Prikaz = 1;

break;

}

DisplayUsers (); break;

}

slučaj 'C':

{

Serial.println ("C je pritisnut"); // KORIŠTENO TOKOM TESTIRANJA

int ext = 0;

while (! ext) {

char ch;

temp = TempMenu ();

if (temp! = tempPre) {

lcd.clear ();

lcd.print ("Temparature");

lcd.setCursor (0, 1);

lcd.print (temp);

lcd.print ("C");

tempPre = temp;

kašnjenje (500);

}

ch = customKeypad.getKey ();

if (ch == ' *') // IZLAZAK IZ TEMPERATURNOG IZBORNIKA (ako je * PRESSED)

{

ext = 1;

lcd.clear ();

Prikaz = 1;

}

}

break;

TempMenu ();

break;

}

slučaj 'D':

{

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("NUA PRAC");

lcd.setCursor (0, 1);

lcd.print ("JB SCHOEMAN");

kašnjenje (3000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("MAJ 2019");

lcd.setCursor (0, 1);

lcd.print ("CC OOSTHUIZEN");

kašnjenje (3000);

lcd.clear ();

Prikaz = 1;

}

}

}

}

}

// PRILAGOĐENE FUNKCIJE ZA POZIVANJE VRIJEDNOSTI ILI POSTUPAKA

void Lozinka ()

{

char customKey = customKeypad.getKey ();

if (customKey) // osigurava da je tipka zapravo pritisnuta, jednako (customKey! = NO_KEY)

{

Data [data_count] = customKey; // sprema char u niz podataka

lcd.setCursor (data_count, 1); // pomicanje kursora za prikaz svakog novog znaka

lcd.print ("*"); // ispisuje char na navedenom kurzoru

data_count ++; // uvećava niz podataka za 1 za spremanje novog znaka, također prati broj unesenih znakova

}

if (data_count == Password_Lenght-1) // ako je indeks niza jednak broju očekivanih znakova, usporedite podatke s master

{

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Lozinka je");

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

{

lcd.print ("Dobro");

lcd.clear ();

Prikaz = 1;

}

else

lcd.print ("Loše");

delay (1000); // dodano kašnjenje od 1 sekunde kako bi se osiguralo da je lozinka u potpunosti prikazana na ekranu prije nego što se obriše.

lcd.clear ();

clearData ();

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Unesite lozinku");

}

}

int TempMenu ()

{

Wire.beginTransmission (adresa);

Wire.write (0);

Wire.endTransmission ();

Wire.requestFrom (adresa, 1);

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

int c = Wire.read ();

return c;

}

void clearData ()

{

while (broj_data! = 0)

{// Ovo se može koristiti za bilo koju veličinu niza, Podaci [data_count--] = 0; // briše niz za nove podatke

}

}

void StoreUser ()

{

int ext = 0;

int korisnik;

char ch;

while (! ext) {

lcd.clear ();

lcd.print ("Unesite korisnika");

korisnik = korisnici + 1;

lcd.print (korisnik);

int x = 0;

while (! x) {

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

ch = customKeypad.waitForKey ();

lcd.setCursor (i, 1);

lcd.print (ch);

userNum [korisnik - 1] = ch;

}

kašnjenje (500);

lcd.clear ();

lcd.print ("Nastavi");

lcd.setCursor (0, 1);

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

ch = customKeypad.waitForKey ();

if (ch == '*') {

x = 1;

}

if (ch == '#') {

x = 1;

ext = 1;

lcd.clear ();

Prikaz = 1;

}

}

korisnici ++;

}

}

void DisplayUsers ()

{

lcd.clear ();

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

lcd.print ("Sačuvani korisnik");

lcd.print (i + 1);

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

lcd.setCursor (u, 1);

lcd.print (broj korisnika [u]);

}

kašnjenje (2000);

lcd.clear ();

Prikaz = 1;

}

}

Korak 4: VODIČ ZA KORISNIKE

1. Nakon uključivanja projekta, pojavit će se zaslon za učitavanje ili dobrodošlicu.

2. Pojavit će se ekran “Enter Password” (Unesi lozinku), koji vam omogućava da unesete 4 znaka, slova ili brojke, ispravna lozinka je: 5466, to će vam omogućiti pristup glavnom meniju.

3. Nakon unosa ispravne lozinke, pojavit će se glavni izbornik s 4 moguće opcije za navigaciju različitim dostupnim funkcijama.

· A - Unesite brojeve mobilnih telefona korisnika.

o Unesite 10 znamenki za spremanje korisnika u sistem

o Nakon što ste unijeli 10 znamenki, pritisnite “*” za dodavanje više korisnika ili pritisnite “#” za povratak na glavni izbornik

· B - Prikaz spremljenih korisnika

o Korisnici će se pomicati pored ekrana, biće prikazani po 3 sekunde, čim se prikažu svi korisnici, stranica će se zatvoriti i vratiti u glavni meni.

o Ako u opciju menija A nije dodat nijedan korisnik, prikazaće se „NO SAVED USERS“.

· C - Prikazuje temperaturu uživo

o Pritisnite „ *“za povratak na glavni meni

· D - Prikaz kratkog teksta

o Prikazuje ime autora i temu za koju je sastavljen s datumom.

Preporučuje se: