Съдържание:
- Стъпка 1: Компоненти
- Стъпка 2: Компонентно окабеляване
- Стъпка 3: Код
- Стъпка 4: РЪКОВОДСТВО ЗА ПОТРЕБИТЕЛИ
Видео: Arduino UNO (създаване на менюта и функции): 4 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:52
В тази инструкция ще изследваме как да създаваме менюта, да четем температура от сензор 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 Показва името на създателя и темата, за която е съставен, с дата.
Препоръчано:
(2) Започване на създаване на игра - Създаване на начален екран в Unity3D: 9 стъпки
(2) Започване на създаване на игра - Създаване на пръскащ екран в Unity3D: В тази инструкция ще научите как да направите прост начален екран в Unity3D. Първо, ще отворим Unity
Създаване на Bluetooth адаптер Pt.2 (Създаване на съвместим високоговорител): 16 стъпки
Изработка на Bluetooth адаптер Pt.2 (Създаване на съвместим високоговорител): В тази инструкция ще ви покажа как да използвам моя Bluetooth адаптер, за да направя стария високоговорител съвместим с Bluetooth.*Ако не сте прочели първата ми инструкция за „Изработване Bluetooth адаптер " Предлагам ви да го направите, преди да продължите
По -малко известни функции на Arduino: 9 стъпки
По -малко известни функции на Arduino: Това е по -скоро списък на не толкова често споменавани функции на обикновено използваните платформи на Arduino (например Uno, Nano). Този списък трябва да служи като справка, когато трябва да потърсите тези функции и да разпространите думата. Погледнете кода, за да видите
Преносим генератор на функции на Arduino: 7 стъпки (със снимки)
Преносим генератор на функции на Arduino: Генераторът на функции е много полезен инструмент, особено когато обмисляме да тестваме реакцията на нашата верига на определен сигнал. В тази инструкция ще опиша последователността на изграждане на малък, лесен за използване, преносим генератор на функции
Генератор на тонове Arduino без библиотека или серийни функции (с прекъсвания): 10 стъпки
Arduino Tone Generator без библиотека или серийни функции (с прекъсвания): Това обикновено не е нещо, на което обикновено бих инструктирал, предпочитам моята метална конструкция, но тъй като съм студент по електротехника и трябва да взема курс по микроконтролери ( Дизайн на вградени системи), мислех, че ще направя инструкция на един от моите п