Table des matières:
Vidéo: Arduino UNO (création de menus et de fonctions) : 4 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:08
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é:
Apprendre à connaître le "Kit de bricolage générateur de fonctions professionnel ILC8038": 5 étapes
Apprendre à connaître le "Kit de bricolage générateur de fonctions professionnel ILC8038": Je cherchais de nouveaux projets électroniques lorsque je suis tombé sur un joli petit kit de générateur de fonctions. Il est présenté comme le "Kit de bricolage à onde carrée triangulaire sinusoïdale de générateur de fonction ILC8038 professionnel" et est disponible auprès d'un certain nombre de fournisseurs
Générateur de fonctions portable sur Arduino : 7 étapes (avec photos)
Générateur de fonctions portable sur Arduino : Le générateur de fonctions est un outil très utile, en particulier lorsque nous envisageons de tester la réponse de notre circuit à un certain signal. Dans ce instructable, je vais décrire la séquence de construction du générateur de fonction portable petit, facile à utiliser. Caractéristiques de
Générateur de sons Arduino sans bibliothèque ni fonctions série (avec interruptions) : 10 étapes
Générateur de sons Arduino sans bibliothèque ni fonctions série (avec interruptions) : ce n'est pas quelque chose sur lequel je ferais normalement un instructable, je préfère mon travail du métal, mais comme je suis un étudiant en génie électrique et que je dois suivre un cours sur les microcontrôleurs ( Embedded Systems Design), j'ai pensé que je ferais un instructable sur l'un de mes p
Robot multi-fonctions bricolage avec Arduino: 13 étapes (avec photos)
Robot multi-fonctions DIY avec Arduino : Ce robot a été principalement conçu pour comprendre Arduino et combiner divers projets d'Arduino pour former un robot Arduino multi-fonctions. Et en plus, qui ne veut pas avoir un robot animal de compagnie ? Je l'ai donc nommé BLUE ROVIER 316. J'aurais pu acheter un beau
Gardien V1.0 --- Mise à niveau de la caméra judas de porte avec Arduino (enregistrement de détection de mouvement et fonctions de choc électrique) : 5 étapes
Gardien V1.0 ||| Mise à niveau de la caméra judas de porte avec Arduino (enregistrement de détection de mouvement et fonctionnalités de choc électrique) : j'ai commandé une caméra judas mais lorsque je l'utilise, je me suis rendu compte qu'il n'y avait pas de fonction d'enregistrement automatique (activée par la détection de mouvement). Ensuite, j'ai commencé à enquêter sur son fonctionnement. Pour enregistrer une vidéo, vous devez 1- maintenir enfoncé le bouton d'alimentation pendant presque 2 secondes