Table des matières:

Arduino UNO (création de menus et de fonctions) : 4 étapes
Arduino UNO (création de menus et de fonctions) : 4 étapes

Vidéo: Arduino UNO (création de menus et de fonctions) : 4 étapes

Vidéo: Arduino UNO (création de menus et de fonctions) : 4 étapes
Vidéo: ChatGPT with Arduino Nano #arduino #chatgpt #technology #openAI #electronic 2024, Juillet
Anonim
Arduino UNO (création de menus et de fonctions)
Arduino UNO (création de menus et de fonctions)
Arduino UNO (création de menus et de fonctions)
Arduino UNO (création de menus et de fonctions)

Dans cette instructable, nous allons explorer comment créer des menus, lire la température à partir d'un capteur TC74A0 et afficher les « valeurs » (dans ce cas, les numéros de téléphone portable) d'une manière infinie, mais limitée à la mémoire embarquée de l'arduino.

nous utiliserons

-Tableaux

-Affichage à cristaux liquides

-Clavier

Guide de l'utilisateur inclus dans l'étape finale.

Étape 1: Composants

Arduino Uno

· Clavier 4x4

· Capteur de température numérique TC74A0

· Module LCD I2c 16x2

· Écran à cristaux liquides 16x2

· Cavaliers

· Planche à pain

· Ordinateur personnel

· IDE Arduino

· Câble de transfert

Étape 2: Câblage des composants

CAPTEUR DE TEMPÉRATURE ET LCD CONNECTÉS SUR LA MÊME LIGNE À SDA ET SCL (A4, A5)

LCD (module I2c)

o SDA vers A5 sur Arduino

o SCL vers A4 sur Arduino

o VCC à 5V sur Arduino

o GND à GND sur Arduino

· 4 x 4 claviers

o Pin 1 - 8 sur le clavier connecté à la broche 9 - 2 sur Arduino respectivement

Capteur de température TC74A0

o TC74A0 broche 2 vers SDA sur Arduino

o TC74A0 broche 3 à GND sur Arduino

o TC74A0 broche 4 vers SCL sur Arduino

o TC74A0 pin 5 à 5V sur Arduino

Étape 3: Coder

#include //Inclut les bibliothèques lors de la compilation

#comprendre

#comprendre

#define Password_Lenght 5

#define Command_Lenght 3

#define CellNumber 10

utilisateurs int = 0;

entier Affichage = 0;

adresse int= 72; // ADRESSE tc74a0

entier I = 0;

int UTILISATEUR;

entier X = 0;

entier XY = 0;

temp int;

int tempPre = 0;

char userNum[10][10] = {{}, {}, {}};

car Data[Password_Lenght];

char Master[Password_Lenght] = "5466"; //LE MOT DE PASSE

char ExitData[Command_Lenght]; //

char Master1[Command_Lenght] = "**";//

élément de menu char;

char CELLArrayA[10];

char CELLArrayB[10];

char CELLArrayC[10];

octet const ROWS = 4; //quatre lignes

octet const COLS = 4; //quatre colonnes

octet rowPins[LIGNES] = {5, 4, 3, 2};

octet colPins[COLS] = {9, 8, 7, 6};

octet data_count = 0, master_count = 0;

bool Pass_is_good;

LiquidCrystal_I2C lcd (0x26, 16, 2);

char hexaKeys[ROWS][COLS] = //LANCEMENT DU CLAVIER

{

{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}

};

Clavier customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);

void setup()

{

Serial.begin(9600); //cela crée le moniteur série

Fil.begin(); //cela crée un objet Wire

lcd.begin (16, 2);

LCD rétro-éclairage();

lcd.clear();

lcd.setCursor(0, 0);

lcd.print("Veuillez patienter 3"); //ECRAN DE CHARGEMENT

retard(1000);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print("Veuillez patienter 2");

retard(1000);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print("Veuillez patienter 1");

retard (300);

lcd.clear();

String maChaîne = "ARDUINO INSTRUCTABLE";

lcd.setCursor(2, 2);

lcd.print(maChaîne);

retard (2500);

for(int scrollCounter=0;scrollCounter<24;scrollCounter++)

{

lcd.scrollDisplayLeft();

retard (300);

}

lcd.clear();

lcd.print("Entrez le mot de passe");

}

boucle vide()

{

switch(Affichage) // O SOMMES-NOUS DANS LE MENU PRINCIPAL

{ // L'UTILISATEUR A-T-IL APPUYÉ SUR A, B, C, D

cas 0:

{

Mot de passe();

}

Pause;

cas 1:

{

lcd.clear();

lcd.setCursor(0, 1);

lcd.print("A B C D");

lcd.setCursor(0, 0);

lcd.print("Menu principal");

Affichage = 2;

retard (100);

Pause;

}

cas 2:

{

char customKey = customKeypad.getKey();

switch(customKey)

{

cas 'A':

{

Serial.println("A a été pressé");

StoreUser();

Pause;

}

cas 'B':

{

Serial.println("B a été pressé");

si (utilisateurs == 0) {

lcd.clear();

lcd.print("AUCUN UTILISATEUR ENREGISTRÉ");

retard(3000);

lcd.clear();

Affichage = 1;

Pause;

}

AfficherUtilisateurs(); Pause;

}

cas 'C':

{

Serial.println("C a été pressé"); //UTILISÉ PENDANT LES TESTS

int ext = 0;

tandis que (!ext) {

char ch;

temp = TempMenu();

if (temp != tempPre) {

lcd.clear();

lcd.print("Température");

lcd.setCursor(0, 1);

lcd.print(temp);

lcd.print("C");

tempPré = temp;

retard (500);

}

ch = customKeypad.getKey();

if (ch == '*') //SORTIE DU MENU TEMPÉRATURE (si *APPUYÉ)

{

poste = 1;

lcd.clear();

Affichage = 1;

}

}

Pause;

TempMenu();

Pause;

}

cas 'D':

{

lcd.clear();

lcd.setCursor(0, 0);

lcd.print("NUA PRAC");

lcd.setCursor(0, 1);

lcd.print("JB SCHOEMAN");

retard(3000);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print("MAI 2019");

lcd.setCursor(0, 1);

lcd.print("CC OOSTHUIZEN");

retard(3000);

lcd.clear();

Affichage = 1;

}

}

}

}

}

// FONCTIONS PERSONNALISÉES POUR APPEL DE VALEURS OU DE PROCÉDURES

annuler le mot de passe()

{

char customKey = customKeypad.getKey();

if (customKey) // s'assure qu'une touche est réellement enfoncée, égal à (customKey != NO_KEY)

{

Data[data_count] = customKey; // stocker le caractère dans un tableau de données

lcd.setCursor(data_count, 1); // déplace le curseur pour afficher chaque nouveau caractère

lcd.print("*"); // affiche le caractère au niveau dudit curseur

data_count++; // incrémente le tableau de données de 1 pour stocker le nouveau caractère, garde également une trace du nombre de caractères entrés

}

if(data_count == Password_Lenght-1) // si l'index du tableau est égal au nombre de caractères attendus, compare les données au maître

{

lcd.clear();

lcd.setCursor(0, 0);

lcd.print("Le mot de passe est ");

if(!strcmp(Data, Master)) // égal à (strcmp(Data, Master) == 0)

{

lcd.print("Bien");

lcd.clear();

Affichage = 1;

}

autre

lcd.print("Mauvais");

delay(1000); // ajout d'un délai de 1 seconde pour s'assurer que le mot de passe est complètement affiché à l'écran avant qu'il ne soit effacé.

lcd.clear();

effacer les données();

lcd.clear();

lcd.setCursor(0, 0);

lcd.print("Entrez le mot de passe");

}

}

int TempMenu()

{

Wire.beginTransmission(adresse);

Wire.write(0);

Wire.endTransmission();

Wire.requestFrom(adresse, 1);

while (Wire.available() == 0);

int c = Wire.read();

retour c;

}

void clearData()

{

while(data_count !=0)

{ // Ceci peut être utilisé pour n'importe quelle taille de tableau, Données[data_count--] = 0; //effacer le tableau pour les nouvelles données

}

}

void StoreUser()

{

int ext = 0;

int utilisateur;

char ch;

tandis que (!ext) {

lcd.clear();

lcd.print("Entrer l'utilisateur");

utilisateur = utilisateurs + 1;

lcd.print(utilisateur);

entier x = 0;

tandis que (!x) {

pour (int i = 0; i < 10; i++) {

ch = customKeypad.waitForKey();

lcd.setCursor(i, 1);

lcd.print(ch);

userNum[user - 1] = ch;

}

retard (500);

lcd.clear();

lcd.print("Continuer");

lcd.setCursor(0, 1);

lcd.print("* oui # non");

ch = customKeypad.waitForKey();

si (ch == '*') {

x = 1;

}

si (ch == '#') {

x = 1;

poste = 1;

lcd.clear();

Affichage = 1;

}

}

utilisateurs++;

}

}

void DisplayUsers()

{

lcd.clear();

pour (int i = 0; i < utilisateurs; i++) {

lcd.print("Utilisateur enregistré");

lcd.print(i + 1);

pour (int u = 0; u < 10; u++) {

lcd.setCursor(u, 1);

lcd.print(userNum[u]);

}

retard (2000);

lcd.clear();

Affichage = 1;

}

}

Étape 4: GUIDE DE L'UTILISATEUR

1. Lors de la mise sous tension du projet, un écran de chargement ou d'accueil apparaît.

2. Un écran « Entrer le mot de passe » apparaîtra, cet écran vous permet de saisir 4 caractères, lettres ou chiffres, le mot de passe correct est: 5466, cela vous donnera accès au menu principal.

3. Après avoir entré le mot de passe correct, le menu principal apparaîtra avec 4 options possibles pour naviguer dans les différentes fonctions disponibles.

· A – Entrez les numéros de téléphone portable de l'utilisateur.

o Entrez 10 chiffres pour enregistrer un utilisateur dans le système

o Après avoir saisi 10 chiffres, appuyez sur « * » pour ajouter d'autres utilisateurs, ou appuyez sur « # » pour revenir au menu principal

· B – Afficher les utilisateurs enregistrés

o Les utilisateurs défilent devant l'écran, ils sont affichés pendant 3 secondes chacun, dès que tous les utilisateurs sont affichés, la page se ferme et revient au menu principal.

o Si aucun utilisateur n'a été ajouté dans l'option de menu A, il affichera « AUCUN UTILISATEUR ENREGISTRÉ ».

· C - Affiche la température en direct

o Appuyez sur « * » pour revenir au menu principal

· D – Afficher un texte court

o Affiche le nom du créateur et le sujet pour lequel il a été compilé avec une date.

Conseillé: