Taula de continguts:
Vídeo: Arduino UNO (creació de menús i funcions): 4 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:14
En aquest instructiu, explorarem com crear menús, llegir la temperatura des d’un sensor TC74A0 i mostrar els “valors” (en aquest cas, els números de telèfon mòbil) d’una manera infinita, però limitada a la memòria de la placa arduino.
Ho farem servir
-Matrius
-Pantalla de cristall liquid
-Teclado
Guia de l'usuari inclosa al pas final.
Pas 1: components
Arduino Uno
· Teclat 4x4
· Sensor de temperatura digital TC74A0
· Mòdul LCD I2c 16x2
· Pantalla de cristall líquid de 16x2
· Cables de pont
· Tauler de pa
· Ordinador personal
· IDE Arduino
· Cable de transferència
Pas 2: cablejat de components
SENSOR TEMP I LCD CONECTATS EN LA MATEIXA LÍNIA A SDA I SCL (A4, A5)
LCD (mòdul I2c)
o SDA a A5 a Arduino
o SCL a A4 a Arduino
o VCC a 5V a Arduino
o GND a GND a Arduino
· Teclat 4 x 4
o Pin 1-8 del teclat connectat al pin 9-2 d'Arduino respectivament
Sensor de temperatura TC74A0
o TC74A0 pin 2 a SDA a Arduino
o TC74A0 pin 3 a GND a Arduino
o TC74A0 pin 4 a SCL a Arduino
o TC74A0 pin 5 a 5V a Arduino
Pas 3: Codi
#include // Inclou biblioteques quan es compila
#incloure
#incloure
#define Password_Longght 5
#define Command_Longt 3
#defineix el número de cel·la 10
usuaris int = 0;
int Display = 0;
adreça int = 72; // ADREÇA tc74a0
int I = 0;
int USUARI;
int X = 0;
int XY = 0;
int temp;
int tempPre = 0;
char userNum [10] [10] = {{}, {}, {}};
char Dades [Contrasenya_Longitud];
char Master [Password_Lenght] = "5466"; // CONTRASENYA
char ExitData [Command_Lenght]; //
char Master1 [Command_Lenght] = "**"; //
char MenuItem;
char CELLArrayA [10];
char CELLArrayB [10];
char CELLArrayC [10];
byte const ROWS = 4; // quatre files
byte const COLS = 4; // quatre columnes
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 [ROWS] [COLS] = // INICIATING KEYPAD
{
{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}
};
Teclat customKeypad = Teclat (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS);
configuració nul·la ()
{
Serial.begin (9600); // això crea el monitor de sèrie
Wire.begin (); // això crea un objecte Wire
lcd.begin (16, 2);
lcd.backlight ();
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Espereu 3"); // PANTALLA DE CARREGAMENT
retard (1000);
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Espereu 2");
retard (1000);
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Espereu 1");
retard (300);
lcd.clear ();
String myString = "ARDUINO INSTRUCTABLE";
lcd.setCursor (2, 2);
lcd.print (myString);
retard (2500);
per a (int scrollCounter = 0; scrollCounter <24; scrollCounter ++)
{
lcd.scrollDisplayLeft ();
retard (300);
}
lcd.clear ();
lcd.print ("Introduïu la contrasenya");
}
bucle buit ()
{
commutador (Visualització) // ON SOM EL MENÚ PRINCIPAL
{// L'USUARI VA PRESSAR A, B, C, D
cas 0:
{
Contrasenya ();
}
trencar;
cas 1:
{
lcd.clear ();
lcd.setCursor (0, 1);
lcd.print ("A B C D");
lcd.setCursor (0, 0);
lcd.print ("Menú principal");
Visualització = 2;
retard (100);
trencar;
}
cas 2:
{
char customKey = customKeypad.getKey ();
commutador (tecla personalitzada)
{
cas "A":
{
Serial.println ("A s'ha premut");
StoreUser ();
trencar;
}
cas "B":
{
Serial.println ("S'ha premut B");
if (usuaris == 0) {
lcd.clear ();
lcd.print ("SENSE USUARIS SALVATS");
retard (3000);
lcd.clear ();
Visualització = 1;
trencar;
}
DisplayUsers (); trencar;
}
cas "C":
{
Serial.println ("S'ha premut C"); // USAT DURANT LES PROVES
int ext = 0;
while (! ext) {
char ch;
temp = TempMenu ();
if (temp! = tempPre) {
lcd.clear ();
lcd.print ("Temparatura");
lcd.setCursor (0, 1);
lcd.print (temp);
lcd.print ("C");
tempPre = temp;
retard (500);
}
ch = customKeypad.getKey ();
if (ch == '*') // SURT DEL MENÚ DE TEMPERATURA (si * PRESSA)
{
ext = 1;
lcd.clear ();
Visualització = 1;
}
}
trencar;
TempMenu ();
trencar;
}
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 ("MAIG 2019");
lcd.setCursor (0, 1);
lcd.print ("CC OOSTHUIZEN");
retard (3000);
lcd.clear ();
Visualització = 1;
}
}
}
}
}
// FUNCIONS PERSONALITZADES PER CONVOCAR VALORS O PROCEDIMENTS
contrasenya nul·la ()
{
char customKey = customKeypad.getKey ();
if (customKey) // assegura que es prem una tecla, igual a (customKey! = NO_KEY)
{
Dades [recompte_dades] = clau personalitzada; // emmagatzema el caràcter a la matriu de dades
lcd.setCursor (nombre_dades, 1); // mou el cursor per mostrar cada caràcter nou
lcd.print ("*"); // imprimeix el caràcter en aquest cursor
data_count ++; // augmentar la matriu de dades per 1 per emmagatzemar caràcters nous, també feu un seguiment del nombre de caràcters introduïts
}
if (data_count == Password_Lenght-1) // si l'índex de matriu és igual al nombre de caràcters esperats, compareu les dades amb el mestre
{
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("La contrasenya és");
if (! strcmp (Data, Master)) // igual a (strcmp (Data, Master) == 0)
{
lcd.print ("Bo");
lcd.clear ();
Visualització = 1;
}
en cas contrari
lcd.print ("dolent");
delay (1000); // ha afegit un retard d'1 segon per assegurar-se que la contrasenya es mostra completament a la pantalla abans que s'esborri.
lcd.clear ();
esborrar les dades();
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Introduïu la contrasenya");
}
}
int TempMenu ()
{
Wire.beginTransmission (adreça);
Wire.write (0);
Wire.endTransmission ();
Wire.requestFrom (adreça, 1);
while (Wire.available () == 0);
int c = Wire.read ();
retorn c;
}
void clearData ()
{
while (nombre_dades! = 0)
{// Es pot utilitzar per a qualsevol mida de matriu, Dades [compte_dades--] = 0; // esborra la matriu per obtenir dades noves
}
}
void StoreUser ()
{
int ext = 0;
int usuari;
char ch;
while (! ext) {
lcd.clear ();
lcd.print ("Introduïu l'usuari");
usuari = usuaris + 1;
lcd.print (usuari);
int x = 0;
mentre (! x) {
per a (int i = 0; i <10; i ++) {
ch = customKeypad.waitForKey ();
lcd.setCursor (i, 1);
lcd.print (ch);
userNum [usuari - 1] = ch;
}
retard (500);
lcd.clear ();
lcd.print ("Continuar");
lcd.setCursor (0, 1);
lcd.print ("* sí # no");
ch = customKeypad.waitForKey ();
if (ch == '*') {
x = 1;
}
if (ch == '#') {
x = 1;
ext = 1;
lcd.clear ();
Visualització = 1;
}
}
usuaris ++;
}
}
void DisplayUsers ()
{
lcd.clear ();
per a (int i = 0; i <usuaris; i ++) {
lcd.print ("Usuari desat");
lcd.print (i + 1);
per a (int u = 0; u <10; u ++) {
lcd.setCursor (u, 1);
lcd.print (userNum [u]);
}
endarreriment (2000);
lcd.clear ();
Visualització = 1;
}
}
Pas 4: GUIA DE L'USUARI
1. En iniciar el projecte, apareixerà una pantalla de càrrega o benvinguda.
2. Apareixerà una pantalla "Introduïu la contrasenya", aquesta pantalla us permet introduir 4 caràcters, lletres o números, la contrasenya correcta és: 5466, us donarà accés al menú principal.
3. En introduir la contrasenya correcta, apareixerà el menú principal amb 4 possibles opcions per navegar per les diferents funcions disponibles.
· A - Introduïu els números de telèfon mòbil de l'usuari.
o Introduïu 10 dígits per desar un usuari al sistema
o Després d'haver introduït 10 dígits, premeu "*" per afegir més usuaris o premeu "#" per tornar al menú principal
· B: mostra els usuaris desats
o Els usuaris passaran per la pantalla, es mostraran durant 3 segons cadascun, tan aviat com es mostrin tots els usuaris, la pàgina es tancarà i tornarà al menú principal.
o Si no s'ha afegit cap usuari a l'opció de menú A, es mostrarà "SENSE USUARIS".
· C - Mostra la temperatura en viu
o Premeu "*" per tornar al menú principal
· D: mostra el text breu
o Mostra el nom del creador i el tema per al qual es va compilar amb una data.
Recomanat:
Funcions Arduino menys conegudes: 9 passos
Funcions menys conegudes d’Arduino: es tracta més d’una llista de les funcions que no s’esmenten tan sovint de les plataformes Arduino que s’utilitzen habitualment (per exemple, Uno, Nano). Aquest llistat hauria d’actuar com a referència sempre que hàgiu de buscar aquestes funcions i difondre la paraula. Mireu el codi per veure
Generador de funcions portàtils a Arduino: 7 passos (amb imatges)
Generador de funcions portàtils a Arduino: el generador de funcions és una eina molt útil, sobretot quan ens plantegem provar la resposta del nostre circuit a un senyal determinat. En aquest instructiu, descriuré la seqüència constructiva d’un petit generador de funcions portàtils fàcils d’utilitzar. Característiques de
Generador de tons Arduino sense biblioteca ni funcions de sèrie (amb interrupcions): 10 passos
Generador de tons Arduino sense biblioteca ni funcions de sèrie (amb interrupcions): això no és una cosa que normalment sigui útil per instruir, prefereixo la meva obra metàl·lica, però com que sóc estudiant d'enginyeria elèctrica i he de fer una classe sobre microcontroladors ( Disseny de sistemes incrustats), vaig pensar que faria un instructable en un dels meus p
Robot de múltiples funcions de bricolatge amb Arduino: 13 passos (amb imatges)
Robot multifuncional de bricolatge amb Arduino: aquest robot es va construir principalment per entendre Arduino i combinar diversos projectes d’Arduino per formar un robot Arduino multifuncional. I, a més, qui no vol tenir un robot per a mascotes? Així que el vaig anomenar BLUE ROVIER 316. Podria haver comprat un bell
Guardian V1.0 --- Actualització de la càmera de mirall de la porta amb Arduino (funcions de gravació i descàrrega de detecció de moviment): 5 passos
Guardian V1.0 ||| Actualització de la càmera de mirilla de la porta amb Arduino (funcions de gravació i descàrrega elèctrica de detecció de moviment): he demanat una càmera de mirilla, però quan l’utilitzo em vaig adonar que no hi ha cap funció de gravació automàtica (activada per la detecció de moviment). Llavors vaig començar a investigar el seu funcionament. Per gravar un vídeo, hauríeu d’1- mantenir premut el botó d’engegada gairebé 2 segons