Съдържание:

Arduino UNO (създаване на менюта и функции): 4 стъпки
Arduino UNO (създаване на менюта и функции): 4 стъпки

Видео: Arduino UNO (създаване на менюта и функции): 4 стъпки

Видео: Arduino UNO (създаване на менюта и функции): 4 стъпки
Видео: Introduction to NodeMCU ESP8266 WiFi Development board with HTTP Client example- Robojax 2024, Юли
Anonim
Arduino UNO (създаване на менюта и функции)
Arduino UNO (създаване на менюта и функции)
Arduino UNO (създаване на менюта и функции)
Arduino UNO (създаване на менюта и функции)

В тази инструкция ще изследваме как да създаваме менюта, да четем температура от сензор TC74A0 и да показваме „стойности“(в този случай номера на мобилни телефони) по начин, който е безкраен, но ограничен до вградената памет на arduino.

Ние ще използваме

-Масиви

-Дисплей с течни кристали

-Клавиатура

Ръководство за потребителя, включено в последната стъпка.

Стъпка 1: Компоненти

Arduino Uno

· 4x4 клавиатура

· TC74A0 цифров температурен сензор

· I2c 16x2 LCD модул

· 16x2 дисплей с течни кристали

· Кабелни проводници

· Платформа

· Персонален компютър

· IDE на Arduino

· Кабел за прехвърляне

Стъпка 2: Компонентно окабеляване

ТЕМП. СЕНЗОР И LCD, СВЪРЗАНИ НА ЕДНА ЛИНИЯ КЪМ SDA И SCL (A4, A5)

LCD (I2c модул)

o SDA до A5 на Arduino

o SCL към A4 на Arduino

o VCC до 5V на Arduino

o GND към GND на Arduino

· 4 x 4 клавиатура

o Пин 1 - 8 на клавиатурата, свързан съответно към щифт 9 - 2 на Arduino

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

o TC74A0 пин 2 към SDA на Arduino

o TC74A0 щифт 3 към GND на Arduino

o TC74A0 щифт 4 към SCL на Arduino

o TC74A0 щифт 5 до 5V на Arduino

Стъпка 3: Код

#include // Включва библиотеки при компилиране

#включва

#включва

#define Password_Lenght 5

#дефинирайте Command_Lenght 3

#define CellNumber 10

int потребители = 0;

int Дисплей = 0;

int адрес = 72; // tc74a0 АДРЕС

int I = 0;

int ПОТРЕБИТЕЛ;

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);

void setup ()

{

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);

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

{

lcd.scrollDisplayLeft ();

забавяне (300);

}

lcd.clear ();

lcd.print ("Въведете парола");

}

void loop ()

{

превключвател (Дисплей) // КЪДЕ СМЕ В ОСНОВНОТО МЕНЮ

{// ПОЛЗВАТЕЛЯТ ЛИ Е НАЛИЧАЛ A, B, C, D

случай 0:

{

Парола ();

}

прекъсване;

случай 1:

{

lcd.clear ();

lcd.setCursor (0, 1);

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

lcd.setCursor (0, 0);

lcd.print ("Главно меню");

Дисплей = 2;

забавяне (100);

прекъсване;

}

случай 2:

{

char customKey = customKeypad.getKey ();

превключвател (customKey)

{

случай "А":

{

Serial.println ("A беше натиснат");

StoreUser ();

прекъсване;

}

случай "B":

{

Serial.println ("B беше натиснат");

ако (потребители == 0) {

lcd.clear ();

lcd.print ("БЕЗ ЗАПАЗЕНИ ПОТРЕБИТЕЛИ");

забавяне (3000);

lcd.clear ();

Дисплей = 1;

прекъсване;

}

DisplayUsers (); прекъсване;

}

случай "C":

{

Serial.println ("C беше натиснат"); // ИЗПОЛЗВАНИ ПО ВРЕМЕ НА ТЕСТИРАНЕ

int ext = 0;

while (! ext) {

char ch;

temp = TempMenu ();

if (temp! = tempPre) {

lcd.clear ();

lcd.print ("Температура");

lcd.setCursor (0, 1);

lcd.print (temp);

lcd.print ("C");

tempPre = temp;

забавяне (500);

}

ch = customKeypad.getKey ();

if (ch == ' *') // ИЗХОД от ТЕМПЕРАТУРНО МЕНЮ (ако * PRESSED)

{

ext = 1;

lcd.clear ();

Дисплей = 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 ();

Дисплей = 1;

}

}

}

}

}

// ЛИЧНИ ФУНКЦИИ ЗА ОБИВАНЕ НА СТОЙНОСТИ ИЛИ ПРОЦЕДУРИ

невалидна парола ()

{

char customKey = customKeypad.getKey ();

if (customKey) // гарантира, че действително е натиснат клавиш, равен на (customKey! = NO_KEY)

{

Data [data_count] = customKey; // съхранява char в масив от данни

lcd.setCursor (data_count, 1); // преместване на курсора за показване на всеки нов знак

lcd.print ("*"); // отпечатваме char при посочения курсор

data_count ++; // увеличава масив от данни с 1 за съхраняване на нов char, също така следи броя на въведените символи

}

if (data_count == Password_Lenght-1) // ако индексът на масива е равен на броя на очакваните символи, сравнете данните с master

{

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Парола е");

if (! strcmp (Data, Master)) // равно на (strcmp (Data, Master) == 0)

{

lcd.print ("Добре");

lcd.clear ();

Дисплей = 1;

}

иначе

lcd.print ("Лошо");

delay (1000); // добавено 1 секундно забавяне, за да се увери, че паролата е изцяло показана на екрана, преди да бъде изчистена.

lcd.clear ();

clearData ();

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Въведете парола");

}

}

int TempMenu ()

{

Wire.beginTransmission (адрес);

Wire.write (0);

Wire.endTransmission ();

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

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

int c = Wire.read ();

връщане c;

}

void clearData ()

{

while (data_count! = 0)

{// Това може да се използва за всеки размер на масива, Данни [data_count--] = 0; // изчистване на масива за нови данни

}

}

void StoreUser ()

{

int ext = 0;

int потребител;

char ch;

while (! ext) {

lcd.clear ();

lcd.print ("Въведете потребител");

потребител = потребители + 1;

lcd.print (потребител);

int x = 0;

докато (! x) {

за (int i = 0; i <10; i ++) {

ch = customKeypad.waitForKey ();

lcd.setCursor (i, 1);

lcd.print (ch);

userNum [потребител - 1] = ch;

}

забавяне (500);

lcd.clear ();

lcd.print ("Продължи");

lcd.setCursor (0, 1);

lcd.print ("* да # не");

ch = customKeypad.waitForKey ();

if (ch == '*') {

x = 1;

}

if (ch == '#') {

x = 1;

ext = 1;

lcd.clear ();

Дисплей = 1;

}

}

потребители ++;

}

}

void DisplayUsers ()

{

lcd.clear ();

for (int i = 0; i <потребители; i ++) {

lcd.print ("Запазен потребител");

lcd.print (i + 1);

за (int u = 0; u <10; u ++) {

lcd.setCursor (u, 1);

lcd.print (потребителски номер [u]);

}

забавяне (2000);

lcd.clear ();

Дисплей = 1;

}

}

Стъпка 4: РЪКОВОДСТВО ЗА ПОТРЕБИТЕЛИ

1. При включване на проекта ще се появи екран за зареждане или приветствие.

2. Ще се появи екран „Въведете парола“, който ви позволява да въведете 4 знака, букви или цифри, правилната парола е: 5466, това ще ви даде достъп до главното меню.

3. При въвеждане на правилната парола ще се появи главното меню с 4 възможни опции за навигация в различните налични функции.

· A - Въведете номера на мобилен телефон на потребителя.

o Въведете 10 цифри, за да запазите потребител в системата

o След като са въведени 10 цифри, натиснете „ *“, за да добавите още потребители, или натиснете „#“, за да излезете обратно в главното меню

· B - Показване на запазени потребители

o Потребителите ще преминават през екрана, те се показват за 3 секунди всеки, веднага щом се покажат всички потребители, страницата ще се затвори и ще се върне в главното меню.

o Ако не са добавени потребители в опция на менюто A, тя ще покаже „NO SAVED USERS“.

· C - Показва температурата на живо

o Натиснете “*“, за да излезете обратно в главното меню

· D - Показва кратък текст

o Показва името на създателя и темата, за която е съставен, с дата.

Препоръчано: