Оглавление:

Arduino UNO (создание меню и функций): 4 шага
Arduino UNO (создание меню и функций): 4 шага

Видео: Arduino UNO (создание меню и функций): 4 шага

Видео: Arduino UNO (создание меню и функций): 4 шага
Видео: Как написать меню для дисплея на Arduino 2024, Ноябрь
Anonim
Arduino UNO (создание меню и функций)
Arduino UNO (создание меню и функций)
Arduino UNO (создание меню и функций)
Arduino UNO (создание меню и функций)

В этом руководстве мы рассмотрим, как создавать меню, считывать температуру с датчика TC74A0 и отображать «значения» (в данном случае номера мобильных телефонов) бесконечным способом, но ограниченным встроенной памятью Arduino.

Мы будем использовать

-Массивы

-Жидкокристаллический дисплей

-Клавиатура

Руководство пользователя включено в последний шаг.

Шаг 1: Компоненты

Ардуино Уно

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

· Цифровой датчик температуры TC74A0

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

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

· Провода перемычки

· Макетная плата

· Персональный компьютер

· Arduino IDE

· Передаточный кабель

Шаг 2: Подключение компонентов

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

ЖК-дисплей (модуль I2c)

o SDA в A5 на Arduino

o SCL в A4 на Arduino

o VCC до 5 В на Arduino

o GND на GND на Arduino

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

o Контакты 1-8 на клавиатуре подключены к контактам 9-2 на Arduino соответственно

Датчик температуры TC74A0

o TC74A0 контакт 2 к SDA на Arduino

o Вывод 3 TC74A0 на GND на Arduino

o TC74A0 контакт 4 к SCL на Arduino

o TC74A0 вывод от 5 до 5 В на Arduino

Шаг 3: Код

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

#включают

#включают

#define Password_Lenght 5

#define Command_Lenght 3

#define CellNumber 10

int users = 0;

int Display = 0;

int address = 72; // tc74a0 АДРЕС

int I = 0;

int USER;

int X = 0;

int XY = 0;

int temp;

int tempPre = 0;

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

char Data [Password_Lenght];

char Мастер [Password_Lenght] = "5466"; //ПАРОЛЬ

char ExitData [Command_Lenght]; //

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

char MenuItem;

char CELLArrayA [10];

char CELLArrayB [10];

char CELLArrayC [10];

const byte ROWS = 4; // четыре строки

константный байт COLS = 4; // четыре столбца

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

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

byte 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 ()

{

Serial.begin (9600); // это создает Serial Monitor

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

lcd.setCursor (2, 2);

lcd.print (myString);

задержка (2500);

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

{

lcd.scrollDisplayLeft ();

задержка (300);

}

lcd.clear ();

lcd.print («Введите пароль»);

}

пустой цикл ()

{

switch (Display) // ГДЕ В ГЛАВНОМ МЕНЮ НАХОДИМСЯ

{// НАЖИМ ЛИ ПОЛЬЗОВАТЕЛЬ A, B, C, D

case 0:

{

Пароль();

}

перерыв;

Дело 1:

{

lcd.clear ();

lcd.setCursor (0, 1);

lcd.print («А Б В Г»);

lcd.setCursor (0, 0);

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

Дисплей = 2;

задержка (100);

перерыв;

}

случай 2:

{

char customKey = customKeypad.getKey ();

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

{

case 'A':

{

Serial.println («A была нажата»);

StoreUser ();

перерыв;

}

case 'B':

{

Serial.println («нажата клавиша B»);

if (users == 0) {

lcd.clear ();

lcd.print («НЕТ СОХРАНЕННЫХ ПОЛЬЗОВАТЕЛЕЙ»);

задержка (3000);

lcd.clear ();

Дисплей = 1;

перерыв;

}

DisplayUsers (); перерыв;

}

case 'C':

{

Serial.println («C был нажат»); // ИСПОЛЬЗУЕТСЯ ВО ВРЕМЯ ТЕСТИРОВАНИЯ

int ext = 0;

в то время как (! ext) {

char ch;

temp = TempMenu ();

if (temp! = tempPre) {

lcd.clear ();

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

lcd.setCursor (0, 1);

lcd.print (темп);

lcd.print («C»);

tempPre = темп;

задержка (500);

}

ch = customKeypad.getKey ();

if (ch == '*') // ВЫХОД ИЗ МЕНЮ ТЕМПЕРАТУРЫ (если * НАЖАТИЕ)

{

ext = 1;

lcd.clear ();

Дисплей = 1;

}

}

перерыв;

TempMenu ();

перерыв;

}

case 'D':

{

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print («НУА ПРАК»);

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_count] = customKey; // сохраняем символ в массив данных

lcd.setCursor (количество_данных, 1); // перемещаем курсор для отображения каждого нового символа

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

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

Дисплей = 1;

}

еще

lcd.print («Плохо»);

delay (1000); // добавлена задержка в 1 секунду, чтобы убедиться, что пароль полностью отображается на экране, прежде чем он будет очищен.

lcd.clear ();

Очистить данные();

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

return c;

}

void clearData ()

{

в то время как (data_count! = 0)

{// Это можно использовать для любого размера массива, Данные [data_count--] = 0; // очищаем массив для новых данных

}

}

void StoreUser ()

{

int ext = 0;

int user;

char ch;

в то время как (! ext) {

lcd.clear ();

lcd.print («Введите пользователя»);

пользователь = пользователи + 1;

lcd.print (пользователь);

int x = 0;

while (! x) {

for (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 == '*') {

х = 1;

}

if (ch == '#') {

х = 1;

ext = 1;

lcd.clear ();

Дисплей = 1;

}

}

пользователи ++;

}

}

void DisplayUsers ()

{

lcd.clear ();

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

lcd.print («Сохраненный пользователь»);

lcd.print (i + 1);

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

lcd.setCursor (u, 1);

lcd.print (userNum [u]);

}

задержка (2000);

lcd.clear ();

Дисплей = 1;

}

}

Шаг 4: РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ

1. После включения проекта появится экран загрузки или экран приветствия.

2. Появится экран «Введите пароль», этот экран позволяет вам ввести 4 символа, буквы или цифры, правильный пароль: 5466, это предоставит вам доступ к главному меню.

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

· A - Введите номера сотовых телефонов пользователей.

o Введите 10 цифр, чтобы сохранить пользователя в системе

o После ввода 10 цифр нажмите «*», чтобы добавить других пользователей, или нажмите «#», чтобы вернуться в главное меню.

· B - Показать сохраненных пользователей

o Пользователи будут прокручивать экран, они отображаются в течение 3 секунд каждый, как только отобразятся все пользователи, страница закроется и вернется в главное меню.

o Если в пункте меню A не было добавлено ни одного пользователя, отобразится «НЕТ СОХРАНЕННЫХ ПОЛЬЗОВАТЕЛЕЙ».

· C - Отображает текущую температуру

o Нажмите «*», чтобы вернуться в главное меню.

· D - Показать короткий текст

o Отображает имя создателя и тему, для которой он был составлен, с датой.

Рекомендуемые: