Arduino UNO (Menüs und Funktionen erstellen) - Gunook
Arduino UNO (Menüs und Funktionen erstellen) - Gunook
Anonim
Arduino UNO (Erstellen von Menüs und Funktionen)
Arduino UNO (Erstellen von Menüs und Funktionen)
Arduino UNO (Erstellen von Menüs und Funktionen)
Arduino UNO (Erstellen von Menüs und Funktionen)

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.