Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
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.