![Arduino UNO (skapa menyer och funktioner): 4 steg Arduino UNO (skapa menyer och funktioner): 4 steg](https://i.howwhatproduce.com/images/004/image-9747-10-j.webp)
Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-23 15:11
![Arduino UNO (skapa menyer och funktioner) Arduino UNO (skapa menyer och funktioner)](https://i.howwhatproduce.com/images/004/image-9747-11-j.webp)
![Arduino UNO (skapa menyer och funktioner) Arduino UNO (skapa menyer och funktioner)](https://i.howwhatproduce.com/images/004/image-9747-12-j.webp)
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.
Rekommenderad:
RaspberryPi 3/4 förlängningskort för att lägga till extra funktioner i Raspberry Pi: 15 steg (med bilder)
![RaspberryPi 3/4 förlängningskort för att lägga till extra funktioner i Raspberry Pi: 15 steg (med bilder) RaspberryPi 3/4 förlängningskort för att lägga till extra funktioner i Raspberry Pi: 15 steg (med bilder)](https://i.howwhatproduce.com/images/005/image-14597-j.webp)
RaspberryPi 3/4 förlängningskort för att lägga till extra funktioner i Raspberry Pi: vi vet att hallon pi 3/4 inte levereras med inbyggd ADC (analog till digital omvandlare) och RTC (realtidsklocka) så jag designar ett kretskort som innehåller 16 kanal 12bit ADC, RTC, SIM7600 4G -modul, tryckknappar, reläer, USB -strömavbrott, 5V -strömavbrott, 12V -ström
Introduktion till sopning och modifiering av funktioner: 9 steg
![Introduktion till sopning och modifiering av funktioner: 9 steg Introduktion till sopning och modifiering av funktioner: 9 steg](https://i.howwhatproduce.com/images/010/image-28826-j.webp)
Introduktion till sopning och modifieringsfunktioner: Denna handledning kommer att avslöja dig för det grundläggande svepkommandot, hålfunktioner, cirkulärt mönster, filé, fasning, rotera och återanvända skisser. Gå till ritpaketet för teknisk dimensionering och använd de ljudlösa videorna för att hjälpa dig
Hur man använder Mac Terminal och hur man använder viktiga funktioner: 4 steg
![Hur man använder Mac Terminal och hur man använder viktiga funktioner: 4 steg Hur man använder Mac Terminal och hur man använder viktiga funktioner: 4 steg](https://i.howwhatproduce.com/images/005/image-14039-7-j.webp)
Så här använder du Mac Terminal och hur du använder viktiga funktioner: Vi visar dig hur du öppnar MAC Terminal. Vi kommer också att visa dig några funktioner i terminalen, till exempel ifconfig, ändra kataloger, komma åt filer och arp. Ifconfig låter dig kontrollera din IP -adress och din MAC -annons
Arduino Mindre kända funktioner: 9 steg
![Arduino Mindre kända funktioner: 9 steg Arduino Mindre kända funktioner: 9 steg](https://i.howwhatproduce.com/images/001/image-68-73-j.webp)
Arduino Mindre kända funktioner: Detta är mer en lista över inte så ofta nämnda funktioner hos Arduino -plattformar som vanligtvis används (t.ex. Uno, Nano). Denna lista bör fungera som en referens när du behöver leta upp dessa funktioner och sprida ordet. Titta på koden för att se
Arduino tongenerator utan bibliotek eller seriella funktioner (med avbrott): 10 steg
![Arduino tongenerator utan bibliotek eller seriella funktioner (med avbrott): 10 steg Arduino tongenerator utan bibliotek eller seriella funktioner (med avbrott): 10 steg](https://i.howwhatproduce.com/images/001/image-2689-38-j.webp)
Arduino Tone Generator With No Library or Serial Functions (With Interrupts): Det här är inte något jag normalt skulle göra instruktioner om, jag föredrar mitt metallarbete, men eftersom jag är elingenjör och måste gå en klass om mikrokontroller ( Embedded Systems Design), jag trodde att jag skulle göra en instruerbar på en av mina sidor