Оглавление:
Видео: Arduino UNO (создание меню и функций): 4 шага
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
В этом руководстве мы рассмотрим, как создавать меню, считывать температуру с датчика 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 Отображает имя создателя и тему, для которой он был составлен, с датой.
Рекомендуемые:
Windows 7: Отсутствуют элементы контекстного меню: 3 шага
Windows 7: Отсутствуют элементы контекстного меню: всякий раз, когда мы выбираем более 15 файлов в окнах. некоторые элементы из контекстного меню пропадают … Из этого туториала Вы узнаете, как вернуть эти элементы в контекстное меню
Проект датчика Arduino DHT22 и влажности почвы с меню: 4 шага
Arduino DHT22 Sensor and Soil Moisture Project With Menu: Здравствуйте, ребята, сегодня я представляю вам мой второй проект по инструкциям. Этот проект представляет собой смесь моего первого проекта, в котором я использовал датчик влажности почвы и датчик DHT22, который используется для измерения температуры и влажности. . Этот проект
ДИЗАЙН МЕНЮ ARDUINO с OLED-UI (ИНТЕРФЕЙС ПОЛЬЗОВАТЕЛЯ): 4 шага
ДИЗАЙН МЕНЮ ARDUINO с помощью OLED-UI (ПОЛЬЗОВАТЕЛЬСКИЙ ИНТЕРФЕЙС): Привет всем! В этом уроке я попытаюсь объяснить, как создать ДИЗАЙН МЕНЮ ARDUINO с помощью i2c OLED-экрана. Он также известен как UI (пользовательский интерфейс). Его использовали во многих проектах, но он должен быть вам знаком по 3д принтерам :) Вот еще видео
Генератор функций: 4 шага
Генератор функций: Привет всем, нужен дешевый генератор функций? Не хотите его покупать ….? …. вы можете сделать его из этого учебника … Генератор функций - это то, что вам нужно …. В большей части проекта … Я использовал его для создания модуля беспроводной передачи энергии
Изучение нескольких основных функций SOLIDWORKS: создание шестигранной кости: 22 шага
Изучение нескольких основных функций SOLIDWORKS: Создание шестигранной кости: это руководство проведет вас через шаги, необходимые для создания трехмерной модели шестигранной кости. При разработке модели вы будете рисовать на плоскостях и поверхностях, выдавливать и вырезать 3D-формы, скругления внутренних и внешних углов или 3D-модель. При работе