Sommario:
- Passaggio 1: componenti
- Passaggio 2: cablaggio dei componenti
- Passaggio 3: codice
- Passaggio 4: GUIDA PER L'UTENTE
Video: Arduino UNO (creazione di menu e funzioni): 4 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
In questo tutorial esploreremo come creare menu, leggere la temperatura da un sensore TC74A0 e visualizzare i "valori" (in questo caso i numeri di cellulare) in un modo infinito, ma limitato alla memoria a bordo dell'arduino.
Useremo
-Array
-Schermo a cristalli liquidi
-Tastiera
Guida per l'utente inclusa nella fase finale.
Passaggio 1: componenti
Arduino Uno
· Tastiera 4x4
· Sensore di temperatura digitale TC74A0
· Modulo LCD I2c 16x2
· Display a cristalli liquidi 16x2
· Cavi per ponticelli
· tagliere
· Personal computer
· Arduino IDE
· Cavo di trasferimento
Passaggio 2: cablaggio dei componenti
SENSORE DI TEMPERATURA E LCD COLLEGATI SULLA STESSA LINEA A SDA E SCL (A4, A5)
LCD (modulo I2c)
o SDA to A5 su Arduino
o SCL in A4 su Arduino
o VCC a 5V su Arduino
o GND to GND su Arduino
· Tastiera 4 x 4
o Pin 1 – 8 sulla tastiera collegati rispettivamente ai pin 9 – 2 su Arduino
Sensore di temperatura TC74A0
o TC74A0 pin 2 su SDA su Arduino
o TC74A0 pin 3 a GND su Arduino
o TC74A0 pin 4 su SCL su Arduino
o TC74A0 pin 5 a 5V su Arduino
Passaggio 3: codice
#include //Include le librerie durante la compilazione
#includere
#includere
#define Password_Length 5
#define Command_Length 3
#define CellNumber 10
int utenti = 0;
int Display = 0;
int indirizzo= 72; //tc74a0 INDIRIZZO
intI = 0;
int UTENTE;
intX = 0;
int XY = 0;
temperatura interna;
int tempPre = 0;
char userNum[10][10] = {{}, {}, {}};
char Data[Password_Length];
char Master[Password_Lenght] = "5466"; //PAROLA D'ORDINE
char ExitData[Command_Length]; //
char Master1[Command_Lenght] = "**";//
char MenuItem;
char CELLArrayA[10];
char CELLArrayB[10];
char CELLArrayC[10];
const byte RIGHE = 4; //quattro righe
const byte COLS = 4; //quattro colonne
byte rowPins[RIGHE] = {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] = //AVVIO TASTIERA
{
{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}
};
Tastiera customKeypad = Tastiera(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
configurazione nulla()
{
Serial.begin(9600); //questo crea il monitor seriale
Wire.begin(); //questo crea un oggetto Wire
lcd.begin(16, 2);
lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Attendi 3"); //SCHERMATA DI CARICAMENTO
ritardo(1000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Attendi 2");
ritardo(1000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Attendi 1");
ritardo(300);
lcd.clear();
String myString = "ARDUINO ISTRUTBILE";
lcd.setCursor(2, 2);
lcd.print(myString);
ritardo (2500);
for(int scrollCounter=0;scrollCounter<24;scrollCounter++)
{
lcd.scrollDisplayLeft();
ritardo(300);
}
lcd.clear();
lcd.print("Inserisci la password");
}
ciclo vuoto()
{
switch(Display) //DOVE SIAMO NEL MENU PRINCIPALE
{ //L'UTENTE HA PREMUTO A, B, C, D
caso 0:
{
Parola d'ordine();
}
rottura;
caso 1:
{
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("A B C D");
lcd.setCursor(0, 0);
lcd.print("Menu principale");
Visualizzazione = 2;
ritardo(100);
rottura;
}
caso 2:
{
char customKey = customKeypad.getKey();
interruttore (tasto personalizzato)
{
caso 'A':
{
Serial.println("È stato premuto A");
StoreUser();
rottura;
}
caso 'B':
{
Serial.println("B è stato premuto");
if (utenti == 0) {
lcd.clear();
lcd.print("NESSUN UTENTE SALVATO");
ritardo (3000);
lcd.clear();
Visualizza = 1;
rottura;
}
VisualizzaUtenti(); rottura;
}
caso 'C':
{
Serial.println("C è stato premuto"); //USATO DURANTE IL COLLAUDO
int est = 0;
mentre (!est) {
char ch;
temp = MenuTemp();
if (temp != tempPre) {
lcd.clear();
lcd.print("Temperatura");
lcd.setCursor(0, 1);
lcd.print(temp);
lcd.print("C");
tempPre = temperatura;
ritardo (500);
}
ch = customKeypad.getKey();
if (ch == '*') //ESCI DAL MENU TEMPERATURA (se * PREMUTO)
{
est = 1;
lcd.clear();
Visualizza = 1;
}
}
rottura;
MenuTemp();
rottura;
}
caso 'D':
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("NUA PRAC");
lcd.setCursor(0, 1);
lcd.print("JB SCHOEMAN");
ritardo (3000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("MAGGIO 2019");
lcd.setCursor(0, 1);
lcd.print("CC OOSTHUIZEN");
ritardo (3000);
lcd.clear();
Visualizza = 1;
}
}
}
}
}
// FUNZIONI PERSONALIZZATE PER RICHIAMARE VALORI O PROCEDURE
annulla password()
{
char customKey = customKeypad.getKey();
if (customKey) // si assicura che un tasto sia effettivamente premuto, uguale a (customKey != NO_KEY)
{
Data[data_count] = customKey; // memorizza char nell'array di dati
lcd.setCursor(data_count, 1); // sposta il cursore per mostrare ogni nuovo carattere
lcd.print("*"); // stampa il carattere in corrispondenza di detto cursore
data_count++; // incrementa l'array di dati di 1 per memorizzare il nuovo carattere, inoltre tiene traccia del numero di caratteri inseriti
}
if(data_count == Password_Lenght-1) // se l'indice dell'array è uguale al numero di caratteri previsti, confronta i dati con il master
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("La password è ");
if(!strcmp(Data, Master)) // uguale a (strcmp(Data, Master) == 0)
{
lcd.print("Buono");
lcd.clear();
Visualizza = 1;
}
altro
lcd.print("Cattivo");
delay(1000);// ha aggiunto 1 secondo di ritardo per assicurarsi che la password sia completamente mostrata sullo schermo prima che venga cancellata.
lcd.clear();
eliminare i dati();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Inserisci la password");
}
}
int MenuTemp()
{
Wire.beginTransmission(indirizzo);
Wire.write(0);
Wire.endTransmission();
Wire.requestFrom(indirizzo, 1);
while (Filo.disponibile() == 0);
int c = Wire.read();
ritorno c;
}
void clearData()
{
while(data_count !=0)
{ // Questo può essere usato per qualsiasi dimensione dell'array, Dati[data_count--] = 0; //cancella array per nuovi dati
}
}
void StoreUser()
{
int est = 0;
utente int;
char ch;
mentre (!est) {
lcd.clear();
lcd.print("Inserisci utente");
utente = utenti + 1;
lcd.print(utente);
intero x = 0;
mentre (!x) {
for (int i = 0; i < 10; i++) {
ch = customKeypad.waitForKey();
lcd.setCursor(i, 1);
lcd.print(ch);
userNum[utente - 1] = ch;
}
ritardo (500);
lcd.clear();
lcd.print("Continua");
lcd.setCursor(0, 1);
lcd.print("* si # no");
ch = customKeypad.waitForKey();
if (ch == '*') {
x = 1;
}
if (ch == '#') {
x = 1;
est = 1;
lcd.clear();
Visualizza = 1;
}
}
utenti++;
}
}
void DisplayUsers()
{
lcd.clear();
for (int i = 0; i < utenti; i++) {
lcd.print("Utente salvato");
lcd.print(i + 1);
for (int u = 0; u < 10; u++) {
lcd.setCursor(u, 1);
lcd.print(userNum[u]);
}
ritardo (2000);
lcd.clear();
Visualizza = 1;
}
}
Passaggio 4: GUIDA PER L'UTENTE
1. All'accensione del progetto apparirà una schermata di caricamento o di benvenuto.
2. Apparirà una schermata “Enter Password”, questa schermata ti permette di inserire 4 caratteri, lettere o numeri, la password corretta è: 5466, questo ti permetterà di accedere al menu principale.
3. Inserendo la password corretta apparirà il menù principale con 4 possibili opzioni per navigare tra le diverse funzioni disponibili.
· A – Immettere i numeri di cellulare dell'utente.
o Immettere 10 cifre per salvare un utente nel sistema
o Dopo aver inserito 10 cifre premere “* “per aggiungere altri utenti, oppure premere “#” per tornare al menu principale
· B – Visualizza gli utenti salvati
o Gli utenti scorreranno oltre lo schermo, vengono visualizzati per 3 secondi ciascuno, non appena tutti gli utenti vengono visualizzati la pagina si chiuderà e tornerà al menu principale.
o Se non sono stati aggiunti utenti nell'opzione di menu A, verrà visualizzato "NESSUN UTENTE SALVATO".
· C – Visualizza la temperatura in tempo reale
o Premere “* “per tornare al menu principale
· D – Visualizza testo breve
o Visualizza il nome del creatore e l'oggetto per cui è stato compilato con una data.
Consigliato:
Conoscere il "Kit fai da te del generatore di funzioni professionale ILC8038": 5 passaggi
Conoscere il "Kit fai da te del generatore di funzioni professionale ILC8038": stavo cercando alcuni nuovi progetti di elettronica quando mi sono imbattuto in un simpatico kit generatore di funzioni. È classificato come "Kit fai-da-te fai-da-te con generatore di funzioni ILC8038 professionale a triangolo sinusoidale" ed è disponibile da numerosi fornitori
Generatore di funzioni: 12 passaggi (con immagini)
Generatore di funzioni: questa istruzione descrive il design del generatore di funzioni basato sul circuito integrato analogico MAX038 di Maxims. Il generatore di funzioni è uno strumento molto utile per i fanatici dell'elettronica. È necessario per sintonizzare i circuiti di risonanza, testare l'audio
Generatore di funzioni portatile su Arduino: 7 passaggi (con immagini)
Generatore di funzioni portatile su Arduino: Il generatore di funzioni è uno strumento molto utile, specialmente quando stiamo considerando di testare la risposta del nostro circuito a un determinato segnale. In questo tutorial descriverò la sequenza di costruzione di un generatore di funzioni portatile, piccolo e facile da usare. Caratteristiche di
Generatore di suoni Arduino senza libreria o funzioni seriali (con interruzioni): 10 passaggi
Generatore di suoni Arduino senza libreria o funzioni seriali (con interruzioni): questo non è qualcosa su cui normalmente farei un istruttore, preferisco il mio lavoro in metallo, ma poiché sono uno studente di ingegneria elettrica e devo seguire un corso sui microcontrollori ( Embedded Systems Design), ho pensato di creare un istruibile su uno dei miei p
Assemblaggio di "Wise Clock 2" (sveglia basata su Arduino con molte funzioni extra): 6 passaggi
Assemblaggio di "Wise Clock 2" (sveglia basata su Arduino con molte funzionalità extra): questo tutorial mostra come assemblare il kit per Wise Clock 2, un progetto open source (hardware e software). Un kit completo di Wise Clock 2 può essere acquistato qui. In sintesi, questo è ciò che Wise Clock 2 può fare (con l'attuale software open source