
2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-23 15:05


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.
Odporúča:
Vytváranie rôznych zvukov z filmov iba pomocou Arduina: 3 kroky

Vytváranie rôznych zvukov z filmov iba pomocou Arduina: As-salamu alaykum! Chcel som generovať rôzne zvuky ako predátor, optimálna prime & čmeliak z filmu transformátora. Vlastne som sledoval " hackera " video o výrobe prilby predátora.
Vytváranie máp Garmin pomocou Openstreetmap: 4 kroky

Vytváranie máp Garmin pomocou Openstreetmap: Milujem turistiku, ale nepoužívam čítanie máp. Preto som si kúpil garmin GPSMAP64 GPS. Vo výzve s mapami som videl návod, ako vytvoriť mapy pre garmin gps, toto je veľmi dobre napísaný návod a prinútilo ma premýšľať o napísaní svojho
Vytváranie zvukovo absorbujúcich akustických panelov s uzávermi na víno: 4 kroky

Vytváranie zvukovo absorbujúcich akustických panelov W/ Wine Corks: Po rokoch zbierania korkových zátok na víno som ich konečne našiel využitie: vytvoriť zvukové pohltivé zvukové panely pre môj domáci hlas cez stánok. Keďže fľaše vína so skrutkovacím uzáverom sú čoraz bežnejšie, odkladám si zátky pre rôzne domáce
Lacný DIY generátor funkcií/signálu DDS: 4 kroky (s obrázkami)

Lacný DIY generátor funkcií/signálu DDS: Tieto dosky s modulmi generátora signálu DDS môžete mať už od 15 dolárov, ak sa pozriete okolo seba. Pomerne presne budú generovať sínusové, štvorcové, trojuholníkové, pílové (a reverzné) krivky (a niekoľko ďalších). Majú tiež dotykové ovládanie, amplitúdu
Generátor funkcií: 4 kroky

Generátor funkcií: Ahoj všetci, potrebujete lacný generátor funkcií? Nechcete si ho kúpiť ….? …. Môžete si ho vyrobiť z tohto tutoriálu ….. Generátor funkcií je jedna z potrieb …. Vo väčšine projektu …… som ho použil na výrobu modulu bezdrôtového prenosu energie