Satura rādītājs:

Arduino UNO (izvēlņu un funkciju izveide): 4 soļi
Arduino UNO (izvēlņu un funkciju izveide): 4 soļi

Video: Arduino UNO (izvēlņu un funkciju izveide): 4 soļi

Video: Arduino UNO (izvēlņu un funkciju izveide): 4 soļi
Video: Lesson 02 Arduino IDE Software | Robojax Arduino Step By Step Course 2024, Jūlijs
Anonim
Arduino UNO (izvēlņu un funkciju izveide)
Arduino UNO (izvēlņu un funkciju izveide)
Arduino UNO (izvēlņu un funkciju izveide)
Arduino UNO (izvēlņu un funkciju izveide)

Šajā pamācībā mēs pētīsim, kā izveidot izvēlnes, nolasīt temperatūru no TC74A0 sensora un parādīt "vērtības" (šajā gadījumā mobilo tālruņu numurus) bezgalīgā veidā, bet aprobežojoties ar arduino iebūvēto atmiņu.

Mēs izmantosim

-Masīvi

-Šķidro kristālu displejs

-Tastatūra

Lietotāja rokasgrāmata ir iekļauta pēdējā posmā.

1. darbība: sastāvdaļas

Arduino Uno

· 4x4 tastatūra

· TC74A0 digitālais temperatūras sensors

· I2c 16x2 LCD modulis

· 16x2 šķidro kristālu displejs

· Jumper vadi

· Maizes dēlis

· Personālais dators

· Arduino IDE

· Pārneses kabelis

2. darbība: komponentu vadu savienošana

TEMP SENSOR un LCD VIENĀ LĪNIJĀ savienots ar SDA un SCL (A4, A5)

LCD (I2c modulis)

o SDA līdz A5 Arduino

o SCL uz A4 Arduino

o VCC līdz 5V uz Arduino

o no GND līdz GND vietnē Arduino

· 4 x 4 tastatūra

o 1. - 8. tapa uz tastatūras, kas attiecīgi pievienota Arduino 9. - 2. tapai

TC74A0 temperatūras sensors

o TC74A0 2. tapa SDA uz Arduino

o TC74A0 3. tapa uz GND Arduino

o TC74A0 4. tapa uz SCL Arduino

o TC74A0 pin no 5 līdz 5V uz Arduino

3. darbība: kods

#include // Kompilējot ietver bibliotēkas

#iekļaut

#iekļaut

#define Password_Lenght 5

#define Command_Lenght 3

#define CellNumber 10

int lietotāji = 0;

int Displejs = 0;

int adrese = 72; // tc74a0 ADRESE

int I = 0;

int USER;

int X = 0;

int XY = 0;

int temp;

int tempPre = 0;

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

char dati [Password_Lenght];

char meistars [Password_Lenght] = "5466"; // PAROLE

char ExitData [Command_Lenght]; //

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

char MenuItem;

char CELLArrayA [10];

char CELLArrayB [10];

ogle CELLArrayC [10];

const baits ROWS = 4; // četras rindas

const baits COLS = 4; // četras kolonnas

baits rowPins [ROWS] = {5, 4, 3, 2};

baits colPins [COLS] = {9, 8, 7, 6};

baitu datu_skaitlis = 0, galvenais_skaitlis = 0;

bool Pass_is_good;

LiquidCrystal_I2C LCD (0x26, 16, 2);

char hexaKeys [ROWS] [COLS] = // ATSLĒGŠANAS ATSLĒGŠANA

{

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

};

Tastatūra customKeypad = Tastatūra (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS);

anulēts iestatījums ()

{

Sērijas sākums (9600); // tas izveido sērijas monitoru

Wire.begin (); // tas rada Wire objektu

lcd. sākums (16, 2);

lcd.fona apgaismojums ();

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Lūdzu, pagaidiet 3"); // IEKRĀVES Ekrāns

kavēšanās (1000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Lūdzu, pagaidiet 2");

kavēšanās (1000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Lūdzu, uzgaidiet 1");

kavēšanās (300);

lcd.clear ();

String myString = "ARDUINO INSTRUCTABLE";

lcd.setCursor (2, 2);

lcd.print (myString);

kavēšanās (2500);

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

{

lcd.scrollDisplayLeft ();

kavēšanās (300);

}

lcd.clear ();

lcd.print ("Ievadiet paroli");

}

tukša cilpa ()

{

slēdzis (displejs) // KUR GALVENAJĀ IZVĒLNĒ IR MĒS

{// VAI LIETOTĀJS Nospieda A, B, C, D

0 gadījums:

{

Parole ();

}

pārtraukums;

1. gadījums:

{

lcd.clear ();

lcd.setCursor (0, 1);

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

lcd.setCursor (0, 0);

lcd.print ("Galvenā izvēlne");

Displejs = 2;

kavēšanās (100);

pārtraukums;

}

2. gadījums:

{

char customKey = customKeypad.getKey ();

slēdzis (customKey)

{

gadījums “A”:

{

Serial.println ("A tika nospiests");

StoreUser ();

pārtraukums;

}

gadījums “B”:

{

Serial.println ("B tika nospiests");

ja (lietotāji == 0) {

lcd.clear ();

lcd.print ("NO SAVED USERS");

kavēšanās (3000);

lcd.clear ();

Displejs = 1;

pārtraukums;

}

DisplayUsers (); pārtraukums;

}

gadījums “C”:

{

Serial.println ("C tika nospiests"); // LIETO TESTĒŠANAS LAIKĀ

int ext = 0;

kamēr (! ext) {

char ch;

temp = TempMenu ();

ja (temp! = tempPre) {

lcd.clear ();

lcd.print ("Temperatūra");

lcd.setCursor (0, 1);

lcd.print (temp);

lcd.print ("C");

tempPre = temp;

kavēšanās (500);

}

ch = customKeypad.getKey ();

ja (ch == ' *') // IZEJAS TEMPERATŪRAS IZVĒLNE (ja * NOSPIED)

{

ekst = 1;

lcd.clear ();

Displejs = 1;

}

}

pārtraukums;

TempMenu ();

pārtraukums;

}

gadījums “D”:

{

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("NUA PRAC");

lcd.setCursor (0, 1);

lcd.print ("JB SCHOEMAN");

kavēšanās (3000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("MAY 2019");

lcd.setCursor (0, 1);

lcd.print ("CC OOSTHUIZEN");

kavēšanās (3000);

lcd.clear ();

Displejs = 1;

}

}

}

}

}

// PIELĀGOTĀS FUNKCIJAS VĒRTĪBU VAI PROCEDŪRU IZSAUKŠANAI

nederīga parole ()

{

char customKey = customKeypad.getKey ();

if (customKey) // pārliecinās, vai ir nospiesta taustiņš, vienāds ar (customKey! = NO_KEY)

{

Dati [data_count] = customKey; // uzglabāt char datu masīvā

lcd.setCursor (datu_skaitlis, 1); // pārvietojiet kursoru, lai parādītu katru jauno simbolu

lcd.print ("*"); // drukāt char pie minētā kursora

data_count ++; // palieliniet datu masīvu par 1, lai saglabātu jaunu rakstzīmi, kā arī sekojiet ievadīto rakstzīmju skaitam

}

if (data_count == Password_Lenght-1) // ja masīva indekss ir vienāds ar paredzamo rakstzīmju skaitu, salīdziniet datus ar galveno

{

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Parole ir");

ja (! strcmp (dati, galvenais)) // vienāds ar (strcmp (dati, galvenais) == 0)

{

lcd.print ("Labs");

lcd.clear ();

Displejs = 1;

}

citādi

lcd.print ("Slikti");

delay (1000); // pievienoja 1 sekundes aizkavi, lai pārliecinātos, ka parole tiek pilnībā parādīta ekrānā, pirms tā tiek izdzēsta.

lcd.clear ();

izdzēst datus();

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Ievadiet paroli");

}

}

int TempMenu ()

{

Wire.beginTransmission (adrese);

Wire.write (0);

Wire.endTransmission ();

Wire.requestFrom (adrese, 1);

kamēr (Wire.available () == 0);

int c = Wire.read ();

atgriešanās c;

}

void clearData ()

{

kamēr (data_count! = 0)

{// To var izmantot jebkura masīva izmēram, Dati [data_count--] = 0; // notīrīt masīvu jauniem datiem

}

}

anulēts StoreUser ()

{

int ext = 0;

int lietotājs;

char ch;

kamēr (! ext) {

lcd.clear ();

lcd.print ("Ievadiet lietotāju");

lietotājs = lietotāji + 1;

lcd.print (lietotājs);

int x = 0;

kamēr (! x) {

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

ch = customKeypad.waitForKey ();

lcd.setCursor (i, 1);

lcd.print (ch);

userNum [lietotājs - 1] = ch;

}

kavēšanās (500);

lcd.clear ();

lcd.print ("Turpināt");

lcd.setCursor (0, 1);

lcd.print ("* jā # nē");

ch = customKeypad.waitForKey ();

ja (ch == '*') {

x = 1;

}

ja (ch == '#') {

x = 1;

ekst = 1;

lcd.clear ();

Displejs = 1;

}

}

lietotāji ++;

}

}

anulēti DisplayUsers ()

{

lcd.clear ();

(int i = 0; i <lietotāji; i ++) {

lcd.print ("Saglabāts lietotājs");

lcd.print (i + 1);

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

lcd.setCursor (u, 1);

lcd.print (userNum [u]);

}

kavēšanās (2000);

lcd.clear ();

Displejs = 1;

}

}

4. darbība: LIETOTĀJA ROKASGRĀMATA

1. Ieslēdzot projektu, parādīsies ielādes vai sveiciena ekrāns.

2. Parādīsies ekrāns “Ievadīt paroli”, kas ļaus ievadīt 4 rakstzīmes, burtus vai ciparus, pareizā parole ir: 5466, tas dos jums piekļuvi galvenajai izvēlnei.

3. Ievadot pareizo paroli, parādīsies galvenā izvēlne ar 4 iespējamām iespējām, lai pārvietotos pa dažādām pieejamajām funkcijām.

· A - ievadiet lietotāja mobilā tālruņa numurus.

o Ievadiet 10 ciparus, lai sistēmā saglabātu lietotāju

o Pēc 10 ciparu ievadīšanas nospiediet “*”, lai pievienotu vairāk lietotāju, vai nospiediet “#”, lai izietu atpakaļ galvenajā izvēlnē

· B - parādīt saglabātos lietotājus

o Lietotāji ritinās garām ekrānam, tie tiks parādīti katrs 3 sekundes, tiklīdz visi lietotāji tiks parādīti, lapa tiks aizvērta un atgriezīsies galvenajā izvēlnē.

o Ja A izvēlnes opcijā netika pievienots neviens lietotājs, tas parādīs “NO SAVED USERS”.

· C - parāda tiešo temperatūru

o Nospiediet “*”, lai atgrieztos galvenajā izvēlnē

· D - parādīt īsu tekstu

o Parāda radītāja vārdu un tēmu, kurai tas tika apkopots, ar datumu.

Ieteicams: