Turinys:
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-13 06:57
Šioje pamokoje mes išnagrinėsime, kaip sukurti meniu, nuskaityti temperatūrą iš TC74A0 jutiklio ir parodyti „vertes“(šiuo atveju mobiliųjų telefonų numerius) begaliniu būdu, tačiau apsiribojant arduino atmintimi.
Mes naudosime
-Masyvai
-Skystųjų kristalų ekranas
-Klaviatūra
Į paskutinį žingsnį įtrauktas vartotojo vadovas.
1 žingsnis: komponentai
Arduino Uno
· 4x4 klaviatūra
· TC74A0 skaitmeninis temperatūros jutiklis
· I2c 16x2 LCD modulis
· 16x2 skystųjų kristalų ekranas
· Jumperiniai laidai
· Bandomoji Lenta
· Asmeninis kompiuteris
· „Arduino IDE“
· Perdavimo kabelis
2 žingsnis: komponentų laidai
Temperatūros jutiklis ir skystųjų kristalų ekranas, prijungtas prie tos pačios linijos prie SDA ir SCL (A4, A5)
LCD (I2c modulis)
o SDA į A5 „Arduino“
o SCL į A4 „Arduino“
o VCC iki 5V „Arduino“
o nuo GND iki GND „Arduino“
· 4 x 4 klaviatūra
o 1–8 kaištis klaviatūroje, atitinkamai prijungtas prie „Arduino“9–2 kaiščio
TC74A0 temperatūros jutiklis
o TC74A0 2 kontaktas prie SDA „Arduino“
o TC74A0 3 kaištis į GND „Arduino“
o TC74A0 4 kaištis prie SCL „Arduino“
o TC74A0 kištukas nuo 5 iki 5 V „Arduino“
3 žingsnis: kodas
#include // Į rinkinį įtraukiamos bibliotekos
#įtraukti
#įtraukti
#define Password_Lenght 5
#define Command_Lenght 3
#define CellNumber 10
int vartotojai = 0;
int Ekranas = 0;
int adresas = 72; // tc74a0 ADRESAS
int I = 0;
int USER;
int X = 0;
int XY = 0;
int temp;
int tempPre = 0;
char userNum [10] [10] = {{}, {}, {}};
char duomenys [Slaptažodis_ilgis];
char Master [Password_Lenght] = "5466"; //SLAPTAŽODIS
char ExitData [Command_Lenght]; //
char Master1 [Command_Lenght] = "**"; //
char MenuItem;
char CELLArrayA [10];
char CELLArrayB [10];
anglis CELLArrayC [10];
const baitas ROWS = 4; // keturios eilutės
const baitas COLS = 4; // keturi stulpeliai
baitų rowPins [ROWS] = {5, 4, 3, 2};
baitų colPins [COLS] = {9, 8, 7, 6};
baitų duomenų skaičius = 0, pagrindinis_skaičius = 0;
bool Pass_is_good;
LiquidCrystal_I2C LCD (0x26, 16, 2);
char hexaKeys [ROWS] [COLS] = // INTICIATING KEYPAD
{
{„1“, „2“, „3“, „A“}, {„4“, „5“, „6“, „B“}, {„7“, „8“, „9“, „C“}, {'*', '0', '#', 'D'}
};
Klaviatūra customKeypad = Klaviatūra (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS);
negaliojanti sąranka ()
{
Serial.begin (9600); // tai sukuria serijinį monitorių
Wire.begin (); // tai sukuria vielos objektą
LCD. pradžia (16, 2);
lcd.backlight ();
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Prašome palaukti 3"); // ĮKROVIMO EKRANAS
vėlavimas (1000);
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Prašome palaukti 2");
vėlavimas (1000);
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Prašome palaukti 1");
vėlavimas (300);
lcd.clear ();
Styga myString = "ARDUINO INSTRUCTABLE";
lcd.setCursor (2, 2);
lcd.print (myString);
vėlavimas (2500);
(int scrollCounter = 0; scrollCounter <24; scrollCounter ++)
{
lcd.scrollDisplayLeft ();
vėlavimas (300);
}
lcd.clear ();
lcd.print („Įveskite slaptažodį“);
}
tuštumos kilpa ()
{
jungiklis (ekranas) // KUR PAGRINDINĖJE MENIUE MES
{// AR NAUDOTOJAS spaudė A, B, C, D
0 atvejis:
{
Slaptažodis();
}
pertrauka;
1 atvejis:
{
lcd.clear ();
lcd.setCursor (0, 1);
lcd.print ("A B C D");
lcd.setCursor (0, 0);
lcd.print („Pagrindinis meniu“);
Ekranas = 2;
vėlavimas (100);
pertrauka;
}
2 atvejis:
{
char customKey = customKeypad.getKey ();
jungiklis (customKey)
{
atvejis „A“:
{
Serial.println („A buvo paspaustas“);
„StoreUser“();
pertrauka;
}
atvejis „B“:
{
Serial.println („B buvo paspaustas“);
jei (naudotojai == 0) {
lcd.clear ();
lcd.print ("NĖRA IŠSAUGOTŲ VARTOTOJŲ");
vėlavimas (3000);
lcd.clear ();
Ekranas = 1;
pertrauka;
}
„DisplayUsers“(); pertrauka;
}
atvejis „C“:
{
Serial.println („C buvo paspaustas“); // NAUDOTAS BANDYMO metu
int ext = 0;
nors (! ext) {
char ch;
temp = TempMenu ();
if (temp! = tempPre) {
lcd.clear ();
lcd.print ("Temperatūra");
lcd.setCursor (0, 1);
lcd.print (temp);
lcd.print ("C");
tempPre = temp;
vėlavimas (500);
}
ch = customKeypad.getKey ();
if (ch == ' *') // EXIT TEMPERATURE MENU (jei * PRESSED)
{
ekst = 1;
lcd.clear ();
Ekranas = 1;
}
}
pertrauka;
TempMenu ();
pertrauka;
}
atvejis „D“:
{
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("NUA PRAC");
lcd.setCursor (0, 1);
lcd.print ("JB SCHOEMAN");
vėlavimas (3000);
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print („2019 m. GEGUŽĖ“);
lcd.setCursor (0, 1);
lcd.print ("CC OOSTHUIZEN");
vėlavimas (3000);
lcd.clear ();
Ekranas = 1;
}
}
}
}
}
// PASIRINKTINĖS FUNKCIJOS SKAMBTI VERTĖMS ARBA PROCEDŪROMS
negaliojantis slaptažodis ()
{
char customKey = customKeypad.getKey ();
if (customKey) // įsitikina, kad klavišas iš tikrųjų yra paspaustas, lygus (customKey! = NO_KEY)
{
Duomenys [data_count] = customKey; // saugoti char į duomenų masyvą
lcd.setCursor (duomenų_skaičius, 1); // perkelkite žymeklį, kad būtų parodytas kiekvienas naujas simbolis
lcd.print ("*"); // spausdinti char prie minėto žymeklio
data_count ++; // padidinkite duomenų masyvą 1, kad išsaugotumėte naują simbolį, taip pat stebėkite įvestų simbolių skaičių
}
if (data_count == Password_Lenght-1) // jei masyvo indeksas yra lygus laukiamų simbolių skaičiui, palyginkite duomenis su pagrindiniu
{
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print („Slaptažodis yra“);
if (! strcmp (duomenys, pagrindinis)) // lygus (strcmp (duomenys, pagrindinis) == 0)
{
lcd.print („Geras“);
lcd.clear ();
Ekranas = 1;
}
Kitas
lcd.print („Blogai“);
uždelsimas (1000); // pridėjo 1 sekundės vėlavimą, kad įsitikintumėte, jog slaptažodis yra visiškai rodomas ekrane prieš jį ištrinant.
lcd.clear ();
Išvalyti duomenis();
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print („Įveskite slaptažodį“);
}
}
int TempMenu ()
{
Wire.beginTransmission (adresas);
Wire.write (0);
Wire.endTransmission ();
Wire.requestFrom (adresas, 1);
while (Wire.available () == 0);
int c = Wire.read ();
grįžti c;
}
void clearData ()
{
o (data_count! = 0)
{// Tai galima naudoti bet kokio dydžio masyvui, Duomenys [data_count--] = 0; // išvalyti naujų duomenų masyvą
}
}
void StoreUser ()
{
int ext = 0;
int vartotojas;
char ch;
nors (! ext) {
lcd.clear ();
lcd.print („Įveskite vartotoją“);
vartotojas = vartotojai + 1;
lcd.print (vartotojas);
int x = 0;
kol (! x) {
už (int i = 0; i <10; i ++) {
ch = customKeypad.waitForKey ();
lcd.setCursor (i, 1);
lcd.print (ch);
userNum [vartotojas - 1] = ch;
}
vėlavimas (500);
lcd.clear ();
lcd.print ("Tęsti");
lcd.setCursor (0, 1);
lcd.print ("* taip # ne");
ch = customKeypad.waitForKey ();
jei (ch == '*') {
x = 1;
}
jei (ch == '#') {
x = 1;
ekst = 1;
lcd.clear ();
Ekranas = 1;
}
}
vartotojai ++;
}
}
negaliojantys „DisplayUsers“()
{
lcd.clear ();
(int i = 0; i <vartotojai; i ++) {
lcd.print („Išsaugotas vartotojas“);
lcd.print (i + 1);
už (int u = 0; u <10; u ++) {
lcd.setCursor (u, 1);
lcd.print (userNum [u]);
}
vėlavimas (2000 m.);
lcd.clear ();
Ekranas = 1;
}
}
4 žingsnis: NAUDOTOJO VADOVAS
1. Įjungus projektą, pasirodys įkėlimo arba pasveikinimo ekranas.
2. Atsiras ekranas „Įveskite slaptažodį“, kuriame galėsite įvesti 4 simbolius, raides ar skaičius, teisingas slaptažodis yra: 5466, tai suteiks jums prieigą prie pagrindinio meniu.
3. Įvedus teisingą slaptažodį, pasirodys pagrindinis meniu su 4 galimomis galimybėmis naršyti įvairias galimas funkcijas.
· A - įveskite vartotojo mobiliojo telefono numerius.
o Įveskite 10 skaitmenų, kad išsaugotumėte vartotoją sistemoje
o Įvedę 10 skaitmenų, paspauskite „ *“, jei norite pridėti daugiau vartotojų, arba paspauskite „#“, kad grįžtumėte į pagrindinį meniu
· B - Rodyti išsaugotus vartotojus
o Vartotojai slinks ekrane, jie bus rodomi po 3 sekundes, kai tik visi vartotojai bus rodomi, puslapis bus uždarytas ir grįš į pagrindinį meniu.
o Jei meniu A parinktyje nebuvo pridėta naudotojų, ekrane pasirodys užrašas „NĖRA IŠSAUGOTŲ VARTOTOJŲ“.
· C - rodo gyvą temperatūrą
o Norėdami grįžti į pagrindinį meniu, paspauskite „ *“
· D - Rodyti trumpą tekstą
o Rodo kūrėjo vardą ir temą, kuriai jis buvo sudarytas, su data.