Índice:

Arduino UNO (criando menus e funções): 4 etapas
Arduino UNO (criando menus e funções): 4 etapas

Vídeo: Arduino UNO (criando menus e funções): 4 etapas

Vídeo: Arduino UNO (criando menus e funções): 4 etapas
Vídeo: Curso de Arduino para Iniciantes - Aula 01 - Primeiros Passos (Exemplo de um Vumeter) 2024, Novembro
Anonim
Arduino UNO (criando menus e funções)
Arduino UNO (criando menus e funções)
Arduino UNO (criando menus e funções)
Arduino UNO (criando menus e funções)

Neste instrutível estaremos explorando como criar menus, ler a temperatura de um sensor TC74A0 e exibir "valores" (neste caso, números de celular) de uma maneira infinita, mas limitada à memória interna do arduino.

Estaremos usando

-Arrays

-Visor de cristal líquido

-Teclado

Guia do usuário incluído na etapa final.

Etapa 1: Componentes

Arduino Uno

· Teclado 4x4

· Sensor de temperatura digital TC74A0

· Módulo I2c 16x2 LCD

· Tela de cristal líquido 16x2

· Fios de ligação

· Breadboard

· Computador pessoal

· IDE Arduino

· Cabo de transferência

Etapa 2: Fiação do componente

SENSOR DE TEMP. E LCD CONECTADOS NA MESMA LINHA A SDA E SCL (A4, A5)

LCD (Módulo I2c)

o SDA para A5 no Arduino

o SCL para A4 no Arduino

o VCC para 5V no Arduino

o GND para GND no Arduino

· Teclado 4 x 4

o Pino 1 - 8 no teclado conectado ao pino 9 - 2 no Arduino, respectivamente

Sensor de temperatura TC74A0

o TC74A0 pino 2 para SDA no Arduino

o TC74A0 pino 3 para GND no Arduino

o TC74A0 pino 4 para SCL no Arduino

o TC74A0 pino 5 a 5V no Arduino

Etapa 3: Código

#include // Inclui bibliotecas ao compilar

#incluir

#incluir

#define Password_Lenght 5

#define Command_Lenght 3

# define CellNumber 10

usuários internos = 0;

exibição int = 0;

endereço interno = 72; // tc74a0 ENDEREÇO

int I = 0;

int USER;

int X = 0;

int XY = 0;

int temp;

int tempPre = 0;

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

Dados de char [Password_Lenght];

char Master [Password_Lenght] = "5466"; //SENHA

char ExitData [Command_Lenght]; //

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

char MenuItem;

char CELLArrayA [10];

char CELLArrayB [10];

char CELLArrayC [10];

const byte ROWS = 4; // quatro linhas

const byte COLS = 4; // quatro colunas

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] = // INICIANDO TECLADO

{

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

};

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

void setup ()

{

Serial.begin (9600); // isso cria o Monitor Serial

Wire.begin (); // isso cria um objeto Wire

lcd.begin (16, 2);

lcd.backlight ();

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Aguarde 3"); // TELA DE CARREGAMENTO

atraso (1000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Aguarde 2");

atraso (1000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Aguarde 1");

atraso (300);

lcd.clear ();

String myString = "ARDUINO INSTRUCTABLE";

lcd.setCursor (2, 2);

lcd.print (myString);

atraso (2500);

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

{

lcd.scrollDisplayLeft ();

atraso (300);

}

lcd.clear ();

lcd.print ("Digite a senha");

}

void loop ()

{

switch (Display) // ONDE ESTAMOS NO MENU PRINCIPAL

{// O USUÁRIO PRESSIONOU A, B, C, D

caso 0:

{

Senha();

}

pausa;

caso 1:

{

lcd.clear ();

lcd.setCursor (0, 1);

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

lcd.setCursor (0, 0);

lcd.print ("Menu principal");

Exibir = 2;

atraso (100);

pausa;

}

caso 2:

{

char customKey = customKeypad.getKey ();

switch (customKey)

{

caso 'A':

{

Serial.println ("A foi pressionado");

StoreUser ();

pausa;

}

caso 'B':

{

Serial.println ("B foi pressionado");

if (usuários == 0) {

lcd.clear ();

lcd.print ("NENHUM USUÁRIO SALVO");

atraso (3000);

lcd.clear ();

Display = 1;

pausa;

}

DisplayUsers (); pausa;

}

caso 'C':

{

Serial.println ("C foi pressionado"); // USADO DURANTE O TESTE

int ext = 0;

while (! ext) {

char ch;

temp = TempMenu ();

if (temp! = tempPre) {

lcd.clear ();

lcd.print ("Temparature");

lcd.setCursor (0, 1);

lcd.print (temp);

lcd.print ("C");

tempPre = temp;

atraso (500);

}

ch = customKeypad.getKey ();

if (ch == '*') // SAIR DO MENU DE TEMPERATURA (se * PRESSIONADO)

{

ext = 1;

lcd.clear ();

Display = 1;

}

}

pausa;

TempMenu ();

pausa;

}

caso 'D':

{

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("NUA PRAC");

lcd.setCursor (0, 1);

lcd.print ("JB SCHOEMAN");

atraso (3000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("MAIO 2019");

lcd.setCursor (0, 1);

lcd.print ("CC OOSTHUIZEN");

atraso (3000);

lcd.clear ();

Display = 1;

}

}

}

}

}

// FUNÇÕES PERSONALIZADAS PARA VALORES OU PROCEDIMENTOS DE CHAMADA

void Password ()

{

char customKey = customKeypad.getKey ();

if (customKey) // garante que uma tecla seja realmente pressionada, igual a (customKey! = NO_KEY)

{

Dados [data_count] = customKey; // armazena char na matriz de dados

lcd.setCursor (data_count, 1); // move o cursor para mostrar cada novo caractere

lcd.print ("*"); // imprime o caractere no referido cursor

data_count ++; // incrementa a matriz de dados em 1 para armazenar novos caracteres, também mantém o controle do número de caracteres inseridos

}

if (data_count == Password_Lenght-1) // se o índice da matriz é igual ao número de caracteres esperados, compare os dados com o mestre

{

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("A senha é");

if (! strcmp (Dados, Mestre)) // igual a (strcmp (Dados, Mestre) == 0)

{

lcd.print ("Bom");

lcd.clear ();

Exibição = 1;

}

outro

lcd.print ("Ruim");

delay (1000); // adicionado 1 segundo de atraso para garantir que a senha seja completamente exibida na tela antes de ser apagada.

lcd.clear ();

apagar os dados();

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Digite a senha");

}

}

int TempMenu ()

{

Wire.beginTransmission (endereço);

Wire.write (0);

Wire.endTransmission ();

Wire.requestFrom (endereço, 1);

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

int c = Wire.read ();

return c;

}

void clearData ()

{

while (data_count! = 0)

{// Isso pode ser usado para qualquer tamanho de array, Dados [data_count--] = 0; // limpar array para novos dados

}

}

void StoreUser ()

{

int ext = 0;

usuário int;

char ch;

while (! ext) {

lcd.clear ();

lcd.print ("Insira o usuário");

usuário = usuários + 1;

lcd.print (usuário);

int x = 0;

enquanto (! x) {

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

ch = customKeypad.waitForKey ();

lcd.setCursor (i, 1);

lcd.print (ch);

userNum [usuário - 1] = ch;

}

atraso (500);

lcd.clear ();

lcd.print ("Continuar");

lcd.setCursor (0, 1);

lcd.print ("* sim # não");

ch = customKeypad.waitForKey ();

if (ch == '*') {

x = 1;

}

if (ch == '#') {

x = 1;

ext = 1;

lcd.clear ();

Exibição = 1;

}

}

usuários ++;

}

}

void DisplayUsers ()

{

lcd.clear ();

para (int i = 0; i <usuários; i ++) {

lcd.print ("Usuário salvo");

lcd.print (i + 1);

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

lcd.setCursor (u, 1);

lcd.print (userNum [u]);

}

atraso (2000);

lcd.clear ();

Display = 1;

}

}

Etapa 4: GUIA DO USUÁRIO

1. Ao ligar o projeto, uma tela de carregamento ou de boas-vindas aparecerá.

2. Uma tela “Enter Password” irá aparecer, esta tela permite que você insira 4 caracteres, letras ou números, a senha correta é: 5466, isso irá permitir o acesso ao menu principal.

3. Ao inserir a senha correta, o menu principal aparecerá com 4 opções possíveis para navegar pelas diferentes funções disponíveis.

· A - Insira os números de telefone celular do usuário.

o Insira 10 dígitos para salvar um usuário no sistema

o Depois de inserir os 10 dígitos, pressione “*“para adicionar mais usuários ou pressione “#” para voltar ao menu principal

· B - Exibir usuários salvos

o Os usuários irão rolar além da tela, eles são exibidos por 3 segundos cada, assim que todos os usuários forem exibidos a página será fechada e retornará ao menu principal.

o Se nenhum usuário foi adicionado na opção A do menu, será exibido “NENHUM USUÁRIO SALVO”.

· C - Exibe a temperatura ao vivo

o Pressione “*“para voltar ao menu principal

· D - Exibir texto curto

o Exibe o nome do criador e o assunto para o qual foi compilado com uma data.

Recomendado: