Arduino UNO (lage menyer og funksjoner): 4 trinn
Arduino UNO (lage menyer og funksjoner): 4 trinn
Anonim
Arduino UNO (lager menyer og funksjoner)
Arduino UNO (lager menyer og funksjoner)
Arduino UNO (lager menyer og funksjoner)
Arduino UNO (lager menyer og funksjoner)

I denne instruksen vil vi utforske hvordan du lager menyer, leser temperatur fra en TC74A0 -sensor og viser "verdier" (i dette tilfellet mobiltelefonnumre) på en måte som er uendelig, men begrenset til arduinoens minne om bord.

Vi kommer til å bruke

-Arrays

-LCD-skjerm

-Tastatur

Brukerveiledning inkludert i det siste trinnet.

Trinn 1: Komponenter

Arduino Uno

· 4x4 tastatur

· TC74A0 digital temperatursensor

· I2c 16x2 LCD -modul

· 16x2 flytende krystallskjerm

· Stikkledere

· Brødbrett

· Personlig datamaskin

· Arduino IDE

· Overføringskabel

Trinn 2: Komponentledninger

TEMP SENSOR OG LCD TILKOBLET PÅ SAMME LINJE 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 Pinne 1 - 8 på tastaturet er koblet til henholdsvis pinne 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

Trinn 3: Kode

#include // Inkluderer biblioteker når du kompilerer

#inkludere

#inkludere

#define Password_Lengde 5

#define Command_Lenght 3

#define CellNumber 10

int brukere = 0;

int Display = 0;

int adresse = 72; // tc74a0 ADRESSE

int I = 0;

int BRUKER;

int X = 0;

int XY = 0;

int temp;

int tempPre = 0;

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

char Data [Password_Lenght];

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

char ExitData [Command_Lenght]; //

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

char MenuItem;

røye CELLArrayA [10];

røye CELLArrayB [10];

røye CELLArrayC [10];

const byte RADER = 4; // fire rader

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

{

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

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

lcd.begin (16, 2);

lcd.backlight ();

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Vennligst vent 3"); // LADES SKJERM

forsinkelse (1000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Vennligst vent 2");

forsinkelse (1000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Vennligst vent 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 ("Skriv inn passord");

}

hulrom ()

{

bryter (Display) // HVOR I Hovedmenyen ER VI

{// GJORDE BRUKEREN TRYKK A, B, C, D

sak 0:

{

Passord();

}

gå i stykker;

sak 1:

{

lcd.clear ();

lcd.setCursor (0, 1);

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

lcd.setCursor (0, 0);

lcd.print ("Hovedmeny");

Display = 2;

forsinkelse (100);

gå i stykker;

}

sak 2:

{

char customKey = customKeypad.getKey ();

switch (tilpasset tast)

{

sak 'A':

{

Serial.println ("A ble trykket");

StoreUser ();

gå i stykker;

}

sak 'B':

{

Serial.println ("B ble trykket");

hvis (brukere == 0) {

lcd.clear ();

lcd.print ("INGEN LAGrede BRUKERE");

forsinkelse (3000);

lcd.clear ();

Display = 1;

gå i stykker;

}

DisplayUsers (); gå i stykker;

}

sak 'C':

{

Serial.println ("C ble trykket"); // BRUKT UNDER TESTING

int ext = 0;

mens (! ext) {

char ch;

temp = TempMeny ();

hvis (temp! = tempPre) {

lcd.clear ();

lcd.print ("Temparature");

lcd.setCursor (0, 1);

lcd.print (temp);

lcd.print ("C");

tempPre = temp;

forsinkelse (500);

}

ch = customKeypad.getKey ();

if (ch == ' *') // EXIT TEMPERATURE MENU (hvis * TRYKKT)

{

ext = 1;

lcd.clear ();

Display = 1;

}

}

gå i stykker;

TempMeny ();

gå i stykker;

}

sak '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 ("MAI 2019");

lcd.setCursor (0, 1);

lcd.print ("CC OOSTHUIZEN");

forsinkelse (3000);

lcd.clear ();

Display = 1;

}

}

}

}

}

// TILPASSETE FUNKSJONER FOR Å RINGE VERDIER ELLER PROSEDYRER

ugyldig passord ()

{

char customKey = customKeypad.getKey ();

hvis (customKey) // sørger for at en tast faktisk trykkes, lik (customKey! = NO_KEY)

{

Data [data_count] = tilpasset nøkkel; // lagre røye i data array

lcd.setCursor (data_count, 1); // flytt markøren for å vise hvert nytt tegn

lcd.print ("*"); // print char ved nevnte markør

data_count ++; // øk dataverdien med 1 for å lagre ny røye, hold også oversikt over antall angitte tegn

}

hvis (data_count == Password_Lenght-1) // hvis matrisindeksen er lik antallet forventede tegn, sammenlign data med master

{

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Passord er");

hvis (! strcmp (Data, Master)) // lik (strcmp (Data, Master) == 0)

{

lcd.print ("Bra");

lcd.clear ();

Display = 1;

}

ellers

lcd.print ("dårlig");

forsinkelse (1000); // lagt til 1 sekund forsinkelse for å sikre at passordet vises helt på skjermen før det blir slettet.

lcd.clear ();

slett data();

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Skriv inn passord");

}

}

int TempMeny ()

{

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 brukes for alle matrisestørrelser, Data [data_count--] = 0; // klar matrise for nye data

}

}

void StoreUser ()

{

int ext = 0;

int bruker;

char ch;

mens (! ext) {

lcd.clear ();

lcd.print ("Skriv inn bruker");

bruker = brukere + 1;

lcd.print (bruker);

int x = 0;

mens (! x) {

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

ch = customKeypad.waitForKey ();

lcd.setCursor (i, 1);

lcd.print (ch);

userNum [bruker - 1] = ch;

}

forsinkelse (500);

lcd.clear ();

lcd.print ("Fortsett");

lcd.setCursor (0, 1);

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

ch = customKeypad.waitForKey ();

hvis (ch == '*') {

x = 1;

}

hvis (ch == '#') {

x = 1;

ext = 1;

lcd.clear ();

Display = 1;

}

}

brukere ++;

}

}

ugyldige DisplayUsers ()

{

lcd.clear ();

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

lcd.print ("lagret bruker");

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;

}

}

Trinn 4: BRUKERVEILEDNING

1. Når du slår på prosjektet, vises et laste- eller velkomstskjermbilde.

2. Et "Enter Password" -skjermbilde vises, dette skjermbildet lar deg skrive inn 4 tegn, bokstaver eller tall, riktig passord er: 5466, dette gir deg tilgang til hovedmenyen.

3. Når du angir riktig passord, vil hovedmenyen vises med 4 mulige alternativer for å navigere i de forskjellige tilgjengelige funksjonene.

· A - Angi brukerens mobiltelefonnumre.

o Angi 10 sifre for å lagre en bruker i systemet

o Etter at 10 sifre er angitt, trykker du på " *" for å legge til flere brukere, eller trykk "#" for å gå tilbake til hovedmenyen

· B - Vis lagrede brukere

o Brukerne ruller forbi skjermen, de vises i 3 sekunder hver, så snart alle brukerne vises, vil siden lukkes og gå tilbake til hovedmenyen.

o Hvis ingen brukere ble lagt til i menyalternativ A, vil det vise “INGEN LAGrede BRUKERE”.

· C - Viser levende temperatur

o Trykk på " *" for å gå tilbake til hovedmenyen

· D - Vis kort tekst

o Viser skapers navn og emnet den ble satt sammen for med en dato.