Como criar menu no LCD usando Arduino Uno

Como criar menu no LCD usando Arduino Uno
Para usar os microcontroladores para executar diferentes tarefas, a maneira mais eficaz é usar as placas Arduino, à medida que facilitam a interface do microcontrolador. O Arduino fornece a seus usuários uma grande variedade de pranchas de Arduino com diferentes tipos de microcontroladores. Além disso, os microcontroladores podem ser interfigurados em vários periféricos, como LCDs e sensores com a ajuda das placas Arduino. Ao interfacerem diferentes dispositivos com o Arduino, podemos fazer vários projetos. Por exemplo, como fazer um ventilador controlado por temperatura, medir a temperatura, fazer um alarme de incêndio e muito mais. Criamos um pequeno projeto de criação de um menu usando Arduino IDE e exibindo esse menu no LCD. Além disso, os menus podem ser usados ​​ao projetar um sistema automatizado doméstico ou qualquer sistema de monitoramento.

Como criar um menu usando Arduino no LCD

Criar um menu usando Arduino pode ser útil para executar várias tarefas quando necessário. Praticamente podemos ver o uso de menus em nossos telefones celulares ou qualquer dispositivo inteligente capaz de fazer algumas funções específicas. Em resumo, o menu é uma lista de opções ou ações que se pode fazer com o respectivo dispositivo, por isso usamos o seguinte hardware para criar um menu usando Arduino no LCD:

  • Arduino Uno
  • Conectando fios
  • Um potenciômetro
  • Quatro botões de pressão
  • Um LED
  • Uma tela de cristal líquido (16 × 2)
  • Uma campainha
  • Um sensor de temperatura (LM35)

Os esquemas são dados abaixo:

Conjunto de hardware para criar menu usando Arduino

Montamos os componentes de tal maneira que primeiro colocamos todos os componentes em uma placa de ensaio e, em seguida, usando os fios de conexão que cada componente está interfocado com Arduino. Publicamos uma imagem abaixo para o conjunto de hardware através do qual as conexões dos componentes podem ser entendidas facilmente.

Os fios verdes conectam os pinos de dados do LCD com Arduino, enquanto os fios cinza conectam os botões de push com Arduino. O sensor de temperatura está diretamente conectado ao Arduino sem fios de conexão, porque os fios de conexão às vezes distorcem a saída do sensor. Os componentes são ligados usando o pino de 5 volts de Arduino.

A sequência do botão é mencionada na imagem acima.

Código Arduino para criar um menu

Criamos um menu com três opções um é ligar e desligar o LED, o segundo está medindo a temperatura e a terceira está soando um alarme:

#include // biblioteca para o LCD
LiquidCrystal LCD (7,6, 5, 4, 3, 2); // pinos Arduino para o LCD
int vcc = a0; // suprimento de pino A0 de LM35
int vout = a1; // A1 pino para a saída do LM35
int gnd = a2; // pino A2 para a saída do LM35
temp de flutuação; // variável para armazenar o valor da temperatura
valor flutuante; // armazenando o valor do sensor de temperatura
const byte upbuttonpin = 12; // pino Arduino para o botão UP
const byte DownButtonpin = 11; // Pin Arduino para o botão Down
Const Byte Rightbuttonpin = 10; // pino Arduino para o botão direito
const byte esquerdabuttonpin = 8; // pino Arduino para o botão esquerdo
Const Byte Buzzepin = 9; // pino Arduino para campainha
const byte ledpin = 13; // pino Arduino para LED
String menuitems [] = // Criando a string das opções no menu
"Switch de LED",
"Temperatura",
"Switch de campainha"
;
Void Menufunctions (Menu int, Byte Right, Byte Esquerda) / * Criando as funções das opções fornecidas no menu * /

if (menu == 1) // para a primeira opção

se (direita == 1) // se o botão direito for pressionado

LCD.setCursor (0, 1); // definindo o local para os dados no LCD
LCD.print ("off"); // imprimindo a opção OFF
LCD.setCursor (10, 1); // definindo o local para os dados no LCD
LCD.impressão ("ON <<");// move the cursor on the ON option
DigitalWrite (Ledpin, alto); // Ligue o LED

se (esquerda == 1) // se o botão esquerdo for pressionado, então

LCD.setCursor (0, 1); // Definindo o local para os dados no LCD
LCD.imprimir <<");// printing the off option
LCD.setCursor (10, 1); // definindo o local para os dados no LCD
LCD.print ("on"); // imprimindo a opção On
DigitalWrite (ledpin, baixo); // Desligando o LED


if (menu == 2) // se a segunda opção no menu for selecionada

valor = analogread (VOUT); // lendo a saída do sensor
temp = valor*0.48; // convertendo valores analógicos em valores de temperatura
LCD.setCursor (0, 1); // definindo o local para os dados no LCD
LCD.print ("Temperatura:"); // exibindo os dados
LCD.setCursor (12, 1); // definindo o local para os dados no LCD
LCD.impressão (temp); // exibindo o valor da temperatura

if (menu == 3) // se a terceira opção for selecionada

se (direita == 1) // se o botão direito for pressionado

LCD.setCursor (0, 1); // definindo o local para os dados no LCD
LCD.imprimir "); // imprimindo a opção Off
LCD.setCursor (10, 1); // definindo o local para os dados no LCD
LCD.impressão ("ON <<");// move the cursor on the ON option
tom (buzzepin, 125); // Ligue a campainha

se (esquerda == 1) // se o botão esquerdo for pressionado

LCD.setCursor (0, 1); // definindo o local para os dados no LCD
LCD.imprimir <<");// move the cursor on the off option
LCD.setCursor (10, 1); // definindo o local para os dados no LCD
LCD.print ("on"); // imprimindo a opção On
Nonone (Buzzepin); // Desligue a campainha



// Criando o modelo do menu
modelo /* variável para nome da opção e tamanho do menu* /
size_t menuitemssize (t (&) [numberOfSize]) return numberOfSize; /* Nome da opção de menu e o número de opções*/
int numberofMenuitems = Menuitemssize (menuitems) - 1;
int currentmenuitem = 0; // variável para armazenar a opção atual
int anteriormenuitem = 1; // variável para armazenar a opção anterior
byte button_flag = 0;
não assinado longo anteriormillis = millis ();
// Função de configuração
configuração void ()

pinmode (ledpin, saída); // Definindo o modo PIN para LED
pinmode (VCC, saída); // Definindo o modo de pino para pino de suprimento para o sensor
pinmode (VOUT, entrada); // Definindo o modo de pino para pino de saída do sensor
pinmode (gnd, saída); // Definindo o modo de pino para o alfinete de aterramento do sensor
// Definindo os estados para os pinos de fornecimento e terra para os sensores
DigitalWrite (VCC, alto); // dando o estado de alto pino Arduino A0
DigitalWrite (GND, baixo); // dando ao arduino A2 pino baixo estado
pinmode (upbuttonpin, input_pullup); // atribuindo o botão UP INPUT_PULLUP MODO
pinmode (DownButtonpin, input_pullup);/*Atribuindo o botão UP INPUT_PULLUP MODE*/
pinmode (direitabuttonpin, input_pullup);/*atribuindo o botão UP INPUT_PULLUP MODE*/
pinmode (esquerdabuttonpin, input_pullup); /*atribuindo o botão UP INPUT_PULLUP MODO*/
LCD.começar (16,2); // inicializando as dimensões do LCD
LCD.claro (); // limpando o LCD
LCD.setCursor (0, 0); // local de configuração para que os dados sejam exibidos no LCD
LCD.print ("Welcome to"); // dados a serem exibidos no LCD
LCD.setCursor (3, 1); // local de configuração para que os dados sejam exibidos no LCD
LCD.print ("menu Arduino"); // dados a serem exibidos no LCD
atraso (6000); // tempo para o qual os dados serão exibidos no LCD
LCD.claro (); // limpando o LCD
LCD.setCursor (0, 0); // local de configuração para que os dados sejam exibidos no LCD
LCD.print ("Linuxhint.com "); // dados a serem exibidos no LCD
atraso (7000); // tempo para o qual os dados serão exibidos no LCD
LCD.claro (); // limpando o LCD

// usando condições if para definir a funcionalidade de cada botão
Void Loop ()

if (DigitalRead (RightButtonPin) == Low && button_flag == 0)/ *Se o botão direito for pressionado */

MENUFUNCIONS (CurrentMenuitem + 1, 1, 0); // Mova um passo para a direita
Button_flag = 1;
anteriormillis = millis ();

if (digitalRead (esquerdabuttonpin) == Low && button_flag == 0)/*O botão esquerdo for pressionado*/

MenuFunctions (CurrentMenuitem + 1, 0, 1);
Button_flag = 1;
anteriormillis = millis ();

if (digitalRead (upbuttonpin) == Low && button_flag == 0) /*O botão UP for pressionado* /

++CurrentMenuitem;
if (currentmenuitem> númerofmenuitems)

currentmenuitem = númerofMenuitems;

Button_flag = 1;
anteriormillis = millis ();

caso contrário, if (DigitalRead (DownButtonPin) == Low && button_flag == 0) /*Se o botão de baixo for pressionado* /

CurrentMenuitem--;
if (currentmenuitem = 400)

anteriormillis = millis ();
Button_flag = 0;

Para resumir o funcionamento do código Arduino, dado acima, podemos dizer que, a princípio, atribuímos pinos ao LCD, sensor de temperatura, campainha e botões de push. Então criamos um menu tendo algumas opções, como troca de LED, detecção de temperatura e troca de campainha.

Utilizamos as condições IF para cada opção que demos no menu e, depois disso, criamos um modelo para criar o menu e definir algumas variáveis ​​para lembrar as opções no menu.

Na função de configuração, todos os pinos do Arduino recebem seus modos e a dimensão do LCD é inicializada.

Chegando à função Loop, definimos a funcionalidade de cada botão usado no programa Arduino. Existem quatro botões usados ​​neste programa: dois são os botões de alternância e os outros dois são usados ​​como um interruptor ligado/desligado para os dispositivos conectados.

Implementação de hardware para criar um menu usando Arduino Uno

As imagens da saída do programa Arduino em hardware são publicadas na sequência do fluxo do código Arduino. Para navegar no menu, pressione os botões "Up" e "Down" para executar funções Pressione os botões "Esquerda" e "Right".

A primeira opção do menu é o interruptor LED:

Quando o LED está fora do estado:

Quando o botão direito for pressionado, o LED será ativado:

A segunda opção no menu é a temperatura:

A próxima opção é a troca de campainha:

Quando a campainha está no estado quando o botão direito é pressionado:

A campainha está desligada quando o botão esquerdo é pressionado:

Conclusão

Para fazer projetos diferentes no nível iniciante ou avançado da maneira mais viável que vem à mente é usar a plataforma Arduino. Esta plataforma oferece uma variedade de opções para os usuários com base nos requisitos do projeto. Da mesma forma, esta plataforma é uma espécie de pacote completo, pois fornece os dois tipos de software de assistência e hardware. Portanto, fazer projetos usando Arduino oferece uma chance de aprender e entender diferentes conceitos sobre circuitos. Também fizemos um projeto de criação de um menu usando uma placa Arduino UNO e exibindo -a em um LCD 16 × 2.