Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
In deze instructable zullen we onderzoeken hoe we menu's kunnen maken, de temperatuur van een TC74A0-sensor kunnen lezen en "waarden" (in dit geval mobiele telefoonnummers) kunnen weergeven op een manier die oneindig is, maar beperkt tot het ingebouwde geheugen van de Arduino.
We zullen gebruiken
-Arrays
-LCD-scherm
-Toetsenblok
Gebruikershandleiding opgenomen in de laatste stap.
Stap 1: Componenten
Arduino Uno
· 4x4 toetsenbord
· TC74A0 digitale temperatuursensor
· I2c 16x2 LCD-module
· 16x2 liquid crystal display
· Overbruggingsdraden
· Broodplank
· Persoonlijke computer
· Arduino IDE
· Overdrachtskabel
Stap 2: Componentbedrading
TEMP SENSOR EN LCD AANGESLOTEN OP DEZELFDE LIJN MET SDA EN SCL (A4, A5)
LCD (I2c-module)
o SDA naar A5 op Arduino
o SCL naar A4 op Arduino
o VCC naar 5V op Arduino
o GND naar GND op Arduino
· 4 x 4 toetsenbord
o Pin 1 – 8 op toetsenbord aangesloten op respectievelijk pin 9 – 2 op Arduino
TC74A0 temperatuursensor
o TC74A0 pin 2 naar SDA op Arduino
o TC74A0 pin 3 naar GND op Arduino
o TC74A0 pin 4 naar SCL op Arduino
o TC74A0 pin 5 tot 5V op Arduino
Stap 3: Coderen
#include //Includes bibliotheken bij het compileren
#erbij betrekken
#erbij betrekken
#define Password_Length 5
#define Command_Length 3
#define CellNumber 10
int gebruikers = 0;
int-weergave = 0;
int adres = 72; //tc74a0 ADRES
int I = 0;
int GEBRUIKER;
intX = 0;
int XY = 0;
int-temp;
int tempPre = 0;
char userNum[10][10] = {{}, {}, {}};
char Gegevens [Wachtwoord_Lengte];
char Master[Password_Lenght] = "5466"; //WACHTWOORD
char ExitData [Command_Lenght]; //
char Master1[Command_Lenght] = "**";//
char MenuItem;
char CELLArrayA[10];
char CELLArrayB[10];
char CELLArrayC[10];
const byte RIJEN = 4; //vier rijen
constbyte COLS = 4; //vier kolommen
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 TOETSENBORD
{
{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}
};
Toetsenbord customKeypad = Toetsenbord (makeKeymap (hexaKeys), rowPins, colPins, RIJEN, COLS);
ongeldige setup()
{
Serieel.begin(9600); //dit maakt de seriële monitor
Draad.begin(); //dit maakt een Wire-object
lcd.begin (16, 2);
lcd.achtergrondverlichting();
lcd.wissen();
lcd.setCursor(0, 0);
lcd.print("Even geduld a.u.b. 3"); //LADEN SCHERM
vertraging (1000);
lcd.wissen();
lcd.setCursor(0, 0);
lcd.print("Even geduld a.u.b. 2");
vertraging (1000);
lcd.wissen();
lcd.setCursor(0, 0);
lcd.print("Even geduld a.u.b. 1");
vertraging (300);
lcd.wissen();
String myString = "ARDUINO INSTRUCTABLE";
lcd.setCursor(2, 2);
lcd.print(mijnString);
vertraging (2500);
for(int scrollCounter=0;scrollCounter<24;scrollCounter++)
{
lcd.scrollDisplayLeft();
vertraging (300);
}
lcd.wissen();
lcd.print("Voer wachtwoord in");
}
lege lus()
{
schakelaar (Display) // WAAR IN HET HOOFDMENU ZIJN WE
{ // HEEFT DE GEBRUIKER OP A, B, C, D GEDRUKT
geval 0:
{
Wachtwoord();
}
pauze;
zaak 1:
{
lcd.wissen();
lcd.setCursor(0, 1);
lcd.print("A B C D");
lcd.setCursor(0, 0);
lcd.print("Hoofdmenu");
Weergave = 2;
vertraging (100);
pauze;
}
geval 2:
{
char customKey = customKeypad.getKey();
schakelaar (customKey)
{
geval 'A':
{
Serial.println ("A werd ingedrukt");
WinkelGebruiker();
pauze;
}
geval 'B':
{
Serial.println ("B werd ingedrukt");
if (gebruikers == 0) {
lcd.wissen();
lcd.print("GEEN OPGESLAGEN GEBRUIKERS");
vertraging (3000);
lcd.wissen();
Weergave = 1;
pauze;
}
Gebruikers weergeven(); pauze;
}
geval 'C':
{
Serial.println ("C werd ingedrukt"); //GEBRUIKT TIJDENS HET TESTEN
int ext = 0;
terwijl (!ext) {
char ch;
temp = TempMenu();
if (temp != tempPre) {
lcd.wissen();
lcd.print("Temparatuur");
lcd.setCursor(0, 1);
lcd.afdruk(temp);
lcd.print(" C");
tempPre = temp;
vertraging (500);
}
ch = customKeypad.getKey();
if (ch == '*') // VERLAAT TEMPERATUURMENU (indien * INGEDRUKT)
{
ext = 1;
lcd.wissen();
Weergave = 1;
}
}
pauze;
TempMenu();
pauze;
}
geval 'D':
{
lcd.wissen();
lcd.setCursor(0, 0);
lcd.print("NUA PRAC");
lcd.setCursor(0, 1);
lcd.print("JB SCHOEMAN");
vertraging (3000);
lcd.wissen();
lcd.setCursor(0, 0);
lcd.print("MEI 2019");
lcd.setCursor(0, 1);
lcd.print("CC OOSTHUIZEN");
vertraging (3000);
lcd.wissen();
Weergave = 1;
}
}
}
}
}
// AANGEPASTE FUNCTIES OM WAARDEN OF PROCEDURES TE BELLEN
ongeldig wachtwoord()
{
char customKey = customKeypad.getKey();
if (customKey) // zorgt ervoor dat een toets daadwerkelijk wordt ingedrukt, gelijk aan (customKey != NO_KEY)
{
Data[data_count] = customKey; // sla char op in gegevensarray
lcd.setCursor(data_count, 1); // verplaats de cursor om elk nieuw teken weer te geven
lcd.print("*"); // print char bij genoemde cursor
data_count++; // verhoog de gegevensarray met 1 om nieuwe tekens op te slaan, houd ook het aantal ingevoerde tekens bij
}
if (data_count == Password_Lenght-1) // als de array-index gelijk is aan het aantal verwachte tekens, vergelijk dan gegevens met master
{
lcd.wissen();
lcd.setCursor(0, 0);
lcd.print("Wachtwoord is ");
if(!strcmp(Data, Master)) // gelijk aan (strcmp(Data, Master) == 0)
{
lcd.print("Goed");
lcd.wissen();
Weergave = 1;
}
anders
lcd.print("Slecht");
delay(1000);// 1 seconde vertraging toegevoegd om ervoor te zorgen dat het wachtwoord volledig op het scherm wordt weergegeven voordat het wordt gewist.
lcd.wissen();
Verwijder gegevens();
lcd.wissen();
lcd.setCursor(0, 0);
lcd.print("Voer wachtwoord in");
}
}
int TempMenu()
{
Wire.beginTransmission (adres);
Draad.schrijven(0);
Wire.endTransmission();
Wire.requestFrom(adres, 1);
while (Draad.beschikbaar() == 0);
int c = Draad.lezen();
terug c;
}
ongeldig clearData()
{
while(data_count !=0)
{ // Dit kan voor elke arraygrootte worden gebruikt, Gegevens[data_count--] = 0; // wis array voor nieuwe gegevens
}
}
void StoreUser()
{
int ext = 0;
int gebruiker;
char ch;
terwijl (!ext) {
lcd.wissen();
lcd.print("Voer Gebruiker in");
gebruiker = gebruikers + 1;
lcd.print(gebruiker);
int x = 0;
terwijl (!x) {
voor (int i = 0; i < 10; i++) {
ch = customKeypad.waitForKey();
lcd.setCursor(i, 1);
lcd.print(ch);
userNum[gebruiker - 1] = ch;
}
vertraging (500);
lcd.wissen();
lcd.print("Doorgaan");
lcd.setCursor(0, 1);
lcd.print("* ja # nee");
ch = customKeypad.waitForKey();
als (ch == '*') {
x = 1;
}
if (ch == '#') {
x = 1;
ext = 1;
lcd.wissen();
Weergave = 1;
}
}
gebruikers++;
}
}
void DisplayUsers()
{
lcd.wissen();
voor (int i = 0; i < gebruikers; i++) {
lcd.print("Opgeslagen gebruiker");
lcd.print(i + 1);
voor (int u = 0; u < 10; u++) {
lcd.setCursor(u, 1);
lcd.print(userNum[u]);
}
vertraging (2000);
lcd.wissen();
Weergave = 1;
}
}
Stap 4: GEBRUIKERSHANDLEIDING
1. Bij het inschakelen van het project verschijnt een laad- of welkomstscherm.
2. Een “Enter Password” scherm verschijnt, in dit scherm kunt u 4 karakters, letters of cijfers invoeren, het juiste wachtwoord is: 5466, hiermee krijgt u toegang tot het hoofdmenu.
3. Na het invoeren van het juiste wachtwoord, verschijnt het hoofdmenu met 4 mogelijke opties om door de verschillende beschikbare functies te navigeren.
· A – Voer mobiele telefoonnummers van gebruikers in.
o Voer 10 cijfers in om een gebruiker op te slaan in het systeem
o Nadat 10 cijfers zijn ingevoerd, drukt u op " * " om meer gebruikers toe te voegen of drukt u op "#" om terug te gaan naar het hoofdmenu
· B – Toon opgeslagen gebruikers
o De gebruikers scrollen langs het scherm, ze worden elk 3 seconden weergegeven, zodra alle gebruikers worden weergegeven, wordt de pagina gesloten en keert u terug naar het hoofdmenu.
o Als er geen gebruikers zijn toegevoegd in menu-optie A, wordt " GEEN OPGESLAGEN GEBRUIKERS" weergegeven.
· C – Geeft live temperatuur weer
o Druk op “* “om terug te gaan naar het hoofdmenu
· D – Korte tekst weergeven
o Toont de naam van de maker en het onderwerp waarvoor het is samengesteld met een datum.