Indholdsfortegnelse:

Arduino UNO (oprettelse af menuer og funktioner): 4 trin
Arduino UNO (oprettelse af menuer og funktioner): 4 trin

Video: Arduino UNO (oprettelse af menuer og funktioner): 4 trin

Video: Arduino UNO (oprettelse af menuer og funktioner): 4 trin
Video: Learn Arduino in 30 Minutes: Examples and projects 2024, November
Anonim
Arduino UNO (opretter menuer og funktioner)
Arduino UNO (opretter menuer og funktioner)
Arduino UNO (opretter menuer og funktioner)
Arduino UNO (opretter menuer og funktioner)

I denne instruktive vil vi undersøge, hvordan man opretter menuer, læser temperatur fra en TC74A0 -sensor og viser "værdier" (i dette tilfælde mobiltelefonnumre) på en måde, der er uendelig, men begrænset til arduinoens hukommelse om bord.

Vi vil bruge

-Arrays

-Flydende krystaldisplay

-Tastatur

Brugervejledning inkluderet i det sidste trin.

Trin 1: Komponenter

Arduino Uno

· 4x4 tastatur

· TC74A0 digital temperatursensor

· I2c 16x2 LCD -modul

· 16x2 flydende krystaldisplay

· Jumper ledninger

· Brødbræt

· Personlig computer

· Arduino IDE

· Overførselskabel

Trin 2: Komponentledninger

TEMP SENSOR OG LCD TILSLUTTET PÅ LINE TIL SDA OG SCL (A4, A5)

LCD (I2c -modul)

o SDA til A5 på Arduino

o SCL til A4 på Arduino

o VCC til 5V på Arduino

o GND til GND på Arduino

· 4 x 4 Tastatur

o Pin 1 - 8 på tastatur tilsluttet henholdsvis pin 9 - 2 på Arduino

TC74A0 temp sensor

o TC74A0 pin 2 til SDA på Arduino

o TC74A0 pin 3 til GND på Arduino

o TC74A0 pin 4 til SCL på Arduino

o TC74A0 pin 5 til 5V på Arduino

Trin 3: Kode

#include // Inkluderer biblioteker ved kompilering

#omfatte

#omfatte

#define Password_Lengde 5

#define kommando_længde 3

#define CellNumber 10

int brugere = 0;

int Display = 0;

int adresse = 72; // tc74a0 ADRESSE

int I = 0;

int BRUGER;

int X = 0;

int XY = 0;

int temp;

int tempPre = 0;

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

char Data [Password_Lenght];

char Master [Password_Lenght] = "5466"; //ADGANGSKODE

char ExitData [Command_Lenght]; //

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

char MenuItem;

kul CELLArrayA [10];

char CELLArrayB [10];

kul CELLArrayC [10];

const byte Rækker = 4; // fire rækker

const byte COLS = 4; // fire kolonner

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] = // INITIERENDE TASTATUR

{

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

};

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

ugyldig opsætning ()

{

Serial.begin (9600); // dette opretter Serial Monitor

Wire.begin (); // dette opretter et Wire -objekt

lcd.begin (16, 2);

lcd.backlight ();

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Vent venligst 3"); // LOADING SCREEN

forsinkelse (1000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Vent venligst 2");

forsinkelse (1000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Vent venligst 1");

forsinkelse (300);

lcd.clear ();

String myString = "ARDUINO INSTRUKTABEL";

lcd.setCursor (2, 2);

lcd.print (myString);

forsinkelse (2500);

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

{

lcd.scrollDisplayLeft ();

forsinkelse (300);

}

lcd.clear ();

lcd.print ("Indtast adgangskode");

}

hulrum ()

{

switch (Display) // HVOR ER I Hovedmenuen ER VI

{// GAV BRUGEREN TRYK A, B, C, D

sag 0:

{

Adgangskode();

}

pause;

sag 1:

{

lcd.clear ();

lcd.setCursor (0, 1);

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

lcd.setCursor (0, 0);

lcd.print ("Hovedmenu");

Display = 2;

forsinkelse (100);

pause;

}

sag 2:

{

char customKey = customKeypad.getKey ();

switch (customKey)

{

tilfælde 'A':

{

Serial.println ("A blev trykket");

StoreUser ();

pause;

}

sag 'B':

{

Serial.println ("B blev trykket");

hvis (brugere == 0) {

lcd.clear ();

lcd.print ("INGEN GEMTE BRUGERE");

forsinkelse (3000);

lcd.clear ();

Display = 1;

pause;

}

DisplayUsers (); pause;

}

tilfælde 'C':

{

Serial.println ("C blev trykket"); // BRUGT UNDER TESTNING

int ext = 0;

mens (! ext) {

char ch;

temp = TempMenu ();

hvis (temp! = tempPre) {

lcd.clear ();

lcd.print ("Temparatur");

lcd.setCursor (0, 1);

lcd.print (temp);

lcd.print ("C");

tempPre = temp;

forsinkelse (500);

}

ch = customKeypad.getKey ();

hvis (ch == ' *') // EXIT TEMPERATURE MENU (hvis * TRYKT)

{

ext = 1;

lcd.clear ();

Display = 1;

}

}

pause;

TempMenu ();

pause;

}

tilfælde 'D':

{

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("NUA PRAC");

lcd.setCursor (0, 1);

lcd.print ("JB SCHOEMAN");

forsinkelse (3000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("MAJ 2019");

lcd.setCursor (0, 1);

lcd.print ("CC OOSTHUIZEN");

forsinkelse (3000);

lcd.clear ();

Display = 1;

}

}

}

}

}

// TILPASSEDE FUNKTIONER TIL OPKALDING AF VÆRDIER ELLER PROCEDURER

ugyldig adgangskode ()

{

char customKey = customKeypad.getKey ();

hvis (customKey) // sørger for, at der faktisk trykkes på en tast, svarende til (customKey! = NO_KEY)

{

Data [data_count] = brugerdefineret nøgle; // gem char i data array

lcd.setCursor (data_count, 1); // flyt markøren for at vise hvert nyt tegn

lcd.print ("*"); // print char ved nævnte markør

data_count ++; // øge datamængden med 1 for at gemme ny kul, også holde styr på antallet af indtastede tegn

}

hvis (data_count == Password_Lenght-1) // hvis arrayindekset er lig med antallet af forventede tegninger, sammenlign data til master

{

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Adgangskode er");

hvis (! strcmp (Data, Master)) // lig med (strcmp (Data, Master) == 0)

{

lcd.print ("Godt");

lcd.clear ();

Display = 1;

}

andet

lcd.print ("dårlig");

forsinkelse (1000); // tilføjet 1 sekund forsinkelse for at sikre, at adgangskoden vises fuldstændigt på skærmen, før den slettes.

lcd.clear ();

slet data();

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Indtast adgangskode");

}

}

int TempMenu ()

{

Wire.beginTransmission (adresse);

Wire.write (0);

Wire.endTransmission ();

Wire.requestFrom (adresse, 1);

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

int c = Wire.read ();

returnere c;

}

void clearData ()

{

mens (data_count! = 0)

{// Dette kan bruges til alle matrixstørrelser, Data [data_count--] = 0; // ryd array for nye data

}

}

void StoreUser ()

{

int ext = 0;

int bruger;

char ch;

mens (! ext) {

lcd.clear ();

lcd.print ("Indtast bruger");

bruger = brugere + 1;

lcd.print (bruger);

int x = 0;

mens (! x) {

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

ch = customKeypad.waitForKey ();

lcd.setCursor (i, 1);

lcd.print (ch);

userNum [bruger - 1] = ch;

}

forsinkelse (500);

lcd.clear ();

lcd.print ("Fortsæt");

lcd.setCursor (0, 1);

lcd.print ("* ja # nej");

ch = customKeypad.waitForKey ();

hvis (ch == '*') {

x = 1;

}

hvis (ch == '#') {

x = 1;

ext = 1;

lcd.clear ();

Display = 1;

}

}

brugere ++;

}

}

ugyldige DisplayUsers ()

{

lcd.clear ();

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

lcd.print ("gemt bruger");

lcd.print (i + 1);

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

lcd.setCursor (u, 1);

lcd.print (userNum [u]);

}

forsinkelse (2000);

lcd.clear ();

Display = 1;

}

}

Trin 4: BRUGERVEJLEDNING

1. Når projektet tændes, vises en indlæsnings- eller velkomstskærm.

2. En "Indtast adgangskode" skærm vises, denne skærm giver dig mulighed for at indtaste 4 tegn, bogstaver eller tal, den korrekte adgangskode er: 5466, dette giver dig adgang til hovedmenuen.

3. Når du indtaster den korrekte adgangskode, vises hovedmenuen med 4 mulige muligheder for at navigere i de forskellige tilgængelige funktioner.

· A - Indtast brugerens mobiltelefonnumre.

o Indtast 10 cifre for at gemme en bruger i systemet

o Når der er indtastet 10 cifre, skal du trykke på " *" for at tilføje flere brugere, eller trykke på "#" for at gå tilbage til hovedmenuen

· B - Vis gemte brugere

o Brugerne ruller forbi skærmen, de vises i 3 sekunder hver, så snart alle brugere vises, vil siden lukke og vende tilbage til hovedmenuen.

o Hvis der ikke blev tilføjet nogen brugere i menuindstilling A, viser det "INGEN GEMTE BRUGERE".

· C - Viser levende temperatur

o Tryk på “*” for at gå tilbage til hovedmenuen

· D - Vis kort tekst

o Viser skaberens navn og emnet, det blev kompileret til med en dato.

Anbefalede: