Inhaltsverzeichnis:
2025 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2025-01-13 06:56
In diesem anweisbaren werden wir untersuchen, wie man Menüs erstellt, die Temperatur von einem TC74A0-Sensor liest und "Werte" (in diesem Fall Handynummern) auf eine Weise anzeigt, die unendlich ist, aber auf den Bordspeicher des Arduino beschränkt ist.
Wir werden verwenden
-Arrays
-Flüssigkristallanzeige
-Tastenfeld
Benutzerhandbuch im letzten Schritt enthalten.
Schritt 1: Komponenten
Arduino Uno
· 4x4-Tastatur
· TC74A0 digitaler Temperatursensor
· I2c 16x2 LCD-Modul
· 16x2 Flüssigkristallanzeige
· Überbrückungsdrähte
· Steckbrett
· Persönlicher Computer
· Arduino-IDE
· Übertragungskabel
Schritt 2: Komponentenverdrahtung
TEMP. SENSOR UND LCD AN DIE GLEICHE LINIE AN SDA UND SCL ANGESCHLOSSEN (A4, A5)
LCD (I2c-Modul)
o SDA auf A5 auf Arduino
o SCL auf A4 auf Arduino
o VCC auf 5V auf Arduino
o GND zu GND auf Arduino
· 4 x 4 Tastatur
o Pin 1 – 8 auf der Tastatur verbunden mit Pin 9 – 2 auf Arduino bzw.
TC74A0 Temperatursensor
o TC74A0 Pin 2 an SDA auf Arduino
o TC74A0 Pin 3 auf GND auf Arduino
o TC74A0 Pin 4 an SCL auf Arduino
o TC74A0 Pin 5 bis 5V auf Arduino
Schritt 3: Code
#include //Bezieht Bibliotheken beim Kompilieren ein
#enthalten
#enthalten
#define Passwort_Länge 5
#define Befehlslänge 3
#define Zellennummer 10
int-Benutzer = 0;
int-Anzeige = 0;
int-Adresse = 72; //tc74a0 ADRESSE
int I = 0;
int BENUTZER;
intX = 0;
int XY = 0;
int-Temp;
int tempPre = 0;
char userNum[10][10] = {{}, {}, {}};
char Daten[Passwort_Länge];
char Master[Passwort_Länge] = "5466"; //PASSWORT
char ExitData[Befehlslänge]; //
char Master1[Befehlslänge] = "**";//
char Menüelement;
char CELLArrayA[10];
char CELLArrayB[10];
char CELLArrayC[10];
konstantes Byte ROWS = 4; //vier Reihen
konstantes Byte COLS = 4; //vier Spalten
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'}
};
Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
Void-Setup ()
{
Serial.begin (9600); // dies erstellt den seriellen Monitor
Wire.begin(); //Dies erstellt ein Wire-Objekt
lcd.begin(16, 2);
LCD-Rücklicht();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print ("Bitte warten Sie 3"); //LADEBILDSCHIRM
Verzögerung (1000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print ("Bitte warten Sie 2");
Verzögerung (1000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Bitte warten Sie 1");
Verzögerung (300);
lcd.clear();
String myString = "ARDUINO INSTRUCTABLE";
lcd.setCursor(2, 2);
lcd.print (meinString);
Verzögerung (2500);
for(int scrollCounter=0;scrollCounter<24;scrollCounter++)
{
lcd.scrollDisplayLeft();
Verzögerung (300);
}
lcd.clear();
lcd.print("Passwort eingeben");
}
Leere Schleife ()
{
Schalter (Display) // WO IM HAUPTMENÜ SIND WIR
{ // HATTE DER BENUTZER A, B, C, D gedrückt
Fall 0:
{
Passwort();
}
brechen;
Fall 1:
{
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("A B C D");
lcd.setCursor(0, 0);
lcd.print("Hauptmenü");
Anzeige = 2;
Verzögerung (100);
brechen;
}
Fall 2:
{
char customKey = customKeypad.getKey();
Schalter (benutzerdefinierter Schlüssel)
{
Fall 'A':
{
Serial.println ("A wurde gedrückt");
StoreUser();
brechen;
}
Fall 'B':
{
Serial.println ("B wurde gedrückt");
if (Benutzer == 0) {
lcd.clear();
lcd.print("KEINE GESPEICHERTEN BENUTZER");
Verzögerung (3000);
lcd.clear();
Anzeige = 1;
brechen;
}
DisplayUsers(); brechen;
}
Fall 'C':
{
Serial.println ("C wurde gedrückt"); //WÄHREND DES TESTS VERWENDET
int ext = 0;
während (!ext) {
char-ch;
temp = TempMenü();
if (temp != tempPre) {
lcd.clear();
lcd.print("Temperatur");
lcd.setCursor(0, 1);
lcd.print (temp);
lcd.print("C");
tempPre = temp;
Verzögerung (500);
}
ch = customKeypad.getKey();
if (ch == '*') // TEMPERATURMENÜ VERLASSEN (wenn * GEDRÜCKT)
{
ext = 1;
lcd.clear();
Anzeige = 1;
}
}
brechen;
TempMenü();
brechen;
}
Fall 'D':
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("NUA PRAC");
lcd.setCursor(0, 1);
lcd.print("JB SCHOEMAN");
Verzögerung (3000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print ("MAI 2019");
lcd.setCursor(0, 1);
lcd.print("CC OOSTHUIZEN");
Verzögerung (3000);
lcd.clear();
Anzeige = 1;
}
}
}
}
}
// BENUTZERDEFINIERTE FUNKTIONEN ZUM AUFRUFEN VON WERTEN ODER VERFAHREN
ungültiges Passwort()
{
char customKey = customKeypad.getKey();
if (customKey) // stellt sicher, dass tatsächlich eine Taste gedrückt wird, gleich (customKey != NO_KEY)
{
Data[data_count] = customKey; // char in Datenarray speichern
lcd.setCursor(data_count, 1); // Cursor bewegen, um jedes neue Zeichen anzuzeigen
lcd.print("*"); // char an besagtem Cursor drucken
data_count++; // Daten-Array um 1 erhöhen, um neue Zeichen zu speichern, auch die Anzahl der eingegebenen Zeichen verfolgen
}
if(data_count == Password_Lenght-1) // Wenn der Array-Index gleich der Anzahl der erwarteten Zeichen ist, vergleichen Sie die Daten mit dem Master
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Passwort ist");
if(!strcmp(Data, Master)) // gleich (strcmp(Data, Master) == 0)
{
lcd.print("Gut");
lcd.clear();
Anzeige = 1;
}
anders
lcd.print("Schlecht");
delay(1000); // 1 Sekunde Verzögerung hinzugefügt, um sicherzustellen, dass das Passwort vollständig auf dem Bildschirm angezeigt wird, bevor es gelöscht wird.
lcd.clear();
Daten löschen();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Passwort eingeben");
}
}
int TempMenü()
{
Wire.beginTransmission(Adresse);
Wire.write(0);
Wire.endTransmission();
Wire.requestFrom(Adresse, 1);
while (Draht.verfügbar() == 0);
int c = Wire.read();
Rückkehr c;
}
void clearData()
{
while(data_count !=0)
{ // Dies kann für jede Array-Größe verwendet werden, Daten[data_count--] = 0; // Array für neue Daten löschen
}
}
void StoreUser()
{
int ext = 0;
int-Benutzer;
char-ch;
während (!ext) {
lcd.clear();
lcd.print("Benutzer eingeben");
Benutzer = Benutzer + 1;
lcd.print (Benutzer);
intx = 0;
während (!x) {
für (int i = 0; i < 10; i ++) {
ch = customKeypad.waitForKey();
lcd.setCursor(i, 1);
lcd.print(ch);
userNum[user - 1] = ch;
}
Verzögerung (500);
lcd.clear();
lcd.print("Weiter");
lcd.setCursor(0, 1);
lcd.print("* ja # nein");
ch = customKeypad.waitForKey();
if (ch == '*') {
x = 1;
}
if (ch == '#') {
x = 1;
ext = 1;
lcd.clear();
Anzeige = 1;
}
}
Benutzer++;
}
}
void DisplayUsers()
{
lcd.clear();
for (int i = 0; i < Benutzer; i ++) {
lcd.print("Gespeicherter Benutzer");
lcd.print (i + 1);
für (int u = 0; u < 10; u++) {
lcd.setCursor(u, 1);
lcd.print(userNum[u]);
}
Verzögerung (2000);
lcd.clear();
Anzeige = 1;
}
}
Schritt 4: BENUTZERHANDBUCH
1. Beim Einschalten des Projekts erscheint ein Lade- oder Willkommensbildschirm.
2. Ein Bildschirm „Passwort eingeben“erscheint, dieser Bildschirm ermöglicht Ihnen die Eingabe von 4 Zeichen, Buchstaben oder Zahlen, das richtige Passwort lautet: 5466, dies ermöglicht Ihnen den Zugang zum Hauptmenü.
3. Nach Eingabe des richtigen Passworts erscheint das Hauptmenü mit 4 möglichen Optionen zum Navigieren durch die verschiedenen verfügbaren Funktionen.
· A – Geben Sie die Handynummern des Benutzers ein.
o Geben Sie 10 Ziffern ein, um einen Benutzer im System zu speichern
o Nachdem 10 Ziffern eingegeben wurden, drücken Sie „*“, um weitere Benutzer hinzuzufügen, oder drücken Sie „#“, um zum Hauptmenü zurückzukehren
· B – Gespeicherte Benutzer anzeigen
o Die Benutzer scrollen am Bildschirm vorbei, sie werden jeweils 3 Sekunden lang angezeigt, sobald alle Benutzer angezeigt werden, schließt sich die Seite und kehrt zum Hauptmenü zurück.
o Wenn in Menüoption A keine Benutzer hinzugefügt wurden, wird „KEINE GESPEICHERTE BENUTZER“angezeigt.
· C – Zeigt die Live-Temperatur an
o Drücken Sie „*“, um zum Hauptmenü zurückzukehren
· D – Kurztext anzeigen
o Zeigt den Namen des Erstellers und das Thema, für das es kompiliert wurde, mit Datum an.