Talaan ng mga Nilalaman:

Arduino UNO (paglikha ng Mga Menu at Pag-andar): 4 na Hakbang
Arduino UNO (paglikha ng Mga Menu at Pag-andar): 4 na Hakbang

Video: Arduino UNO (paglikha ng Mga Menu at Pag-andar): 4 na Hakbang

Video: Arduino UNO (paglikha ng Mga Menu at Pag-andar): 4 na Hakbang
Video: МАСТЕР-КЛАСС по Arduino | Полный семинар по программированию за 90 минут! 2024, Hulyo
Anonim
Arduino UNO (lumilikha ng Mga Menu at Pag-andar)
Arduino UNO (lumilikha ng Mga Menu at Pag-andar)
Arduino UNO (lumilikha ng Mga Menu at Pag-andar)
Arduino UNO (lumilikha ng Mga Menu at Pag-andar)

Sa pagtuturo na ito, susuriin namin kung paano lumikha ng mga menu, basahin ang temperatura mula sa isang sensor ng TC74A0 at ipakita ang "mga halaga" (sa kasong ito ang mga numero ng cellphone) sa paraang walang hanggan, ngunit limitado sa memorya ng arduino.

Gagamitin namin

-Arrays

-Liquid na kristal display

-Keypad

Kasama ang gabay sa gumagamit sa huling hakbang.

Hakbang 1: Mga Bahagi

Arduino Uno

· 4x4 keypad

· TC74A0 digital sensor ng temperatura

· I2c 16x2 LCD Module

· 16x2 likidong kristal na display

· Jumper wires

· Breadboard

· Personal na computer

· Arduino IDE

· Paglipat ng cable

Hakbang 2: Mga Kable ng Component

TEMP SENSOR AT LCD NA KONEKTO SA PAREHONG LINYA SA SDA AT SCL (A4, A5)

LCD (I2c Modyul)

o SDA hanggang A5 sa Arduino

o SCL hanggang A4 sa Arduino

o VCC hanggang 5V sa Arduino

o GND sa GND sa Arduino

· 4 x 4 Keypad

o Pin 1 - 8 sa Keypad na konektado sa pin 9 - 2 sa Arduino ayon sa pagkakabanggit

Sensor ng TC74A0 temp

o TC74A0 pin 2 sa SDA sa Arduino

o TC74A0 pin 3 sa GND sa Arduino

o TC74A0 pin 4 sa SCL sa Arduino

o TC74A0 pin 5 hanggang 5V sa Arduino

Hakbang 3: Code

#include // May kasamang mga aklatan kapag nag-iipon

# isama

# isama

# tukuyin ang Password_Lenght 5

# tukuyin ang Command_Lenght 3

# tukuyin ang CellNumber 10

int mga gumagamit = 0;

int Display = 0;

int address = 72; // tc74a0 ADDRESS

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 Master [Password_Lenght] = "5466"; // PASSWORD

char ExitData [Command_Lenght]; //

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

char MenuItem;

char CELLArrayA [10];

char CELLArrayB [10];

char CELLArrayC [10];

const byte ROWS = 4; // apat na hilera

const byte COLS = 4; // apat na haligi

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] = // 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);

walang bisa ang pag-setup ()

{

Serial.begin (9600); // lumilikha ito ng Serial Monitor

Wire.begin (); // Lumilikha ito ng isang Wire object

lcd.begin (16, 2);

lcd.backlight ();

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Mangyaring Maghintay 3"); // LOADING SCREEN

pagkaantala (1000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Mangyaring Maghintay 2");

pagkaantala (1000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Mangyaring Maghintay 1");

pagkaantala (300);

lcd.clear ();

String myString = "ARDUINO INSTRUCTABLE";

lcd.setCursor (2, 2);

lcd.print (myString);

pagkaantala (2500);

para sa (int scrollCounter = 0; scrollCounter <24; scrollCounter ++)

{

lcd.scrollDisplayLeft ();

pagkaantala (300);

}

lcd.clear ();

lcd.print ("Enter Password");

}

walang bisa loop ()

{

switch (Display) // SAAN SA PANGUNAHING MENU KAMI

{// ANG USER PRESS A, B, C, D

kaso 0:

{

Password ();

}

pahinga;

kaso 1:

{

lcd.clear ();

lcd.setCursor (0, 1);

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

lcd.setCursor (0, 0);

lcd.print ("Pangunahing Menu");

Ipakita = 2;

pagkaantala (100);

pahinga;

}

kaso 2:

{

char customKey = customKeypad.getKey ();

lumipat (customKey)

{

kaso 'A':

{

Serial.println ("Isang pinindot");

StoreUser ();

pahinga;

}

kaso 'B':

{

Serial.println ("B ay pinindot");

kung (mga gumagamit == 0) {

lcd.clear ();

lcd.print ("WALANG NAGLIGTAS NA MAMAMAY");

pagkaantala (3000);

lcd.clear ();

Ipakita = 1;

pahinga;

}

Mga DisplayUser (); pahinga;

}

kaso 'C':

{

Serial.println ("C ay pinindot"); // USED DURING TESTING

int ext = 0;

habang (! ext) {

char ch;

temp = TempMenu ();

kung (temp! = tempPre) {

lcd.clear ();

lcd.print ("Pansamantalang");

lcd.setCursor (0, 1);

lcd.print (temp);

lcd.print ("C");

tempPre = temp;

pagkaantala (500);

}

ch = customKeypad.getKey ();

kung (ch == '*') // EXIT TEMPERATURE MENU (kung * PRESSED)

{

ext = 1;

lcd.clear ();

Ipakita = 1;

}

}

pahinga;

TempMenu ();

pahinga;

}

kaso 'D':

{

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("NUA PRAC");

lcd.setCursor (0, 1);

lcd.print ("JB SCHOEMAN");

pagkaantala (3000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("MAY 2019");

lcd.setCursor (0, 1);

lcd.print ("CC OOSTHUIZEN");

pagkaantala (3000);

lcd.clear ();

Ipakita = 1;

}

}

}

}

}

// CUSTOM FUNCTIONS TO CALL VALUES O PAMAMARAAN

walang bisa ang Password ()

{

char customKey = customKeypad.getKey ();

kung tinitiyak ng (customKey) // na ang isang key ay talagang pinindot, katumbas ng (customKey! = NO_KEY)

{

Data [data_count] = pasadyaKey; // store char into data array

lcd.setCursor (data_count, 1); // ilipat ang cursor upang ipakita ang bawat bagong char

lcd.print ("*"); // print char sa nasabing cursor

data_count ++; // increment data array ng 1 upang mag-imbak ng bagong char, subaybayan din ang bilang ng mga char na ipinasok

}

kung (data_count == Password_Lenght-1) // kung ang array index ay katumbas ng bilang ng mga inaasahang chars, ihambing ang data sa master

{

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Ang password ay");

kung (! strcmp (Data, Master)) // katumbas ng (strcmp (Data, Master) == 0)

{

lcd.print ("Mabuti");

lcd.clear ();

Ipakita = 1;

}

iba pa

lcd.print ("Masama");

antala (1000); // nagdagdag ng 1 segundong pagkaantala upang matiyak na ang password ay ganap na ipinakita sa screen bago ito ma-clear.

lcd.clear ();

clearData ();

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Enter Password");

}

}

int TempMenu ()

{

Wire.beginTransmission (address);

Wire.write (0);

Wire.endTransmission ();

Wire.requestFrom (address, 1);

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

int c = Wire.read ();

bumalik c;

}

void clearData ()

{

habang (data_count! = 0)

{// Maaari itong magamit para sa anumang laki ng array, Data [data_count--] = 0; // clear array para sa bagong data

}

}

walang bisa ang StoreUser ()

{

int ext = 0;

int gumagamit;

char ch;

habang (! ext) {

lcd.clear ();

lcd.print ("Enter User");

gumagamit = mga gumagamit + 1;

lcd.print (gumagamit);

int x = 0;

habang (! x) {

para sa (int i = 0; i <10; i ++) {

ch = customKeypad.waitForKey ();

lcd.setCursor (i, 1);

lcd.print (ch);

userNum [gumagamit - 1] = ch;

}

pagkaantala (500);

lcd.clear ();

lcd.print ("Magpatuloy");

lcd.setCursor (0, 1);

lcd.print ("* oo # hindi");

ch = customKeypad.waitForKey ();

kung (ch == '*') {

x = 1;

}

kung (ch == '#') {

x = 1;

ext = 1;

lcd.clear ();

Ipakita = 1;

}

}

mga gumagamit ++;

}

}

walang bisa ang mga DisplayUser ()

{

lcd.clear ();

para sa (int i = 0; i <mga gumagamit; i ++) {

lcd.print ("Nai-save na Gumagamit");

lcd.print (i + 1);

para sa (int u = 0; u <10; u ++) {

lcd.setCursor (u, 1);

lcd.print (userNum [u]);

}

pagkaantala (2000);

lcd.clear ();

Ipakita = 1;

}

}

Hakbang 4: Gabay sa Gumagamit

1. Sa paglipat ng proyekto, lilitaw ang isang loading o welcome screen.

2. lilitaw ang isang "Enter Password" na screen, pinapayagan ka ng screen na ito na magpasok ng 4 na mga character, titik o numero, ang tamang password ay: 5466, bibigyan ka nito ng pag-access sa pangunahing menu.

3. Sa pagpasok ng tamang password, lilitaw ang pangunahing menu na may 4 na posibleng mga pagpipilian upang mag-navigate sa iba't ibang magagamit na mga pag-andar.

· A - Ipasok ang mga numero ng cell phone ng gumagamit.

o Magpasok ng 10 digit upang mai-save ang isang gumagamit sa system

o Pagkatapos ng 10 digit na ipinasok pindutin ang "*" upang magdagdag ng higit pang mga gumagamit, o pindutin ang "#" upang lumabas pabalik sa pangunahing menu

· B - Ipakita ang nai-save na mga gumagamit

o Ang mga gumagamit ay mag-scroll sa nakaraang screen, ipinapakita ang mga ito nang 3 segundo bawat isa, sa sandaling maipakita ang lahat ng mga gumagamit ay magsasara ang pahina at babalik sa pangunahing menu.

o Kung walang mga gumagamit na naidagdag sa menu na pagpipilian A, ipapakita nito ang "WALANG NA-save na mga Gumagamit".

· C - Nagpapakita ng live na temperatura

o Pindutin ang “*“upang lumabas pabalik sa pangunahing menu

· D - Ipakita ang maikling teksto

o Ipinapakita ang pangalan ng lumikha at ang paksang pinag-ipunan para sa isang petsa.

Inirerekumendang: