Агуулгын хүснэгт:

Arduino UNO (цэс ба функц үүсгэх): 4 алхам
Arduino UNO (цэс ба функц үүсгэх): 4 алхам

Видео: Arduino UNO (цэс ба функц үүсгэх): 4 алхам

Видео: Arduino UNO (цэс ба функц үүсгэх): 4 алхам
Видео: LDmicro 2: Создание лестничной схемы (программирование лестничной логики ПЛК микроконтроллера с помощью LDmicro) 2024, Долдугаар сарын
Anonim
Arduino UNO (цэс, функц үүсгэх)
Arduino UNO (цэс, функц үүсгэх)
Arduino UNO (цэс, функц үүсгэх)
Arduino UNO (цэс, функц үүсгэх)

Энэхүү зааварчилгаанд бид цэс хэрхэн үүсгэх, TC74A0 мэдрэгчээс температурыг унших, "утга" (энэ тохиолдолд гар утасны дугаар) -ийг хязгааргүй, гэхдээ зөвхөн санах ойн санах ойд хязгаарлагдмал байдлаар харуулах талаар судлах болно.

Бид ашиглах болно

-Массивууд

-Шингэн болор дэлгэц

-Товчлуур

Хэрэглэгчийн гарын авлага эцсийн шатанд багтсан болно.

Алхам 1: бүрэлдэхүүн хэсгүүд

Ардуино Уно

· 4х4 хэмжээтэй товчлуур

· TC74A0 дижитал температур мэдрэгч

· I2c 16x2 LCD модуль

· 16x2 хэмжээтэй шингэн болор дэлгэц

· Холбогч утас

· Талхны самбар

· Хувийн компьютер

· Arduino IDE

· Дамжуулах кабель

Алхам 2: Бүрэлдэхүүн хэсгүүдийн утас

TEMP SENSOR ба LCD нь SDA, SCL (A4, A5) -тэй ижил шугамаар холбогдсон

LCD (I2c модуль)

o Arduino дээрх SDA -аас A5 хүртэл

o SCL -ийг Arduino дээр A4 болгоно

o Arduino дээрх VCC -ийг 5V хүртэл

o Arduino дээр GND -ээс GND хүртэл

· 4 x 4 товчлуур

o Товчлуурын 1-8 -р зүү нь Arduino дээрх 9-2 -р зүүтэй холбогдсон байна

TC74A0 температур мэдрэгч

o TC74A0 2 -р зүүг Arduino дээрх SDA руу холбоно уу

o TC74A0 pin 3 -ийг Arduino дээрх GND руу холбоно уу

o TC74A0 pin 4 -ийг Arduino дээрх SCL руу холбоно уу

o Arduino дээрх TC74A0 5 -аас 5V зүү

Алхам 3: Код

#include // Эмхэтгэх үед номын санг агуулдаг

#оруулах

#оруулах

#Нууц үгийг тодорхойлох_Уртас 5

Тушаалын_Уртыг тодорхойлох 3

#эсийн дугаарыг тодорхойлох 10

int хэрэглэгчид = 0;

int Дэлгэц = 0;

int хаяг = 72; // tc74a0 ХАЯГ

int I = 0;

int USER;

int X = 0;

int XY = 0;

int температур;

int tempPre = 0;

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

char Өгөгдөл [Нууц үг_Урт];

char мастер [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};

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'}

};

Keypad customKeypad = Товчлуур (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS);

хүчингүй тохиргоо ()

{

Цуваа эхлэх (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 ("Нууц үг оруулах");

}

хоосон давталт ()

{

унтраалга (Дэлгэц) // ХААНА ХОЛБОГДОХ ГЭДЭГ МЕНЮД БИД

{// ХЭРЭГЛЭГЧ 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 (); завсарлага;

}

'С' тохиолдол:

{

Serial.println ("C дарагдсан"); // Туршилтын явцад ашигласан

int ext = 0;

байхад (! ext) {

char ch;

temp = TempMenu ();

if (temp! = tempPre) {

lcd.clear ();

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

lcd.setCursor (0, 1);

lcd.хэвлэх (температур);

lcd.print ("C");

tempPre = температур;

саатал (500);

}

ch = customKeypad.getKey ();

if (ch == ' *') // TEMPERATURE MENU -с гарах (хэрэв * ХЭВЛЭСЭН бол)

{

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 ("5 -р сарын 2019");

lcd.setCursor (0, 1);

lcd.print ("CC OOSTHUIZEN");

саатал (3000);

lcd.clear ();

Дэлгэц = 1;

}

}

}

}

}

// ҮНЭ ЦЭНЭ, ЖУРАМ ДУУДАХ ГААЛИЙН ФУНКЦИОН

хүчингүй нууц үг ()

{

char customKey = customKeypad.getKey ();

хэрэв (customKey) // товчлуур дарагдсан эсэхийг шалгадаг бол (customKey! = NO_KEY)

{

Өгөгдөл [data_count] = customKey; // char -ийг өгөгдлийн массивт хадгалах

lcd.setCursor (data_count, 1); // шинэ тэмдэгтийг харуулахын тулд курсороо хөдөлгөнө үү

lcd.print ("*"); // заасан курсор дээр char хэвлэ

өгөгдлийн тоо ++; // шинэ тэмдэгт хадгалахын тулд өгөгдлийн массивыг 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 ();

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

{

байхад (data_count! = 0)

{// Үүнийг дурын массивын хэмжээтэй ашиглаж болно, Өгөгдөл [data_count--] = 0; // шинэ өгөгдлийн массивыг арилгах

}

}

хоосон StoreUser ()

{

int ext = 0;

int хэрэглэгч;

char ch;

байхад (! ext) {

lcd.clear ();

lcd.print ("Хэрэглэгч оруулах");

хэрэглэгч = хэрэглэгчид + 1;

lcd.print (хэрэглэгч);

int x = 0;

байхад (! x) {

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

ch = customKeypad.waitForKey ();

lcd.setCursor (i, 1);

lcd.хэвлэх (ch);

userNum [хэрэглэгч - 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 ();

Дэлгэц = 1;

}

}

хэрэглэгчид ++;

}

}

void DisplayUsers ()

{

lcd.clear ();

for (int i = 0; i <хэрэглэгчид; i ++) {

lcd.print ("Хадгалсан хэрэглэгч");

lcd.хэвлэх (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 А цэсний сонголтод хэрэглэгч нэмээгүй бол "ХАДГАЛААГҮЙ ХЭРЭГЛЭГЧ Үгүй" -ийг харуулна.

· C - Амьд температурыг харуулна

o " *" товчийг дарж үндсэн цэс рүү буцна уу

· D - Богино текстийг харуулах

o Бүтээгчийн нэр, эмхэтгэсэн сэдвийг огноогоор харуулна.

Зөвлөмж болгож буй: