Orodha ya maudhui:

Arduino UNO (kuunda Menyu na Kazi): Hatua 4
Arduino UNO (kuunda Menyu na Kazi): Hatua 4

Video: Arduino UNO (kuunda Menyu na Kazi): Hatua 4

Video: Arduino UNO (kuunda Menyu na Kazi): Hatua 4
Video: Функция Arduino Millis поясняется 3 примерами 2024, Julai
Anonim
Arduino UNO (kuunda Menyu na Kazi)
Arduino UNO (kuunda Menyu na Kazi)
Arduino UNO (kuunda Menyu na Kazi)
Arduino UNO (kuunda Menyu na Kazi)

Katika mafunzo haya tutachunguza jinsi ya kuunda menyu, kusoma joto kutoka kwa sensa ya TC74A0 na kuonyesha "maadili" (katika kesi hii nambari za rununu) kwa njia ambayo haina mwisho, lakini imepunguzwa kwa kumbukumbu ya arduino kwenye bodi.

Tutatumia

-Kukosea

Maonyesho ya kioo ya maji

-Kipuni

Mwongozo wa mtumiaji umejumuishwa katika hatua ya mwisho.

Hatua ya 1: Vipengele

Arduino Uno

Kitufe cha 4x4

· TC74A0 sensorer ya joto ya dijiti

· Moduli ya LCD ya I2c 16x2

· 16x2 kioevu kioo kuonyesha

· Nyaya za jumper

· Bodi ya mkate

· Kompyuta binafsi

· Arduino IDE

· Hamisha kebo

Hatua ya 2: Wiring ya Sehemu

SENSOR YA TEMP NA LCD IMEUNGANISHWA KWENYE MSTARI HUOO KWA SDA NA SCL (A4, A5)

LCD (Moduli ya I2c)

o SDA hadi A5 kwenye Arduino

o SCL hadi A4 kwenye Arduino

o VCC hadi 5V kwenye Arduino

o GND kwa GND kwenye Arduino

· 4 x 4 Keypad

o Bandika 1 - 8 kwenye keypad iliyounganishwa na kubandika 9 - 2 kwenye Arduino mtawaliwa

Sensor ya muda ya TC74A0

o TC74A0 pini 2 kwa SDA kwenye Arduino

o TC74A0 pini 3 hadi GND kwenye Arduino

o TC74A0 pini 4 hadi SCL kwenye Arduino

o TC74A0 pini 5 hadi 5V kwenye Arduino

Hatua ya 3: Kanuni

# pamoja na // Inajumuisha maktaba wakati wa kukusanya

# pamoja

# pamoja

#fafanua Nenosiri_Lenght 5

#fafanua Amri_Lenght 3

#fafanua Nambari ya Kiini 10

watumiaji ndani = 0;

Kuonyesha int = 0;

anwani ya int = 72; // tc74a0 ANWANI

int I = 0;

int USER;

int X = 0;

int XY = 0;

muda;

int tempPre = 0;

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

data ya char [Nenosiri_Lenght];

char Mwalimu [Nenosiri_Lenght] = "5466"; // NENO

char ExitData [Amri_Lenght]; //

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

char MenuItem;

char CELLArrayA [10];

char CELLArrayB [10];

char CELLArrayC [10];

const byte ROWS = 4; // safu nne

const byte COLS = 4; // nguzo nne

Pini za baiti [ROWS] = {5, 4, 3, 2};

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

data_ hesabu = 0, hesabu_nambari = 0;

bool Pass_is_good;

LiquidCrystal_I2C LCD (0x26, 16, 2);

char hexaKeys [ROWS] [COLS] = // INITIATING KEYPAD

{

{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}

};

Keypad customKeypad = Keypad (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS);

kuanzisha batili ()

{

Kuanzia Serial (9600); // hii inaunda Monitor Monitor

Wire.begin (); // hii inaunda kitu cha waya

lcd kuanza (16, 2);

lcd taa ya nyuma ();

lcd wazi ();

lcd.setCursor (0, 0);

lcd.print ("Tafadhali Subiri 3"); // KIWANGO CHA KUPakia

kuchelewesha (1000);

lcd wazi ();

lcd.setCursor (0, 0);

lcd.print ("Tafadhali Subiri 2");

kuchelewesha (1000);

lcd wazi ();

lcd.setCursor (0, 0);

lcd.print ("Tafadhali Subiri 1");

kuchelewesha (300);

lcd wazi ();

Kamba myString = "ARDUINO INSTRUCTABLE";

lcd.setCursor (2, 2);

lcd.print (myString);

kuchelewesha (2500);

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

{

lcd.scrollDisplayLeft ();

kuchelewesha (300);

}

lcd wazi ();

lcd.print ("Ingiza Nenosiri");

}

kitanzi batili ()

{

badilisha (Onyesha) // WAPI MENU KUU TUPO

{// JE, MTUMIAJI HABARI A, B, C, D

kesi 0:

{

Nenosiri ();

}

kuvunja;

kesi 1:

{

lcd wazi ();

lcd.setCursor (0, 1);

lcd.print ("A B C D");

lcd.setCursor (0, 0);

lcd.print ("Menyu kuu");

Onyesha = 2;

kuchelewesha (100);

kuvunja;

}

kesi 2:

{

char customKey = customKeypad.getKey ();

kubadili (customKey)

{

kesi 'A':

{

Serial.println ("A ilibonyezwa");

Duka la Mtumiaji ();

kuvunja;

}

kesi 'B':

{

Serial.println ("B ilibonyezwa");

ikiwa (watumiaji == 0) {

lcd wazi ();

lcd.print ("HAKUNA WATUMIAJI WALIOOKOA");

kuchelewesha (3000);

lcd wazi ();

Onyesha = 1;

kuvunja;

}

Watumiaji wa Maonyesho (); kuvunja;

}

kesi 'C':

{

Serial.println ("C ilibonyezwa"); // KUTUMIWA WAKATI WA KUPIMA

int ext = 0;

wakati (! ext) {

char ch;

temp = TempMenu ();

ikiwa (temp! = tempPre) {

lcd wazi ();

lcd.print ("Temparature");

lcd.setCursor (0, 1);

lcd.print (temp);

lcd.print ("C");

tempPre = muda;

kuchelewesha (500);

}

ch = customKeypad.getKey ();

ikiwa (ch == '*') // TOKA MENU YA JOTO (ikiwa * IMESITIWA)

{

ext = 1;

lcd wazi ();

Onyesha = 1;

}

}

kuvunja;

TempMenu ();

kuvunja;

}

kesi 'D':

{

lcd wazi ();

lcd.setCursor (0, 0);

lcd.print ("NUA PRAC");

lcd.setCursor (0, 1);

lcd.print ("JB SCHOEMAN");

kuchelewesha (3000);

lcd wazi ();

lcd.setCursor (0, 0);

lcd.print ("MEI 2019");

lcd.setCursor (0, 1);

lcd.print ("CC OOSTHUIZEN");

kuchelewesha (3000);

lcd wazi ();

Onyesha = 1;

}

}

}

}

}

// KAZI ZA HESHIMA ZA KUITA MAADILI AU TARATIBU

Nenosiri tupu ()

{

char customKey = customKeypad.getKey ();

ikiwa [customKey] // inahakikisha kitufe kimeshinikizwa, sawa na [customKey! = NO_KEY]

{

Takwimu [data_count] = customKey; // duka char kwenye safu ya data

lcd.setCursor (data_count, 1); // songa mshale kuonyesha kila char mpya

lcd.print ("*"); // chapa char kwenye mshale uliosemwa

data_ hesabu ++; // safu ya data ya kuongezeka kwa 1 kuhifadhi char mpya, pia fuatilia idadi ya chars zilizoingizwa

}

ikiwa (data_count == Password_Lenght-1) // ikiwa safu ya safu ni sawa na idadi ya chars zinazotarajiwa, linganisha data na bwana

{

lcd wazi ();

lcd.setCursor (0, 0);

lcd.print ("Nenosiri ni");

ikiwa (! strcmp (Data, Master)) // sawa na (strcmp (Data, Master) == 0)

{

lcd.print ("Nzuri");

lcd wazi ();

Onyesha = 1;

}

mwingine

lcd.print ("Mbaya");

ucheleweshaji (1000);

lcd wazi ();

clearData ();

lcd wazi ();

lcd.setCursor (0, 0);

lcd.print ("Ingiza Nenosiri");

}

}

int TempMenu ()

{

Uwasilishaji wa waya (anwani);

Andika waya (0);

Uwasilishaji wa waya ();

Ombi la Waya.kutoka (anwani, 1);

wakati (Wire.available () == 0);

int c = Kusoma kwa waya ();

kurudi c;

}

batili clearData ()

{

wakati (data_count! = 0)

{// Hii inaweza kutumika kwa saizi yoyote ya safu, Takwimu [data_ hesabu--] = 0; // safu wazi ya data mpya

}

}

Utupu wa Duka la Mtumiaji ()

{

int ext = 0;

mtumiaji wa ndani;

char ch;

wakati (! ext) {

lcd wazi ();

lcd.print ("Ingiza Mtumiaji");

mtumiaji = watumiaji + 1;

lcd.print (mtumiaji);

int x = 0;

wakati (! x) {

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

ch = customKeypad.waitForKey ();

lcd.setCursor (i, 1);

lcd.print (ch);

userNum [mtumiaji - 1] = ch;

}

kuchelewesha (500);

lcd wazi ();

lcd.print ("Endelea");

lcd.setCursor (0, 1);

lcd.print ("* ndiyo # hapana");

ch = customKeypad.waitForKey ();

ikiwa (ch == '*') {

x = 1;

}

ikiwa (ch == '#') {

x = 1;

ext = 1;

lcd wazi ();

Onyesha = 1;

}

}

watumiaji ++;

}

}

Watumiaji wa Utupu ()

{

lcd wazi ();

kwa (int i = 0; i <watumiaji; i ++) {

lcd.print ("Mtumiaji aliyeokoka");

lcd.print (i + 1);

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

lcd.setCursor (u, 1);

lcd.print (userNum [u]);

}

kuchelewa (2000);

lcd wazi ();

Onyesha = 1;

}

}

Hatua ya 4: MWONGOZO WA MTUMIAJI

1. Baada ya kuwasha mradi, skrini ya kupakia au kukaribisha itaonekana.

2. Skrini ya "Ingiza Nenosiri" itaonekana, skrini hii hukuruhusu kuingiza herufi 4, herufi au nambari, nenosiri sahihi ni: 5466, hii itakupa ufikiaji wa menyu kuu.

3. Baada ya kuingiza nywila sahihi, menyu kuu itaonekana na chaguzi 4 zinazowezekana kuzunguka kazi tofauti zinazopatikana.

· A - Ingiza nambari za simu za rununu za mtumiaji.

o Ingiza nambari 10 ili kuokoa mtumiaji kwenye mfumo

o Baada ya nambari 10 kuingizwa bonyeza "*" kuongeza watumiaji zaidi, au bonyeza "#" ili kurudi kwenye menyu kuu

· B - Onyesha watumiaji waliohifadhiwa

Watumiaji watapita mbele ya skrini, huonyeshwa kwa sekunde 3 kila mmoja, mara tu watumiaji wote wataonyeshwa ukurasa utafunga na kurudi kwenye menyu kuu.

o Ikiwa hakuna watumiaji walioongezwa kwenye chaguo la menyu A, itaonyesha "HAKUNA WATUMIAJI WALIOOKOA".

· C - Inaonyesha joto la moja kwa moja

o Bonyeza "*" ili kurudi kwenye menyu kuu

· D - Onyesha maandishi mafupi

o Inaonyesha jina la muumbaji na mada iliyoandaliwa kwa tarehe.

Ilipendekeza: