
Satura rādītājs:
2025 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2025-01-23 14:59


Šajā pamācībā mēs pētīsim, kā izveidot izvēlnes, nolasīt temperatūru no TC74A0 sensora un parādīt "vērtības" (šajā gadījumā mobilo tālruņu numurus) bezgalīgā veidā, bet aprobežojoties ar arduino iebūvēto atmiņu.
Mēs izmantosim
-Masīvi
-Šķidro kristālu displejs
-Tastatūra
Lietotāja rokasgrāmata ir iekļauta pēdējā posmā.
1. darbība: sastāvdaļas
Arduino Uno
· 4x4 tastatūra
· TC74A0 digitālais temperatūras sensors
· I2c 16x2 LCD modulis
· 16x2 šķidro kristālu displejs
· Jumper vadi
· Maizes dēlis
· Personālais dators
· Arduino IDE
· Pārneses kabelis
2. darbība: komponentu vadu savienošana
TEMP SENSOR un LCD VIENĀ LĪNIJĀ savienots ar SDA un SCL (A4, A5)
LCD (I2c modulis)
o SDA līdz A5 Arduino
o SCL uz A4 Arduino
o VCC līdz 5V uz Arduino
o no GND līdz GND vietnē Arduino
· 4 x 4 tastatūra
o 1. - 8. tapa uz tastatūras, kas attiecīgi pievienota Arduino 9. - 2. tapai
TC74A0 temperatūras sensors
o TC74A0 2. tapa SDA uz Arduino
o TC74A0 3. tapa uz GND Arduino
o TC74A0 4. tapa uz SCL Arduino
o TC74A0 pin no 5 līdz 5V uz Arduino
3. darbība: kods
#include // Kompilējot ietver bibliotēkas
#iekļaut
#iekļaut
#define Password_Lenght 5
#define Command_Lenght 3
#define CellNumber 10
int lietotāji = 0;
int Displejs = 0;
int adrese = 72; // tc74a0 ADRESE
int I = 0;
int USER;
int X = 0;
int XY = 0;
int temp;
int tempPre = 0;
char userNum [10] [10] = {{}, {}, {}};
char dati [Password_Lenght];
char meistars [Password_Lenght] = "5466"; // PAROLE
char ExitData [Command_Lenght]; //
char Master1 [Command_Lenght] = "**"; //
char MenuItem;
char CELLArrayA [10];
char CELLArrayB [10];
ogle CELLArrayC [10];
const baits ROWS = 4; // četras rindas
const baits COLS = 4; // četras kolonnas
baits rowPins [ROWS] = {5, 4, 3, 2};
baits colPins [COLS] = {9, 8, 7, 6};
baitu datu_skaitlis = 0, galvenais_skaitlis = 0;
bool Pass_is_good;
LiquidCrystal_I2C LCD (0x26, 16, 2);
char hexaKeys [ROWS] [COLS] = // ATSLĒGŠANAS ATSLĒGŠANA
{
{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}
};
Tastatūra customKeypad = Tastatūra (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS);
anulēts iestatījums ()
{
Sērijas sākums (9600); // tas izveido sērijas monitoru
Wire.begin (); // tas rada Wire objektu
lcd. sākums (16, 2);
lcd.fona apgaismojums ();
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Lūdzu, pagaidiet 3"); // IEKRĀVES Ekrāns
kavēšanās (1000);
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Lūdzu, pagaidiet 2");
kavēšanās (1000);
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Lūdzu, uzgaidiet 1");
kavēšanās (300);
lcd.clear ();
String myString = "ARDUINO INSTRUCTABLE";
lcd.setCursor (2, 2);
lcd.print (myString);
kavēšanās (2500);
par (int scrollCounter = 0; scrollCounter <24; scrollCounter ++)
{
lcd.scrollDisplayLeft ();
kavēšanās (300);
}
lcd.clear ();
lcd.print ("Ievadiet paroli");
}
tukša cilpa ()
{
slēdzis (displejs) // KUR GALVENAJĀ IZVĒLNĒ IR MĒS
{// VAI LIETOTĀJS Nospieda A, B, C, D
0 gadījums:
{
Parole ();
}
pārtraukums;
1. gadījums:
{
lcd.clear ();
lcd.setCursor (0, 1);
lcd.print ("A B C D");
lcd.setCursor (0, 0);
lcd.print ("Galvenā izvēlne");
Displejs = 2;
kavēšanās (100);
pārtraukums;
}
2. gadījums:
{
char customKey = customKeypad.getKey ();
slēdzis (customKey)
{
gadījums “A”:
{
Serial.println ("A tika nospiests");
StoreUser ();
pārtraukums;
}
gadījums “B”:
{
Serial.println ("B tika nospiests");
ja (lietotāji == 0) {
lcd.clear ();
lcd.print ("NO SAVED USERS");
kavēšanās (3000);
lcd.clear ();
Displejs = 1;
pārtraukums;
}
DisplayUsers (); pārtraukums;
}
gadījums “C”:
{
Serial.println ("C tika nospiests"); // LIETO TESTĒŠANAS LAIKĀ
int ext = 0;
kamēr (! ext) {
char ch;
temp = TempMenu ();
ja (temp! = tempPre) {
lcd.clear ();
lcd.print ("Temperatūra");
lcd.setCursor (0, 1);
lcd.print (temp);
lcd.print ("C");
tempPre = temp;
kavēšanās (500);
}
ch = customKeypad.getKey ();
ja (ch == ' *') // IZEJAS TEMPERATŪRAS IZVĒLNE (ja * NOSPIED)
{
ekst = 1;
lcd.clear ();
Displejs = 1;
}
}
pārtraukums;
TempMenu ();
pārtraukums;
}
gadījums “D”:
{
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("NUA PRAC");
lcd.setCursor (0, 1);
lcd.print ("JB SCHOEMAN");
kavēšanās (3000);
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("MAY 2019");
lcd.setCursor (0, 1);
lcd.print ("CC OOSTHUIZEN");
kavēšanās (3000);
lcd.clear ();
Displejs = 1;
}
}
}
}
}
// PIELĀGOTĀS FUNKCIJAS VĒRTĪBU VAI PROCEDŪRU IZSAUKŠANAI
nederīga parole ()
{
char customKey = customKeypad.getKey ();
if (customKey) // pārliecinās, vai ir nospiesta taustiņš, vienāds ar (customKey! = NO_KEY)
{
Dati [data_count] = customKey; // uzglabāt char datu masīvā
lcd.setCursor (datu_skaitlis, 1); // pārvietojiet kursoru, lai parādītu katru jauno simbolu
lcd.print ("*"); // drukāt char pie minētā kursora
data_count ++; // palieliniet datu masīvu par 1, lai saglabātu jaunu rakstzīmi, kā arī sekojiet ievadīto rakstzīmju skaitam
}
if (data_count == Password_Lenght-1) // ja masīva indekss ir vienāds ar paredzamo rakstzīmju skaitu, salīdziniet datus ar galveno
{
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Parole ir");
ja (! strcmp (dati, galvenais)) // vienāds ar (strcmp (dati, galvenais) == 0)
{
lcd.print ("Labs");
lcd.clear ();
Displejs = 1;
}
citādi
lcd.print ("Slikti");
delay (1000); // pievienoja 1 sekundes aizkavi, lai pārliecinātos, ka parole tiek pilnībā parādīta ekrānā, pirms tā tiek izdzēsta.
lcd.clear ();
izdzēst datus();
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Ievadiet paroli");
}
}
int TempMenu ()
{
Wire.beginTransmission (adrese);
Wire.write (0);
Wire.endTransmission ();
Wire.requestFrom (adrese, 1);
kamēr (Wire.available () == 0);
int c = Wire.read ();
atgriešanās c;
}
void clearData ()
{
kamēr (data_count! = 0)
{// To var izmantot jebkura masīva izmēram, Dati [data_count--] = 0; // notīrīt masīvu jauniem datiem
}
}
anulēts StoreUser ()
{
int ext = 0;
int lietotājs;
char ch;
kamēr (! ext) {
lcd.clear ();
lcd.print ("Ievadiet lietotāju");
lietotājs = lietotāji + 1;
lcd.print (lietotājs);
int x = 0;
kamēr (! x) {
par (int i = 0; i <10; i ++) {
ch = customKeypad.waitForKey ();
lcd.setCursor (i, 1);
lcd.print (ch);
userNum [lietotājs - 1] = ch;
}
kavēšanās (500);
lcd.clear ();
lcd.print ("Turpināt");
lcd.setCursor (0, 1);
lcd.print ("* jā # nē");
ch = customKeypad.waitForKey ();
ja (ch == '*') {
x = 1;
}
ja (ch == '#') {
x = 1;
ekst = 1;
lcd.clear ();
Displejs = 1;
}
}
lietotāji ++;
}
}
anulēti DisplayUsers ()
{
lcd.clear ();
(int i = 0; i <lietotāji; i ++) {
lcd.print ("Saglabāts lietotājs");
lcd.print (i + 1);
par (int u = 0; u <10; u ++) {
lcd.setCursor (u, 1);
lcd.print (userNum [u]);
}
kavēšanās (2000);
lcd.clear ();
Displejs = 1;
}
}
4. darbība: LIETOTĀJA ROKASGRĀMATA
1. Ieslēdzot projektu, parādīsies ielādes vai sveiciena ekrāns.
2. Parādīsies ekrāns “Ievadīt paroli”, kas ļaus ievadīt 4 rakstzīmes, burtus vai ciparus, pareizā parole ir: 5466, tas dos jums piekļuvi galvenajai izvēlnei.
3. Ievadot pareizo paroli, parādīsies galvenā izvēlne ar 4 iespējamām iespējām, lai pārvietotos pa dažādām pieejamajām funkcijām.
· A - ievadiet lietotāja mobilā tālruņa numurus.
o Ievadiet 10 ciparus, lai sistēmā saglabātu lietotāju
o Pēc 10 ciparu ievadīšanas nospiediet “*”, lai pievienotu vairāk lietotāju, vai nospiediet “#”, lai izietu atpakaļ galvenajā izvēlnē
· B - parādīt saglabātos lietotājus
o Lietotāji ritinās garām ekrānam, tie tiks parādīti katrs 3 sekundes, tiklīdz visi lietotāji tiks parādīti, lapa tiks aizvērta un atgriezīsies galvenajā izvēlnē.
o Ja A izvēlnes opcijā netika pievienots neviens lietotājs, tas parādīs “NO SAVED USERS”.
· C - parāda tiešo temperatūru
o Nospiediet “*”, lai atgrieztos galvenajā izvēlnē
· D - parādīt īsu tekstu
o Parāda radītāja vārdu un tēmu, kurai tas tika apkopots, ar datumu.
Ieteicams:
Iepazīšanās ar "profesionālo ILC8038 funkciju ģeneratora DIY komplektu": 5 soļi

Iepazīšanās ar "profesionālu ILC8038 funkciju ģeneratora DIY komplektu": es biju domājis par dažiem jauniem elektronikas projektiem, kad es saskāros ar mazu mazu funkciju ģeneratoru komplektu. Tas tiek iekasēts kā “profesionāls ILC8038 funkciju ģeneratora sinusa trīsstūra kvadrātveida viļņu DIY komplekts”, un tas ir pieejams no vairākiem pārdevējiem
Automātiska saules izsekotāja izveide ar Arduino UNO: 8 soļi

Automātiska saules izsekotāja izveide ar Arduino UNO: Saules enerģija kļūst arvien izplatītāka visā pasaulē. Pašlaik tiek pētītas daudzas metodes, lai saules paneļi ražotu vairāk enerģijas, samazinot mūsu paļaušanos uz fosilo kurināmo un oglēm. Viens veids, kā to izdarīt, ir paneļu pārvietošana
ESP-12E (ESP8266) Ar Arduino Uno: savienojuma izveide: 3 soļi

ESP-12E (ESP8266) Ar Arduino Uno: Savienojuma izveide: DARBS PROGRESĀ, ATSTĀJIET KOMENTĀRUS, LAI VARĒTU TO KOPĀ UZLABOT Precīzāk, es izmantošu šo ESP-12E versiju
Pārnēsājams funkciju ģenerators Arduino: 7 soļi (ar attēliem)

Pārnēsājamais funkciju ģenerators Arduino: Funkciju ģenerators ir ļoti noderīgs rīks, it īpaši, ja mēs apsveram pārbaudīt mūsu ķēdes reakciju uz noteiktu signālu. Šajā pamācībā es aprakstīšu neliela, viegli lietojama, pārnēsājama funkciju ģeneratora veidošanas secību. Funkcijas
Arduino digitālais pulkstenis ar modinātāja funkciju (pielāgota PCB): 6 soļi (ar attēliem)

Arduino digitālais pulkstenis ar modinātāja funkciju (pielāgota PCB): šajā DIY rokasgrāmatā es parādīšu, kā padarīt šo modinātāja funkciju savu ciparu pulksteni. Šajā projektā es nolēmu izveidot savu PCB, kuras pamatā ir Arduino UNO mikrokontrolleris - Atmega328p. Zemāk jūs atradīsit elektronisko shēmu ar PCB l