Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-13 06:58
I den här instruktionsboken kommer vi att utforska hur man skapar menyer, läsa temperatur från en TC74A0 -sensor och visa "värden" (i detta fall mobiltelefonnummer) på ett sätt som är oändligt, men begränsat till arduinoerna ombord.
Vi kommer att använda
-Arrays
-LCD-skärm
-Knappsats
Användarhandbok ingår i det sista steget.
Steg 1: Komponenter
Arduino Uno
· 4x4 knappsats
· TC74A0 digital temperaturgivare
· I2c 16x2 LCD -modul
· 16x2 flytande kristallskärm
· Bygelkablar
· Brödbräda
· Personlig dator
· Arduino IDE
· Överföringskabel
Steg 2: Komponentledningar
TEMP SENSOR OCH LCD ANSLUTAD PÅ SAMMA LINJE TILL SDA OCH SCL (A4, A5)
LCD (I2c -modul)
o SDA till A5 på Arduino
o SCL till A4 på Arduino
o VCC till 5V på Arduino
o GND till GND på Arduino
· 4 x 4 knappsatser
o Pin 1 - 8 på knappsatsen ansluten till pin 9 - 2 på Arduino respektive
TC74A0 temp sensor
o TC74A0 stift 2 till SDA på Arduino
o TC74A0 stift 3 till GND på Arduino
o TC74A0 stift 4 till SCL på Arduino
o TC74A0 stift 5 till 5V på Arduino
Steg 3: Kod
#include // Inkluderar bibliotek vid kompilering
#omfatta
#omfatta
#define Password_Lenght 5
#define Command_Lenght 3
#define CellNumber 10
int användare = 0;
int Display = 0;
int -adress = 72; // tc74a0 ADRESS
int I = 0;
int ANVÄNDARE;
int X = 0;
int XY = 0;
int temp;
int tempPre = 0;
char userNum [10] [10] = {{}, {}, {}};
char Data [Password_Lenght];
char Master [Password_Lenght] = "5466"; //LÖSENORD
char ExitData [Command_Lenght]; //
char Master1 [Command_Lenght] = "**"; //
char MenuItem;
röding CELLArrayA [10];
röding CELLArrayB [10];
röding CELLArrayC [10];
const byte RADER = 4; // fyra rader
const byte COLS = 4; // fyra kolumner
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 [RADER] [COLS] = // INITIERANDE KNAPP
{
{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}
};
Tangentbord customKeypad = Tangentbord (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS);
void setup ()
{
Serial.begin (9600); // detta skapar Serial Monitor
Wire.begin (); // detta skapar ett Wire -objekt
lcd.begin (16, 2);
lcd.backlight ();
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Vänta 3"); // LADDNINGSSKÄRM
fördröjning (1000);
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Vänta 2");
fördröjning (1000);
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Vänta 1");
fördröjning (300);
lcd.clear ();
String myString = "ARDUINO INSTRUCTABLE";
lcd.setCursor (2, 2);
lcd.print (myString);
fördröjning (2500);
för (int scrollCounter = 0; scrollCounter <24; scrollCounter ++)
{
lcd.scrollDisplayLeft ();
fördröjning (300);
}
lcd.clear ();
lcd.print ("Ange lösenord");
}
void loop ()
{
switch (Display) // VAR I HUVUDMENYEN ÄR VI
{// GJORDE ANVÄNDAREN TRYCK A, B, C, D
fall 0:
{
Lösenord();
}
ha sönder;
fall 1:
{
lcd.clear ();
lcd.setCursor (0, 1);
lcd.print ("A B C D");
lcd.setCursor (0, 0);
lcd.print ("Huvudmeny");
Display = 2;
fördröjning (100);
ha sönder;
}
fall 2:
{
char customKey = customKeypad.getKey ();
switch (customKey)
{
fall 'A':
{
Serial.println ("A trycktes");
StoreUser ();
ha sönder;
}
fall 'B':
{
Serial.println ("B trycktes");
om (användare == 0) {
lcd.clear ();
lcd.print ("INGA SPARADE ANVÄNDARE");
fördröjning (3000);
lcd.clear ();
Display = 1;
ha sönder;
}
DisplayUsers (); ha sönder;
}
fall 'C':
{
Serial.println ("C trycktes"); // ANVÄNDAS UNDER TESTNING
int ext = 0;
medan (! ext) {
char ch;
temp = TempMenu ();
if (temp! = tempPre) {
lcd.clear ();
lcd.print ("Temparature");
lcd.setCursor (0, 1);
lcd.print (temp);
lcd.print ("C");
tempPre = temp;
fördröjning (500);
}
ch = customKeypad.getKey ();
if (ch == ' *') // EXIT TEMPERATURE MENU (om * TRYCKT)
{
ext = 1;
lcd.clear ();
Display = 1;
}
}
ha sönder;
TempMenu ();
ha sönder;
}
fall 'D':
{
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("NUA PRAC");
lcd.setCursor (0, 1);
lcd.print ("JB SCHOEMAN");
fördröjning (3000);
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("MAJ 2019");
lcd.setCursor (0, 1);
lcd.print ("CC OOSTHUIZEN");
fördröjning (3000);
lcd.clear ();
Display = 1;
}
}
}
}
}
// ANPASSADE FUNKTIONER FÖR ATT RINGA VÄRDEN ELLER FÖRFARANDEN
ogiltigt lösenord ()
{
char customKey = customKeypad.getKey ();
om (customKey) // ser till att en tangent faktiskt trycks in, lika med (customKey! = NO_KEY)
{
Data [data_count] = customKey; // lagra röding i data array
lcd.setCursor (data_count, 1); // flytta markören för att visa varje ny tecken
lcd.print ("*"); // skriv ut char vid nämnda markör
data_count ++; // öka datamatrisen med 1 för att lagra ny röding, håll även koll på antalet inmatade tecken
}
om (data_count == Password_Lenght-1) // om arrayindex är lika med antalet förväntade tecken, jämför data med master
{
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Lösenord är");
if (! strcmp (Data, Master)) // lika med (strcmp (Data, Master) == 0)
{
lcd.print ("Bra");
lcd.clear ();
Display = 1;
}
annan
lcd.print ("Dåligt");
delay (1000); // lagt till 1 sekund fördröjning för att se till att lösenordet visas helt på skärmen innan det rensas.
lcd.clear ();
radera data();
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Ange lösenord");
}
}
int TempMeny ()
{
Wire.beginTransmission (adress);
Wire.write (0);
Wire.endTransmission ();
Wire.requestFrom (adress, 1);
medan (Wire.available () == 0);
int c = Wire.read ();
retur c;
}
void clearData ()
{
medan (data_count! = 0)
{// Detta kan användas för valfri matrisstorlek, Data [data_count--] = 0; // rensa array för nya data
}
}
void StoreUser ()
{
int ext = 0;
int användare;
char ch;
medan (! ext) {
lcd.clear ();
lcd.print ("Ange användare");
användare = användare + 1;
lcd.print (användare);
int x = 0;
medan (! x) {
för (int i = 0; i <10; i ++) {
ch = customKeypad.waitForKey ();
lcd.setCursor (i, 1);
lcd.print (ch);
userNum [användare - 1] = ch;
}
fördröjning (500);
lcd.clear ();
lcd.print ("Fortsätt");
lcd.setCursor (0, 1);
lcd.print ("* ja # nej");
ch = customKeypad.waitForKey ();
om (ch == '*') {
x = 1;
}
om (ch == '#') {
x = 1;
ext = 1;
lcd.clear ();
Display = 1;
}
}
användare ++;
}
}
void DisplayUsers ()
{
lcd.clear ();
för (int i = 0; i <användare; i ++) {
lcd.print ("Sparad användare");
lcd.print (i + 1);
för (int u = 0; u <10; u ++) {
lcd.setCursor (u, 1);
lcd.print (userNum [u]);
}
fördröjning (2000);
lcd.clear ();
Display = 1;
}
}
Steg 4: ANVÄNDARGUIDE
1. När du slår på projektet visas en laddnings- eller välkomstskärm.
2. En "Ange lösenord" -skärm visas, denna skärm låter dig skriva in 4 tecken, bokstäver eller siffror, rätt lösenord är: 5466, detta ger dig tillgång till huvudmenyn.
3. När du anger rätt lösenord visas huvudmenyn med fyra möjliga alternativ för att navigera mellan de olika tillgängliga funktionerna.
· A - Ange användarens mobiltelefonnummer.
o Ange 10 siffror för att spara en användare i systemet
o När 10 siffror har skrivits in trycker du på " *" för att lägga till fler användare, eller tryck på "#" för att gå tillbaka till huvudmenyn
· B - Visa sparade användare
o Användarna kommer att rulla förbi skärmen, de visas i 3 sekunder vardera, så snart alla användare visas stängs sidan och återgår till huvudmenyn.
o Om inga användare har lagts till i menyalternativ A, visas "INGA SPARADE ANVÄNDARE".
· C - Visar levande temperatur
o Tryck på “*” för att gå tillbaka till huvudmenyn
· D - Visa kort text
o Visar skaparens namn och ämnet det sammanställdes för med ett datum.