Sommario:

Arduino UNO (creazione di menu e funzioni): 4 passaggi
Arduino UNO (creazione di menu e funzioni): 4 passaggi

Video: Arduino UNO (creazione di menu e funzioni): 4 passaggi

Video: Arduino UNO (creazione di menu e funzioni): 4 passaggi
Video: NON CONOSCI ARDUINO??? te lo insegno io PUNTATA ZERO 2024, Dicembre
Anonim
Arduino UNO (creazione di menu e funzioni)
Arduino UNO (creazione di menu e funzioni)
Arduino UNO (creazione di menu e funzioni)
Arduino UNO (creazione di menu e funzioni)

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: