Мазмуну:
Video: Arduino UNO (менюларды жана функцияларды түзүү): 4 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:40
Бул нускамада биз кантип менюларды түзүүнү, 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 Жаратуучунун атын жана датасы менен түзүлгөн теманы көрсөтөт.
Сунушталууда:
Таблицаны кантип түзүү жана киргизүү жана Microsoft Office Word 2007деги ошол столго кошумча мамычаларды жана/же саптарды кошуу: 11 кадам
Таблицаны кантип түзүү жана киргизүү жана Microsoft Office Word 2007деги ошол таблицага кошумча мамычаларды жана/же саптарды кошуу: Сизде иштеп жаткан жана өзүңүз жөнүндө ойлогон көптөгөн маалыматтарыңыз бар беле … " Мен кантип баарын жасай алам? бул маалыматтын жакшыраак көрүнүшү жана түшүнүүгө оңойбу? " Эгер ошондой болсо, анда Microsoft Office Word 2007деги таблица сиздин жообуңуз болушу мүмкүн
Кантип портативдүү акылдуу күзгү түзүү/куту айкалышын түзүү: 8 кадам
Кантип портативдүү акылдуу күзгү түзүү/куту айкалыштыруу: Дэвистеги капстоюнум үчүн акыркы долбоор катары & Элкинс колледжи, мен порт катары иштей турган чоң күзгү жана малина пи жана сыйкырдуу күзгү программалык платформасын колдонуу менен бирге саякат кутусун иштеп чыгууну чечтим
RaspberryPi 3/4 кеңейтүү тактасы Raspberry Pi'ге кошумча функцияларды кошуу үчүн: 15 кадам (сүрөттөр менен)
RaspberryPi 3/4 кеңейтүү тактасы Raspberry Pi'ге кошумча функцияларды кошуу үчүн: биз билебиз, малина pi 3/4 ADCде (санариптик конверторго аналогдук) жана RTCде (реалдуу убакыт сааты) орнотулган эмес, ошондуктан мен 16 камтыган ПХБны иштеп чыгам. канал 12bit ADC, RTC, SIM7600 4G модулу, баскычтар, реле, USB өчүрүү, 5V өчүрүү, 12V pow
Үйрөткүч: Arduino Uno жана УЗИ сенсорунун жардамы менен диапазонду кантип түзүү керек: 3 кадам
Үйрөткүч: Arduino Uno жана Ultrasonic Sensor аркылуу диапазонду кантип түзүү керек: Description: Бул окуу куралы УЗИ сенсорунун (US-015) жана анын алдындагы тоскоолдуктун ортосундагы аралыкты өлчөй турган жөнөкөй диапазонду кантип жасоону көрсөтөт. Бул US-015 УЗИ сенсору аралыкты өлчөө үчүн эң сонун сенсор болуп саналат жана
Mac Терминалын кантип колдонуу керек жана Негизги функцияларды кантип колдонуу керек: 4 кадам
Mac Терминалын кантип колдонуу керек жана Негизги функцияларды кантип колдонуу керек: Биз сизге MAC Терминалын кантип ачууну көрсөтөбүз. Биз ошондой эле сизге терминалдын ичинде ifconfig, каталогдорду өзгөртүү, файлдарга кирүү жана arp сыяктуу бир нече мүмкүнчүлүктөрдү көрсөтөбүз. Ifconfig сизге IP дарегиңизди жана MAC жарнагыңызды текшерүүгө мүмкүндүк берет