Мазмуну:

Arduino UNO (менюларды жана функцияларды түзүү): 4 кадам
Arduino UNO (менюларды жана функцияларды түзүү): 4 кадам

Video: Arduino UNO (менюларды жана функцияларды түзүү): 4 кадам

Video: Arduino UNO (менюларды жана функцияларды түзүү): 4 кадам
Video: [$20,000] Emirates 777-300ER(NEW) First Class Suite Flight | Japan (Narita) to Dubai 2024, Июль
Anonim
Arduino UNO (менюларды жана функцияларды түзүү)
Arduino UNO (менюларды жана функцияларды түзүү)
Arduino UNO (менюларды жана функцияларды түзүү)
Arduino UNO (менюларды жана функцияларды түзүү)

Бул нускамада биз кантип менюларды түзүүнү, TC74A0 сенсорунан температураны окууну жана "баалуулуктарды" (бул учурда уюлдук телефондордун номерлерин) чексиз, бирок ардуинонун борттогу эс тутуму менен чектелген түрдө кантип көрсөтүүнү изилдейбиз.

Биз колдонобуз

-Массивдер

-Суюк кристалдуу дисплей

-Баскычтоп

Колдонуучу көрсөтмөсү акыркы кадамга киргизилген.

1 -кадам: Компоненттер

Arduino Uno

· 4x4 баскычтоп

· TC74A0 санарип температура сенсору

· I2c 16x2 ЖК модулу

· 16x2 суюк кристаллдуу дисплей

· Өткөргүч зымдар

· Breadboard

· Жеке компьютер

· Arduino IDE

· Которуу кабели

2 -кадам: Компоненттин зымдары

ТЕМП СЕНСОРУ ЖАНА СКД SDA ЖАНА SCL УЧУН БИР ЛИНИЯДА БАЙЛАНЫШТЫ (A4, A5)

ЖК (I2c модулу)

o SDA Arduino боюнча A5ке

o SCL A4ке Arduino

o Arduinoдогу VVC 5Vга чейин

o Arduino боюнча GNDден GNDге

· 4 x 4 баскычтоп

o 1 - 8 клавиатурасындагы Pin, тиешелүүлүгүнө жараша, Arduinoдогу 9 - 2 пинге туташкан

TC74A0 температура сенсору

o TC74A0 pin 2 Arduino боюнча SDAга

o TC74A0 pin 3 Arduinoдогу GNDге

o TC74A0 pin 4 Arduinoдогу SCLге

o TC74A0 pin 5тен 5Vга чейин Arduino

3 -кадам: Код

#include // Компиляциялоодо китепканаларды камтыйт

#кошуу

#кошуу

#аныктоо Сырсөз_Узундугу 5

#Аныктоо Команда_Узундугу 3

#аныктоо CellNumber 10

int users = 0;

int Display = 0;

int дареги = 72; // tc74a0 ДАРЕК

int I = 0;

int USER;

int X = 0;

int XY = 0;

int temp;

int tempPre = 0;

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

char маалыматтар [Password_Lenght];

char Master [Password_Lenght] = "5466"; //КУПУЯ СӨЗ

char ExitData [Command_Lenght]; //

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

char MenuItem;

char CELLArrayA [10];

char CELLArrayB [10];

char CELLArrayC [10];

const байт ROWS = 4; // төрт катар

const байт COLS = 4; // төрт мамыча

байт rowPins [ROWS] = {5, 4, 3, 2};

байт colPins [COLS] = {9, 8, 7, 6};

байт data_count = 0, master_count = 0;

bool Pass_is_good;

LiquidCrystal_I2C lcd (0x26, 16, 2);

char hexaKeys [ROWS] [COLS] = // ИНИТАЦИОНАЛДЫК КИПТА

{

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

};

Клавиатура customKeypad = Баскычтоп (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS);

жараксыз орнотуу ()

{

Serial.begin (9600); // бул Сериялык Мониторду түзөт

Wire.begin (); // бул Wire объектисин түзөт

lcd.begin (16, 2);

lcd.backlight ();

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Сураныч, 3 күтө туруңуз"); // ЖҮКТӨӨ ЭКРАНЫ

кечигүү (1000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Күтө туруңуз 2");

кечигүү (1000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Сураныч, күтө туруңуз 1");

кечигүү (300);

lcd.clear ();

String myString = "ARDUINO INSTRUCTABLE";

lcd.setCursor (2, 2);

lcd.print (myString);

кечигүү (2500);

үчүн (int scrollCounter = 0; scrollCounter <24; scrollCounter ++)

{

lcd.scrollDisplayLeft ();

кечигүү (300);

}

lcd.clear ();

lcd.print ("Сырсөздү киргизүү");

}

боштук цикл ()

{

которуштуруу (Дисплей) // БАШКЫ МЕНЮДА КАЙДА БИЗ

{// КОЛДОНУУЧУ А, В, С, Д баскан

учурда 0:

{

Купуя сөз();

}

тыныгуу;

иши 1:

{

lcd.clear ();

lcd.setCursor (0, 1);

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

lcd.setCursor (0, 0);

lcd.print ("Башкы меню");

Display = 2;

кечиктирүү (100);

тыныгуу;

}

2 -жагдай:

{

char customKey = customKeypad.getKey ();

которуштуруу (customKey)

{

учурда "А":

{

Serial.println ("А басылды");

StoreUser ();

тыныгуу;

}

учурда 'B':

{

Serial.println ("B басылды");

эгер (колдонуучулар == 0) {

lcd.clear ();

lcd.print ("САКТАЛГАН КОЛДОНУЧУЛАР ЖОК");

кечигүү (3000);

lcd.clear ();

Display = 1;

тыныгуу;

}

DisplayUsers (); тыныгуу;

}

учурда "С":

{

Serial.println ("C басылды"); // ТЕСТТӨӨ ҮЧҮН КОЛДОНУЛДУ

int ext = 0;

while (! ext) {

char ch;

темп = TempMenu ();

if (temp! = tempPre) {

lcd.clear ();

lcd.print ("Temparature");

lcd.setCursor (0, 1);

lcd.print (темп);

lcd.print ("C");

tempPre = темп;

кечигүү (500);

}

ch = customKeypad.getKey ();

if (ch == ' *') // EXIT TEMPERATURE MENU (if * PRESSED)

{

ext = 1;

lcd.clear ();

Display = 1;

}

}

тыныгуу;

TempMenu ();

тыныгуу;

}

учурда 'D':

{

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("NUA PRAC");

lcd.setCursor (0, 1);

lcd.print ("JB SCHOEMAN");

кечигүү (3000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("МАЙ 2019");

lcd.setCursor (0, 1);

lcd.print ("CC OOSTHUIZEN");

кечигүү (3000);

lcd.clear ();

Display = 1;

}

}

}

}

}

// БААЛЫКТАРДЫ ЖАНА ПРОЦЕДУРАЛАРДЫ ЧАКЫРУУ ҮЧҮН АДАМДЫК ФУНКЦИЯЛАР

жараксыз пароль ()

{

char customKey = customKeypad.getKey ();

эгер (customKey) // ачкычтын басылганын текшерет, (customKey! = NO_KEY)

{

Берилиштер [data_count] = customKey; // charти маалымат массивине сактоо

lcd.setCursor (data_count, 1); // курсорду ар бир жаңы символду көрсөтүү үчүн жылдырыңыз

lcd.print ("*"); // көрсөтүлгөн курсорго char басуу

data_count ++; // жаңы массивди сактоо үчүн маалымат массивин 1ге көбөйтүңүз, ошондой эле киргизилген символдордун санын көзөмөлдөңүз

}

if (data_count == Password_Lenght-1) // эгерде массивдин индекси күтүлгөн символдордун санына барабар болсо, анда маалыматты мастерге салыштырыңыз

{

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Сырсөз");

if (! strcmp (Data, Master)) // барабар (strcmp (Data, Master) == 0)

{

lcd.print ("Жакшы");

lcd.clear ();

Display = 1;

}

башка

lcd.print ("Жаман");

кечиктирүү (1000); // сырсөз тазаланганга чейин экранда толугу менен көрсөтүлгөнүнө ынануу үчүн 1 секунддук кечигүүнү кошту.

lcd.clear ();

clearData ();

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Сырсөздү киргизүү");

}

}

int TempMenu ()

{

Wire.beginTrmission (дарек);

Wire.write (0);

Wire.endTransmission ();

Wire.requestFrom (дарек, 1);

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

int c = Wire.read ();

return c;

}

Void clearData ()

{

жатканда (data_count! = 0)

{// Бул массивдин каалаган өлчөмү үчүн колдонулушу мүмкүн, Берилиштер [data_count--] = 0; // жаңы маалыматтар үчүн массивди тазалоо

}

}

боштук StoreUser ()

{

int ext = 0;

int колдонуучу;

char ch;

while (! ext) {

lcd.clear ();

lcd.print ("Колдонуучуну киргизүү");

user = users + 1;

lcd.print (колдонуучу);

int x = 0;

while (! x) {

үчүн (int i = 0; i <10; i ++) {

ch = customKeypad.waitForKey ();

lcd.setCursor (i, 1);

lcd.print (ch);

userNum [user - 1] = ch;

}

кечигүү (500);

lcd.clear ();

lcd.print ("Улантуу");

lcd.setCursor (0, 1);

lcd.print ("* ооба # жок");

ch = customKeypad.waitForKey ();

эгер (ch == '*') {

x = 1;

}

эгер (ch == '#') {

x = 1;

ext = 1;

lcd.clear ();

Display = 1;

}

}

колдонуучулар ++;

}

}

бош DisplayUsers ()

{

lcd.clear ();

үчүн (int i = 0; i <колдонуучулар; i ++) {

lcd.print ("Сакталган колдонуучу");

lcd.print (i + 1);

үчүн (int u = 0; u <10; u ++) {

lcd.setCursor (u, 1);

lcd.print (userNum [u]);

}

кечигүү (2000);

lcd.clear ();

Display = 1;

}

}

4 -кадам: USER GUIDE

1. Долбоорду иштеткенде жүктөө же саламдашуу экраны пайда болот.

2. "Сырсөздү киргизүү" экраны пайда болот, бул экран 4 символду, тамгаларды же сандарды киргизүүгө мүмкүндүк берет, туура сырсөз: 5466, бул сизге башкы менюга кирүүгө мүмкүнчүлүк берет.

3. Туура сырсөздү киргизгенден кийин, негизги меню ар кандай жеткиликтүү функцияларды чабыттоо үчүн 4 мүмкүн болгон вариант менен пайда болот.

· A - Колдонуучунун уюлдук телефон номерлерин киргизиңиз.

o Колдонуучуну системага сактоо үчүн 10 цифраны киргизиңиз

o 10 цифра киргизилгенден кийин көбүрөөк колдонуучуларды кошуу үчүн " *" баскычын басыңыз же башкы менюдан кайра чыгуу үчүн "#" баскычын басыңыз.

· B - Сакталган колдонуучуларды көрсөтүү

o Колдонуучулар экрандын жанынан жылып өтүшөт, алар ар бири 3 секундада көрсөтүлөт, бардык колдонуучулар көрсөтүлөөр замат барак жабылып, негизги менюга кайтат.

o А меню параметрине эч бир колдонуучу кошулбаса, анда "САКТАЛБАГАН КОЛДОНУЧУЛАР" көрсөтүлөт.

· C - Жандуу температураны көрсөтөт

o Негизги менюга кайра чыгуу үчүн “*” баскычын басыңыз

· D - кыска текстти көрсөтүү

o Жаратуучунун атын жана датасы менен түзүлгөн теманы көрсөтөт.

Сунушталууда: