2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-13 06:58
V tomto návode sa budeme zaoberať tým, ako vytvárať ponuky, čítať teplotu zo snímača TC74A0 a zobrazovať „hodnoty“(v tomto prípade čísla mobilných telefónov) spôsobom, ktorý je nekonečný, ale obmedzený na arduino palubnú pamäť.
Budeme používať
-Polia
-Displej z tekutých kryštálov
-Klávesnica
Používateľská príručka je súčasťou posledného kroku.
Krok 1: Komponenty
Arduino Uno
· Klávesnica 4x4
· Digitálny snímač teploty TC74A0
· Modul LCD I2c 16x2
· Displej z tekutých kryštálov 16x2
· Prepojovacie vodiče
· Breadboard
· Osobný počítač
· Arduino IDE
· Prenosový kábel
Krok 2: Zapojenie komponentov
TEPLOTNÝ SENZOR A LCD PRIPOJENÉ NA TOMTO RIADKU K SDA A SCL (A4, A5)
LCD (modul I2c)
o SDA až A5 na Arduino
o SCL na A4 na Arduino
o VCC až 5V na Arduino
o GND až GND na Arduino
· Klávesnica 4 x 4
o Pin 1 - 8 na klávesnici pripojený k pinom 9 - 2 na Arduine
Snímač teploty TC74A0
o TC74A0 pin 2 na SDA na Arduino
o TC74A0 pin 3 na GND na Arduino
o TC74A0 pin 4 do SCL na Arduine
o TC74A0 pin 5 až 5V na Arduino
Krok 3: Kód
#include // Zahŕňa knižnice pri kompilácii
#zahrnúť
#zahrnúť
#define Heslo_dĺžka 5
#define Command_Lenght 3
#define CellNumber 10
int užívatelia = 0;
int zobrazenie = 0;
int adresa = 72; // tc74a0 ADRESA
int I = 0;
int UŽÍVATEĽ;
int X = 0;
int XY = 0;
int temp;
int tempPre = 0;
char userNum [10] [10] = {{}, {}, {}};
char dáta [heslo_dĺžky];
char Master [Password_Lenght] = "5466"; // HESLO
char ExitData [Command_Lenght]; //
char Master1 [Command_Lenght] = "**"; //
char MenuItem;
char CELLArrayA [10];
char CELLArrayB [10];
char CELLArrayC [10];
konštantný bajt ROWS = 4; // štyri riadky
konštantný bajt COLS = 4; // štyri stĺpce
bajtové riadky [ROWS] = {5, 4, 3, 2};
bajtové stĺpce [COLS] = {9, 8, 7, 6};
bajt data_count = 0, master_count = 0;
bool Pass_is_good;
LiquidCrystal_I2C lcd (0x26, 16, 2);
char hexaKeys [ROWS] [COLS] = // INICIATING KEYPAD
{
{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}
};
Keypad customKeypad = Keypad (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS);
neplatné nastavenie ()
{
Serial.begin (9600); // toto vytvorí sériový monitor
Wire.begin (); // toto vytvorí objekt Wire
lcd.begin (16, 2);
lcd.backlight ();
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print („Počkajte prosím 3“); // NAKLADACIA OBRAZOVKA
oneskorenie (1000);
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print („Počkajte prosím 2“);
oneskorenie (1000);
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print („Počkajte prosím 1“);
oneskorenie (300);
lcd.clear ();
Reťazec myString = "ARDUINO INSTRUCTABLE";
lcd.setCursor (2, 2);
lcd.print (myString);
oneskorenie (2500);
pre (int scrollCounter = 0; scrollCounter <24; scrollCounter ++)
{
lcd.scrollDisplayLeft ();
oneskorenie (300);
}
lcd.clear ();
lcd.print ("Zadajte heslo");
}
prázdna slučka ()
{
prepínač (Displej) // KDE V HLAVNOM MENU SME MY
{// UŽÍVATEĽ STLAČIL A, B, C, D
prípad 0:
{
Heslo ();
}
prestávka;
prípad 1:
{
lcd.clear ();
lcd.setCursor (0, 1);
lcd.print ("A B C D");
lcd.setCursor (0, 0);
lcd.print („Hlavné menu“);
Displej = 2;
oneskorenie (100);
prestávka;
}
prípad 2:
{
char customKey = customKeypad.getKey ();
prepínač (customKey)
{
prípad „A“:
{
Serial.println ("A bolo stlačené");
StoreUser ();
prestávka;
}
prípad „B“:
{
Serial.println („B bolo stlačené“);
if (users == 0) {
lcd.clear ();
lcd.print („BEZ ULOŽENÝCH UŽÍVATEĽOV“);
oneskorenie (3000);
lcd.clear ();
Displej = 1;
prestávka;
}
Používatelia displeja (); prestávka;
}
prípad „C“:
{
Serial.println ("C bolo stlačené"); // POUŽÍVANÉ POČAS TESTOVANIA
int ext = 0;
while (! ext) {
char ch;
temp = TempMenu ();
if (temp! = tempPre) {
lcd.clear ();
lcd.print ("teplota");
lcd.setCursor (0, 1);
lcd.print (temp);
lcd.print ("C");
tempPre = temp;
oneskorenie (500);
}
ch = customKeypad.getKey ();
if (ch == ' *') // EXIT TEMPERATURE MENU (if * PRESSED)
{
ext = 1;
lcd.clear ();
Displej = 1;
}
}
prestávka;
TempMenu ();
prestávka;
}
prípad „D“:
{
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print („NUA PRAC“);
lcd.setCursor (0, 1);
lcd.print ("JB SCHOEMAN");
oneskorenie (3000);
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print („MÁJ 2019“);
lcd.setCursor (0, 1);
lcd.print („CC OOSTHUIZEN“);
oneskorenie (3000);
lcd.clear ();
Displej = 1;
}
}
}
}
}
// VLASTNÉ FUNKCIE NA ZVOLANIE HODNOT ALEBO POSTUPOV
zrušiť heslo ()
{
char customKey = customKeypad.getKey ();
ak (customKey) // zaistí, že je kláves skutočne stlačený, rovná sa (customKey! = NO_KEY)
{
Údaje [data_count] = customKey; // uloženie znaku do poľa údajov
lcd.setCursor (data_count, 1); // pohyb kurzora zobrazí každú novú značku
lcd.print ("*"); // vytlačenie znaku na uvedenom kurze
data_count ++; // prírastok dátového poľa o 1, aby sa uložili nové znaky, tiež sledujte počet zadaných znakov
}
if (data_count == Password_Lenght-1) // ak je index poľa rovný počtu očakávaných znakov, porovnajte údaje s predlohou
{
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print („Heslo je“);
if (! strcmp (Data, Master)) // rovná sa (strcmp (Data, Master) == 0)
{
lcd.print („dobrý“);
lcd.clear ();
Displej = 1;
}
inak
lcd.print („zlý“);
delay (1000); // pridané 1sekundové oneskorenie, aby sa zabezpečilo úplné zobrazenie hesla na obrazovke skôr, ako bude vymazané.
lcd.clear ();
zmazať dáta();
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Zadajte heslo");
}
}
int TempMenu ()
{
Wire.beginTransmission (adresa);
Wire.write (0);
Wire.endTransmission ();
Wire.requestFrom (adresa, 1);
while (Wire.available () == 0);
int c = Wire.read ();
návrat c;
}
void clearData ()
{
while (data_count! = 0)
{// Toto je možné použiť pre akúkoľvek veľkosť poľa, Údaje [počet_údajov--] = 0; // vymazanie poľa pre nové údaje
}
}
zrušiť StoreUser ()
{
int ext = 0;
int užívateľ;
char ch;
while (! ext) {
lcd.clear ();
lcd.print („Zadajte používateľa“);
užívateľ = užívatelia + 1;
lcd.print (používateľ);
int x = 0;
while (! x) {
pre (int i = 0; i <10; i ++) {
ch = customKeypad.waitForKey ();
lcd.setCursor (i, 1);
lcd.print (ch);
userNum [užívateľ - 1] = ch;
}
oneskorenie (500);
lcd.clear ();
lcd.print („Pokračovať“);
lcd.setCursor (0, 1);
lcd.print ("* áno # nie");
ch = customKeypad.waitForKey ();
if (ch == '*') {
x = 1;
}
if (ch == '#') {
x = 1;
ext = 1;
lcd.clear ();
Displej = 1;
}
}
užívatelia ++;
}
}
zrušiť DisplayUsers ()
{
lcd.clear ();
pre (int i = 0; i <používateľov; i ++) {
lcd.print („uložený používateľ“);
lcd.print (i + 1);
pre (int u = 0; u <10; u ++) {
lcd.setCursor (u, 1);
lcd.print (userNum [u]);
}
oneskorenie (2000);
lcd.clear ();
Displej = 1;
}
}
Krok 4: PRÍRUČKA POUŽÍVATEĽA
1. Po zapnutí projektu sa zobrazí obrazovka načítania alebo uvítacia obrazovka.
2. Zobrazí sa obrazovka „Enter Password“, ktorá vám umožňuje zadať 4 znaky, písmená alebo čísla, správne heslo je: 5466, čím získate prístup do hlavnej ponuky.
3. Po zadaní správneho hesla sa zobrazí hlavná ponuka so 4 možnými možnosťami navigácie v rôznych dostupných funkciách.
· A - Zadajte telefónne čísla používateľov.
o Zadajte 10 číslic, aby sa užívateľ uložil do systému
o Po zadaní 10 číslic stlačte „ *“, ak chcete pridať ďalších používateľov, alebo stlačením „#“sa vráťte späť do hlavnej ponuky
· B - Zobrazenie uložených používateľov
o Používatelia sa budú posúvať po obrazovke, každý sa zobrazí na 3 sekundy, akonáhle sa zobrazia všetci používatelia, stránka sa zatvorí a vráti sa do hlavnej ponuky.
o Pokiaľ v ponuke A neboli pridaní žiadni užívatelia, zobrazí sa „NO SAVED USERS“.
· C - Zobrazuje živú teplotu
o Stlačením „ *“sa vrátite do hlavnej ponuky
· D - Zobrazenie krátkeho textu
o Zobrazuje meno autora a predmet, pre ktorý bol zostavený, s dátumom.