INHOUDSOPGAWE:
2025 Outeur: John Day | [email protected]. Laas verander: 2025-01-13 06:56
In hierdie instruksies sal ons ondersoek hoe om spyskaarte te maak, die temperatuur van 'n TC74A0 -sensor te lees en 'waardes' (in hierdie geval selfoonnommers) te wys op 'n oneindige manier, maar beperk tot die arduino's aan boordgeheue.
Ons sal gebruik
-Arrays
-Vloeibare kristalvertoning
-Toetsenbord
Gebruikersgids ingesluit in die laaste stap.
Stap 1: Komponente
Arduino Uno
· 4x4 -klavier
· TC74A0 digitale temperatuursensor
· I2c 16x2 LCD -module
· 16x2 vloeibare kristal skerm
· Springdrade
· Broodbord
· Persoonlike rekenaar
· Arduino IDE
· Oordragkabel
Stap 2: Bedrading van komponente
TEMPELSENSOR EN LCD op dieselfde lyn verbind met SDA EN SCL (A4, A5)
LCD (I2c -module)
o SDA na A5 op Arduino
o SCL na A4 op Arduino
o VCC tot 5V op Arduino
o GND tot GND op Arduino
· 4 x 4 Toetsenbord
o Speld 1 - 8 op die toetsbord gekoppel aan pen 9 - 2 op onderskeidelik Arduino
TC74A0 temp sensor
o TC74A0 pen 2 na SDA op Arduino
o TC74A0 pen 3 na GND op Arduino
o TC74A0 pen 4 na SCL op Arduino
o TC74A0 pen 5 tot 5V op Arduino
Stap 3: Kodeer
#include // Sluit biblioteke in by die opstel
#insluit
#insluit
#definieer wagwoord_lengte 5
#definieer opdrag_lengte 3
#definieer selnommer 10
int gebruikers = 0;
int Display = 0;
int adres = 72; // tc74a0 ADRES
int I = 0;
int GEBRUIKER;
int X = 0;
int XY = 0;
int temp;
int tempPre = 0;
char userNum [10] [10] = {{}, {}, {}};
char Data [Password_Lenght];
char Master [Password_Lenght] = "5466"; // WAGWOORD
char ExitData [Command_Lenght]; //
char Master1 [Command_Lenght] = "**"; //
char MenuItem;
char CELLArrayA [10];
char CELLArrayB [10];
char CELLArrayC [10];
const byte RYDE = 4; // vier rye
const byte COLS = 4; // vier kolomme
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] = // INITIATING KEYPAD
{
{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}
};
Toetsenbord customKeypad = Toetsenbord (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS);
leemte opstelling ()
{
Serial.begin (9600); // dit skep die Serial Monitor
Wire.begin (); // dit skep 'n Wire -voorwerp
lcd.begin (16, 2);
lcd.backlight ();
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Wag asseblief 3"); // LAAISKERM
vertraging (1000);
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Wag asseblief 2");
vertraging (1000);
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Wag asseblief 1");
vertraging (300);
lcd.clear ();
String myString = "ARDUINO INSTRUCTABLE";
lcd.setCursor (2, 2);
lcd.print (myString);
vertraging (2500);
vir (int scrollCounter = 0; scrollCounter <24; scrollCounter ++)
{
lcd.scrollDisplayLeft ();
vertraging (300);
}
lcd.clear ();
lcd.print ("Voer wagwoord in");
}
leemte lus ()
{
skakelaar (vertoon) // WAAR IN DIE HOOFMENU IS ONS
{// HET DIE GEBRUIKER PERS A, B, C, D
saak 0:
{
Wagwoord ();
}
breek;
geval 1:
{
lcd.clear ();
lcd.setCursor (0, 1);
lcd.print ("A B C D");
lcd.setCursor (0, 0);
lcd.print ("Hoofkieslys");
Vertoon = 2;
vertraging (100);
breek;
}
geval 2:
{
char customKey = customKeypad.getKey ();
skakelaar (customKey)
{
geval 'A':
{
Serial.println ("A is ingedruk");
StoreUser ();
breek;
}
geval 'B':
{
Serial.println ("B is ingedruk");
as (gebruikers == 0) {
lcd.clear ();
lcd.print ("GEEN GEREDE GEBRUIKERS");
vertraging (3000);
lcd.clear ();
Vertoon = 1;
breek;
}
DisplayUsers (); breek;
}
geval 'C':
{
Serial.println ("C is ingedruk"); // GEBRUIKT TYDENS TOETSING
int ext = 0;
terwyl (! ext) {
char ch;
temp = TempMenu ();
as (temp! = tempPre) {
lcd.clear ();
lcd.print ("Temparature");
lcd.setCursor (0, 1);
lcd.print (temp);
lcd.print ("C");
tempPre = temp;
vertraging (500);
}
ch = customKeypad.getKey ();
if (ch == ' *') // EXIT TEMPERATURE MENU (as * GEDRUK)
{
ext = 1;
lcd.clear ();
Vertoon = 1;
}
}
breek;
TempMenu ();
breek;
}
geval 'D':
{
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("NUA PRAC");
lcd.setCursor (0, 1);
lcd.print ("JB SCHOEMAN");
vertraging (3000);
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("MEI 2019");
lcd.setCursor (0, 1);
lcd.print ("CC OOSTHUIZEN");
vertraging (3000);
lcd.clear ();
Vertoon = 1;
}
}
}
}
}
// AANGEPASTE FUNKSIES OM WAARDES OF PROSEDURES TE BEL
ongeldige wagwoord ()
{
char customKey = customKeypad.getKey ();
as (customKey) // seker maak dat 'n sleutel werklik ingedruk word, gelyk aan (customKey! = NO_KEY)
{
Data [data_telling] = pasgemaakte sleutel; // stoor char in data array
lcd.setCursor (data_count, 1); // beweeg die wyser om elke nuwe teken te wys
lcd.print ("*"); // druk char by genoemde wyser
data_telling ++; // verhoog die data -skikking met 1 om nuwe char op te slaan, hou ook die aantal tekens wat ingevoer is, dop
}
as (data_count == Password_Lenght-1) // as die skikkingindeks gelyk is aan die aantal verwagte karakters, vergelyk data met master
{
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Wagwoord is");
if (! strcmp (Data, Master)) // gelyk aan (strcmp (Data, Master) == 0)
{
lcd.print ("goed");
lcd.clear ();
Vertoon = 1;
}
anders
lcd.print ("sleg");
delay (1000); // bygevoeg 1 sekonde vertraging om seker te maak dat die wagwoord heeltemal op die skerm verskyn voordat dit skoongemaak word.
lcd.clear ();
duidelike data();
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Voer wagwoord in");
}
}
int TempMenu ()
{
Wire.beginTransmission (adres);
Wire.write (0);
Wire.endTransmission ();
Wire.requestFrom (adres, 1);
terwyl (Wire.available () == 0);
int c = Wire.read ();
terugkeer c;
}
leegte clearData ()
{
terwyl (data_telling! = 0)
{// Dit kan vir enige skikkinggrootte gebruik word, Data [data_telling--] = 0; // duidelike skikking vir nuwe data
}
}
void StoreUser ()
{
int ext = 0;
int gebruiker;
char ch;
terwyl (! ext) {
lcd.clear ();
lcd.print ("Voer gebruiker in");
gebruiker = gebruikers + 1;
lcd.print (gebruiker);
int x = 0;
terwyl (! x) {
vir (int i = 0; i <10; i ++) {
ch = customKeypad.waitForKey ();
lcd.setCursor (i, 1);
lcd.print (ch);
userNum [gebruiker - 1] = ch;
}
vertraging (500);
lcd.clear ();
lcd.print ("Gaan voort");
lcd.setCursor (0, 1);
lcd.print ("* ja # nee");
ch = customKeypad.waitForKey ();
as (ch == '*') {
x = 1;
}
as (ch == '#') {
x = 1;
ext = 1;
lcd.clear ();
Vertoon = 1;
}
}
gebruikers ++;
}
}
nietige DisplayUsers ()
{
lcd.clear ();
vir (int i = 0; i <gebruikers; i ++) {
lcd.print ("Gestoorde gebruiker");
lcd.print (i + 1);
vir (int u = 0; u <10; u ++) {
lcd.setCursor (u, 1);
lcd.print (userNum [u]);
}
vertraging (2000);
lcd.clear ();
Vertoon = 1;
}
}
Stap 4: GEBRUIKERSGIDS
1. As u die projek aanskakel, verskyn 'n laai- of welkomskerm.
2. Daar sal 'n "Enter Password" skerm verskyn; op hierdie skerm kan u 4 karakters, letters of syfers invoer; die regte wagwoord is: 5466, dit gee u toegang tot die hoofkieslys.
3. By die invoer van die korrekte wagwoord verskyn die hoofkieslys met 4 moontlike opsies om deur die verskillende beskikbare funksies te navigeer.
· A - Voer gebruikers selfoonnommers in.
o Tik 10 syfers in om 'n gebruiker op die stelsel te stoor
o Nadat 10 syfers ingevoer is, druk " *" om meer gebruikers by te voeg, of druk "#" om terug te gaan na die hoofkieslys
· B - Wys gestoorde gebruikers
o Die gebruikers sal verby die skerm blaai; dit word elk vir 3 sekondes vertoon, sodra alle gebruikers vertoon word, sal die bladsy toemaak en terugkeer na die hoofkieslys.
o As daar geen gebruikers by menu -opsie A bygevoeg is nie, sal dit 'GEEN GEREDE GEBRUIKERS' vertoon.
· C - Toon lewende temperatuur
o Druk " *" om terug te gaan na die hoofkieslys
· D - Vertoon kort teks
o Gee die naam van die skepper en die onderwerp waarvoor dit saamgestel is, met 'n datum.