Arduino Tutorial - LDC - Menu

Introduction: Arduino Tutorial - LDC - Menu

About: This is a channel for Homemakers and DIY where you will find useful tutorials about Arduino and IOT systems, some Gardening techniques and Woodworking projects.

Este é um tutorial onde iremos mostrar-vos uma montagem em que o principal propósito é explicar o funcionamento do seu código, tendo este o objectivo de conceber uma estrutura de funcionamento para um conjunto de páginas vulgarmente chamado de menu. A sua disposição organizada a facilitar a visualização e navegação entre as suas páginas como também ajuda na elaboração dos códigos de Arduino.

Para visualizar as páginas deste menu será utilizado um LCD1602 e para podermos navegar entre as páginas do nosso menu são utilizados alguns botões de pressão ou "Push Button", podendo saltar entre páginas visualizando a alterando a sua informação.

A estrutura e interligação entre as páginas do menu deve ser elaborada previamente ajustando-as às suas funcionalidades, este procedimento deverá ser utilizado em qualquer tipo montagem, mesmo que esta seja pequena, pois facilita a organização do código a quando da sua elaboração. (Ver imagem acima).

Caso tenham duvidas ou queiram saber mais sobre as características e configurações de LCD1602, vejam os seguintes tutoriais e a sua datasheet (Ver ficheiros abaixo):

Arduino Tutorial - Clock - LCD

https://www.instructables.com/id/Arduino-Tutorial-Clock-LCD/

ou

Arduino Tutorial - LCD - Temperature Sensor

https://www.instructables.com/id/Arduino-Tutorial-LCD-Temperature-Sensor/

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Montagem

Como sempre em montagem complexas utilizamos na montagem uma pequena "Breadboard" onde colocamos as alimentações positivas e negativas distribuindo-as mais facilmente para os todos os componentes da montagem.

Depois começamos por colocar o LCD na montagem, pois este é o componente que necessita de mais ligações e por fim colocamos os botões e as suas respectivas resistências eléctricas ligando-os aos pinos de sinal digital do Arduino (Ver imagem acima).

Material necessário:

  • 1x Arduino UNO;
  • 1x Cabo USB;
  • 1x Breadboard;
  • 1x LCD1602;
  • 1x Resistência 220Ω;
  • 1x Potenciómetro 10KΩ;
  • 3x Botões (Push Button);
  • 3x Resistências 1KΩ.

Instalação do LCD1602:

Cada pino do LCD tem uma função especifica e como podem observar na imagem da montagem completa não são utilizamos todos os seus pinos, assim para explicar mais facilmente o funcionamento do LCD, agrupamos os seus pinos em 3 grupos, o grupo Pinos de Alimentação, o de Pinos de Comunicação e de Pinos de Informação (Ver legenda acima).

Pinos de Alimentação:

  • GND;
  • VCC;
  • V0;
  • LED - ou A (Anodo);
  • LED + ou K (Catodo).

A alimentação do LCD é realizada através dos pinos GND e VCC, devendo ter o pino VCC uma tensão de 5V que será fornecida pelo Arduino UNO, pois este os seus pinos de alimentação tem tensões estáveis e protegidas não permitindo que existam sobrecargas ou curto-circuitos.

O Pino V0 tem como função ajustar o contraste dos caracteres do LCD, para podermos controlar esse ajuste ligamos neste pino uma resistência variável de 10KΩ com uma montagem de um divisor de tensão, alterando assim a tensão a tensão no pino V0 entre os 0 e 5V (Ver imagem acima).

Este tipo de LCD tem um LED como luz de fundo sendo este alimentado através dos pinos A e K fornecida também pelo Arduino, no entanto, como explicado em tutoriais anteriores devemos ligar o LED em série com uma resistência de 220Ω, para que o brilho não seja demasiado intenso e reduzir a probabilidade de este se danificar.

Pinos de Comunicação:

  • RS (Register Select);
  • R/W (Read / Write);
  • E (Enable).

Nos pinos de comunicação apenas teremos de ter mais atenção ao pino R/W, pois este deve estar ligado a GND para que seja permitido escrever no LCD, aparecendo assim os caracteres, caso contrario podemos estar a ler o dados guardados na sua memoria interna ficando o LCD em branco.

Pinos de Informação:

  • D0;
  • D1;
  • D2;
  • D3;
  • D4;
  • D5;
  • D6;
  • D7.

Nesta montagem são utilizados todos os pinos de alimentação e comunicação, no entanto, apenas utilizamos metade dos pinos de informação, isto é possível através da utilização no código da biblioteca LiquidCrystal.h, esta permite ler o "Byte" ou 8bits de informação enviado pelo Arduino, através da divisão deste em 2 partes, ou seja, são lidos 4bits de cada vez.

Para isso esta biblioteca utiliza os pinos de comunicação, de modo a que o LCD consiga saber qual é a forma que irá receber a informação, ou seja, se com 8bits através dos pinos D0 a D7 ou com 4bits através dos pinos D4 a D7).

Instalação dos botões:

Terminada a instalação do LCD, colocamos na "Breadboard" os 3 botões de pressão e as suas respectivas resistências de 1KΩ e ligamos cada um dos botões a um dos pinos de sinal digital do Arduino, sendo assim estes os nossos controlos de navegação entre as várias páginas do menu. Para tornar mais intuitiva a utilização dos botões, estes devem ser dispostos e identificados consoante a sua função, como por exemplo, botão MENOS ou "BACK", botão MENU ou "SELECT" e ainda botão MAIS ou "FORWARD".

Para saber mais sobre os pinos de sinal digital do Arduino definidos como entradas e onde são explicamos esta características mais detalhadamente, verifiquem um tutorial anterior:

Arduino Tutorial - Digital Input - Button - Monitor Serial

https://www.instructables.com/id/Arduino-Tutorial-Digital-Input-Button-Monitor-Seri/

Step 2: Código

Estando a montagem completa ligamos o cabo USB e carregamos o código na placa do Arduino, mas primeiro aqui vai a sua explicação, como sempre começamos por importar a biblioteca LiquidCrystal.h através do gestor de bibliotecas do Arduino IDE. Esta biblioteca facilita muito a programação do código para o LCD, sendo apenas necessário configurar 2 funções para que o LCD fique a funcionar em pleno, que caso contrario seria muitas mais.

//Definir os pinos de comunicação e informação do LCD:
	LiquidCrystal lcd ("RS", "E", "D7", "D6", "D5", "D4");

e

void setup(){
	//Inicia a comunicação com LCD 16x2:
	lcd.begin(2, 16);
}

Depois para escrever no LCD será necessário primeiro definir o local onde se começará a escrever, ou seja, qual a coluna e a linha, só depois imprimimos o texto que queremos, tendo em atenção que este LCD apenas tem 16 colunas e 2 linhas, no caso do texto passar esses limites do LCD não serão visíveis todos caracteres.

void loop(){
	//Define a coluna (em 16) e a linha (em 2) do LCD onde escrever:
	lcd.setCursor(0, 0);
	//Escreve no LCD:
	lcd.print("Texto");
}

Agora para configurar os pinos de sinal digital do Arduino como entradas utilizamos da função PinMode colocando a palavra "INPUT", bastando colocar esta função para cada um dos nossos botões do menu.

//Definição do tipo de pino (Entrada):
	pinMode(Botao_Menos, INPUT);
	pinMode(Botao_Menu, INPUT);
	pinMode(Botao_Mais, INPUT);

Depois de definir quais os pino do Arduino como entradas, utilizamos a função DigitalRead tendo esta como objectivo ler o estado dos pinos de entrada, verificando assim se estes estão em nível baixo ou nível alto "LOW" ou "HIGH".

//Se a leitura do pino for LOW ou nível baixo:
if (digitalRead(Pino_Entrada) == LOW){

}

ou

//Se a leitura do pino for HIGH ou nível alto:
if (digitalRead(Pino_Entrada) == HIGH){

}

Eis então o código completo para da nossa montagem, onde são utilizados todos os conceitos descritos anteriormente, criando um menu onde é possível navegar pelas suas páginas e visualizar suas diferentes informações num LCD e tudo isto através dos 3 botões da montagem.

#include <LiquidCrystal.h>	//Importar a LCD library.

//Definir os pinos de comunicação e informação do LCD.
LiquidCrystal lcd(8, 9, 10, 11, 12, 13);

int Botao_mais = 2;	//Variável para selecção do pino digital (Botão 1).
int Botao_menu = 3;	//Variável para selecção do pino digital (Botão 2).
int Botao_menos = 4;	//Variável para selecção do pino digital (Botão 3).

int Num_Menu = 0;       //Variável para selecção da página.
int Num_titulo = 1;     //Variável para selecção do titulo da página.

//Variável para os títulos das páginas.
char* Titulo_Menu[] = {"Menu - 0",
                       
                       "Pagina - 1",                   
                       "Menu - 2",
                       "Menu - 3",
                       "Pagina - 4",
                       
                       "Pagina - 2.1", "Pagina - 2.2",
                       "Pagina - 3.1", "Pagina - 3.2", "Pagina - 3.3"};

//Correr a função SETUP apenas uma vez após ser pressionado Reset:
void setup(){
	//Iniciar a Comunicação com LCD:
	lcd.begin(2, 16);
  
	//Definição do tipo de pino (Saída ou entrada):
	pinMode(Botao_mais, INPUT);
	//Definição do tipo de pino (Saída ou entrada):
  	pinMode(Botao_menu, INPUT);
  	//Definição do tipo de pino (Saída ou entrada):
  	pinMode(Botao_menos, INPUT);
}

//Correr a função LOOP repetidamente:
void loop(){
	//Correr a função:
	Pagina_Menu_0();
  	//Correr a função:
	Pagina_1();
	//Correr a função:
	Pagina_Menu_2();
		//Correr a função:
		Pagina_2_1();
		//Correr a função:
		Pagina_2_2();
	//Correr a função:
 	Pagina_Menu_3();
		//Correr a função:
		Pagina_3_1();
		//Correr a função:
		Pagina_3_2();
		//Correr a função:
		Pagina_3_3();
	//Correr a função:
	Pagina_4();
	
	//Atraso para o próximo passo:
	delay(800);
}

//Página do Menu - 0:
void Pagina_Menu_0(){
	//Condição para abrir página:
  	if (Num_Menu == 0){
    		//Apaga a informação do LCD.
    		lcd.clear();
    		//Condição para escrever no LCD os nomes das páginas:
    		if (Num_titulo > 0 & Num_titulo < 3){
      			//Define a coluna (em 16) e a linha (em 2) do LCD onde escrever:
      			lcd.setCursor(1, 0);
      			//Escreve no LCD:
      			lcd.print(Titulo_Menu[1]);
      			
			//Define a coluna (em 16) e a linha (em 2) do LCD onde escrever:
      			lcd.setCursor(1, 1);
      			//Escreve no LCD:
      			lcd.print(Titulo_Menu[2]);
    		}
		//Condição para escrever no LCD os nomes das páginas:
    		else if (Num_titulo > 2 & Num_titulo < 5){
      			//Define a coluna (em 16) e a linha (em 2) do LCD onde escrever:
      			lcd.setCursor(1, 0);
      			//Escreve no LCD:
      			lcd.print(Titulo_Menu[3]);
      
			//Define a coluna (em 16) e a linha (em 2) do LCD onde escrever:
      			lcd.setCursor(1, 1);
      			//Escreve no LCD:
      			lcd.print(Titulo_Menu[4]);
    		}
    		
		//Condição para selecionar página 1 e 3:
    		if (Num_titulo == 1 || Num_titulo == 3){
      			//Define a coluna (em 16) e a linha (em 2) do LCD onde escrever:
      			lcd.setCursor(0, 0);
      			//Escreve no LCD:
      			lcd.print(">");
    		}
		//Condição para selecionar página 2 e 4:
    		else if (Num_titulo == 2 || Num_titulo == 4){
      			//Define a coluna (em 16) e a linha (em 2) do LCD onde escrever:
      			lcd.setCursor(0, 1);
      			//Escreve no LCD:
      			lcd.print(">");
    		}
  
		//Condição para acção dos botões na página:
    		if (digitalRead(Botao_mais) == HIGH){
      			//Condição para selecionar página:
      			if (Num_titulo >= 1){
        			//Altera o valor de selecção do título do menu.
        			Num_titulo = Num_titulo + 1;
     			}
      			//Condição para selecionar página:
      			if (Num_titulo > 4){
        			//Altera o valor de selecção do título do menu.
        			Num_titulo = 4;
      			} 
    		}  
    	
		//Condição para acção dos botões na página:
    		if (digitalRead(Botao_menos) == HIGH){
      			//Condição para selecionar página:
      			if (Num_titulo < 1){
        			//Altera o valor de selecção do título do menu.
        			Num_titulo = 1;
      			}
      			//Condição para selecionar página:
      			if (Num_titulo <= 4){
        			//Altera o valor de selecção do título do menu.
        			Num_titulo = Num_titulo - 1;
      			}
    		}
    		//Condição para acção dos botões na página:
    		if (digitalRead(Botao_menu) == HIGH){
      			//Condição para selecionar página:
      			if (Num_titulo == 1){
        			//Altera o valor de selecção do menu.
       				Num_Menu = 1;
      			}
      			//Condição para selecionar página:
      			else if (Num_titulo == 2){
        			//Altera o valor de selecção do título do menu.
        			Num_titulo = 5;
        			//Altera o valor de selecção do menu.
        			Num_Menu = 2;
      			}
      			//Condição para selecionar página:
      			else if (Num_titulo == 3){
        			//Altera o valor de selecção do título do menu.
        			Num_titulo = 7;
        			//Altera o valor de selecção do menu.
        			Num_Menu = 3;
      			}
      			//Condição para selecionar página:
      			else if (Num_titulo == 4) {
        			//Altera o valor de selecção do menu.
        			Num_Menu = 4;
      			}
    		}
  	}
}

//Pagina do Menu - 1:
void Pagina_1(){
	//Condição para abrir página:
  	if (Num_Menu == 1){
    		//Apaga a informação do LCD.
    		lcd.clear();
      		//Define a coluna (em 16) e a linha (em 2) do LCD onde escrever:
    		lcd.setCursor(0, 0);
    		//Escreve no LCD:
    		lcd.print(Titulo_Menu[Num_titulo]);
    		lcd.print(":");
    		//Define a coluna (em 16) e a linha (em 2) do LCD onde escrever:
    		lcd.setCursor(0, 1);
    		//Escreve no LCD:
    		lcd.print("Info:TEXTO...");
    
    		//Condição para acção dos botões na página:
    		if (digitalRead(Botao_menos) == HIGH){
      			//Altera o valor de selecção do menu.
      			Num_Menu = 0;
    		}
		//Condição para acção dos botões na página:
    		if (digitalRead(Botao_menu) == HIGH){
			//Não realiza nenhuma acção.
		}
    
    		//Condição para acção dos botões na página:
    		if (digitalRead(Botao_mais) == HIGH){
    			//Não realiza nenhuma acção.
    		}
  	}
}

//Página do Menu - 2:
void Pagina_Menu_2(){
  	//Condição para abrir página:
  	if (Num_Menu == 2){
    		//Apaga a informação do LCD.
    		lcd.clear();     
    		//Condição para escrever no LCD os nomes das páginas:
    		if (Num_titulo == 5 || Num_titulo == 6){
      			//Define a coluna (em 16) e a linha (em 2) do LCD onde escrever:
      			lcd.setCursor(1, 0);
      			//Escreve no LCD:
      			lcd.print(Titulo_Menu[5]);
      			//Define a coluna (em 16) e a linha (em 2) do LCD onde escrever:
      			lcd.setCursor(1, 1);
      			//Escreve no LCD:
      			lcd.print(Titulo_Menu[6]);
    		}
		//Condição para selecionar página 2.1:
    		if (Num_titulo == 5){
      			//Define a coluna (em 16) e a linha (em 2) do LCD onde escrever:
      			lcd.setCursor(0, 0);
      			//Escreve no LCD:
      			lcd.print(">");
    		}
    		//Condição para selecionar página 2.2:
    		else if (Num_titulo == 6){
      			//Define a coluna (em 16) e a linha (em 2) do LCD onde escrever:
      			lcd.setCursor(0, 1);
      			//Escreve no LCD:
      			lcd.print(">");
    		}
    		//Condição para acção dos botões na página:
    		if (digitalRead(Botao_mais) == HIGH){      
      			//Condição para selecionar página:
      			if (Num_titulo == 5){
        			//Altera o valor de selecção do título do menu.
        			Num_titulo = Num_titulo + 1;
      			}
      			//Condição para selecionar página:
      			else if (Num_titulo == 6){
        			//Altera o valor de selecção do título do menu.
        			Num_titulo = Num_titulo - 1;
      			} 
    		}
    		//Condição para acção dos botões na página:
    		if (digitalRead(Botao_menos) == HIGH){
      			//Altera o valor de selecção do título do menu.
      			Num_titulo = 2;
      			//Altera o valor de selecção do menu.
      			Num_Menu = 0;
    		}
    		
		//Atraso para o próximo passo:
   		delay(800);
    
		//Condição para acção dos botões na página:
    		if (digitalRead(Botao_menu) == HIGH){
      			//Condição para selecionar página:
      			if (Num_titulo == 5){
        			//Altera o valor de selecção do menu.
        			Num_Menu = 5;
      			}
      			//Condição para selecionar página:
      			else if (Num_titulo == 6){
        			//Altera o valor de selecção do menu.
        			Num_Menu = 6;
      			}
    		}
  	}
}

//Página do Menu - 2.1:
void Pagina_2_1(){
	//Condição para abrir página:
  	if (Num_Menu == 5){
    		//Apaga a informação do LCD.
    		lcd.clear();
    		//Define a coluna (em 16) e a linha (em 2) do LCD onde escrever:
    		lcd.setCursor(0, 0);
    		//Escreve no LCD:
    		lcd.print(Titulo_Menu[5]);
    		lcd.print(":");
    		//Define a coluna (em 16) e a linha (em 2) do LCD onde escrever:
    		lcd.setCursor(1, 1);
    		//Escreve no LCD:
    		lcd.print("Info:TEXTO...");
    		
		//Condição para acção dos botões na página:
		if (digitalRead(Botao_menos) == HIGH) {
      			//Altera o valor de selecção do menu.
      			Num_Menu = 2;
    		}
    		//Condição para acção dos botões na página:
    		if (digitalRead(Botao_menu) == HIGH) {
			//Não realiza nenhuma acção.
		}
    		//Condição para acção dos botões na página:
    		if (digitalRead(Botao_mais) == HIGH) {
    			//Não realiza nenhuma acção.
		}
  	}
}

//Página do Menu - 2.2:
void Pagina_2_2() {
	//Condição para abrir página:
	if (Num_Menu == 6){
    		//Apaga a informação do LCD.
    		lcd.clear();
    		//Define a coluna (em 16) e a linha (em 2) do LCD onde escrever:
    		lcd.setCursor(0, 0);
    		//Escreve no LCD:
    		lcd.print(Titulo_Menu[6]);
    		lcd.print(":");
    		//Define a coluna (em 16) e a linha (em 2) do LCD onde escrever:
    		lcd.setCursor(1, 1);
    		//Escreve no LCD:
    		lcd.print("Info:TEXTO...");
    
    		//Condição para acção dos botões na página:
    		if (digitalRead(Botao_menos) == HIGH) {
      			//Altera o valor de selecção do menu
      			Num_Menu = 2;
    		}
    
		//Condição para acção dos botões na página:
    		if (digitalRead(Botao_menu) == HIGH) {
			//Não realiza nenhuma acção.
		}
    
    		//Condição para acção dos botões na página:
    		if (digitalRead(Botao_mais) == HIGH) {
    			//Não realiza nenhuma acção.
    		}
  	}
}

//Página do Menu - 3:
void Pagina_Menu_3(){
	//Condição para abrir página:
  	if (Num_Menu == 3){
    		//Apaga a informação do LCD.
    		lcd.clear();
    		//Condição para escrever no LCD os nomes das páginas:
    		if (Num_titulo > 6 & Num_titulo < 9){
      			//Define a coluna (em 16) e a linha (em 2) do LCD onde escrever:
      			lcd.setCursor(1, 0);
      			//Escreve no LCD:
      			lcd.print(Titulo_Menu[7]);
      			//Define a coluna (em 16) e a linha (em 2) do LCD onde escrever:
      			lcd.setCursor(1, 1);
      			//Escreve no LCD:
      			lcd.print(Titulo_Menu[8]);
    		}
    		//Condição para escrever no LCD os nomes das páginas:
    		else if (Num_titulo == 9){
      			//Define a coluna (em 16) e a linha (em 2) do LCD onde escrever:
      			lcd.setCursor(1, 0);
      			//Escreve no LCD:
      			lcd.print(Titulo_Menu[9]);
    		}
		//Condição para selecionar pagina 3.1:
    		if (Num_titulo == 7 || Num_titulo == 9){
      			//Define a coluna (em 16) e a linha (em 2) do LCD onde escrever:
      			lcd.setCursor(0, 0);
      			//Escreve no LCD:
      			lcd.print(">");
    		}
    		//Condição para selecionar pagina 3.2:
    		else if (Num_titulo == 8){
      			//Define a coluna (em 16) e a linha (em 2) do LCD onde escrever:
      			lcd.setCursor(0, 1);
      			//Escreve no LCD:
      			lcd.print(">");
    		}
    		//Condição para acção dos botões na página:
    		if (digitalRead(Botao_mais) == HIGH){
      			//Condição para selecionar página:
      			if (Num_titulo >= 7){
        			//Altera o valor de selecção do título do menu.
        			Num_titulo = Num_titulo + 1;
     			}
      			//Condição para selecionar página:
      			if (Num_titulo > 9){
        			//Altera o valor de selecção do título do menu.
        			Num_titulo = 7;
      			} 
    		}  
    		//Condição para acção dos botões na página:
    		if (digitalRead(Botao_menos) == HIGH){
      			//Altera o valor de selecção do titulo do menu.
      			Num_titulo = 3;
      			//Altera o valor de selecção do menu.
      			Num_Menu = 0;
    		}
		
		//Atraso para o próximo passo:
		delay(800);
    
    		//Condição para acção dos botões na página:
    		if (digitalRead(Botao_menu) == HIGH){
      			//Condição para selecionar página:
      			if (Num_titulo == 7){
        			//Altera o valor de selecção do menu.
        			Num_Menu = 7;
      			}
      			//Condição para selecionar página:
      			else if (Num_titulo == 8){
        			//Altera o valor de selecção do menu.
        			Num_Menu = 8;
      			}
      			//Condição para selecionar pagina:
      			else if (Num_titulo == 9){
        			//Altera o valor de selecção do menu.
        			Num_Menu = 9;
      			}
    		}
  	}
}

//Página do Menu - 3.1:
void Pagina_3_1() {
	//Condição para abrir página:
	if (Num_Menu == 7){
    		//Apaga a informação do LCD.
    		lcd.clear();
    		//Define a coluna (em 16) e a linha (em 2) do LCD onde escrever:
    		lcd.setCursor(0, 0);
    		//Escreve no LCD:
    		lcd.print(Titulo_Menu[7]);
    		lcd.print(":");
    		//Define a coluna (em 16) e a linha (em 2) do LCD onde escrever:
    		lcd.setCursor(1, 1);
    		//Escreve no LCD:
    		lcd.print("Info:TEXTO...");
    
    		//Condição para acção dos botões na página:
    		if (digitalRead(Botao_menos) == HIGH) {
      			//Altera o valor de selecção do menu.
      			Num_Menu = 3;
    		}
    
    		//Condição para acção dos botões na página:
    		if (digitalRead(Botao_menu) == HIGH) {
			//Não realiza nenhuma acção.
		}
   		//Condição para acção dos botões na página:
   		if (digitalRead(Botao_mais) == HIGH) {
    			//Não realiza nenhuma acção.
    		}
  	}
}
//Página do Menu - 3.2:
void Pagina_3_2() {
	//Condição para abrir página:
	if (Num_Menu == 8){
    		//Apaga a informação do LCD.
    		lcd.clear();
    		//Define a coluna (em 16) e a linha (em 2) do LCD onde escrever:
    		lcd.setCursor(0, 0);
    		//Escreve no LCD:
    		lcd.print(Titulo_Menu[8]);
    		lcd.print(":");
    		//Define a coluna (em 16) e a linha (em 2) do LCD onde escrever:
    		lcd.setCursor(1, 1);
    		//Escreve no LCD:
    		lcd.print("Info:TEXTO...");
    
    		//Condição para acção dos botões na página:
    		if (digitalRead(Botao_menos) == HIGH) {
      		//Altera o valor de selecção do menu.
      			Num_Menu = 3;
    		}
    
    		//Condição para acção dos botões na página:
    		if (digitalRead(Botao_menu) == HIGH) {
			//Não realiza nenhuma acção.
		}
    		//Condição para acção dos botões na página:
    		if (digitalRead(Botao_mais) == HIGH) {
    			//Não realiza nenhuma acção.
    		}
  	}
}

//Página do menu - 3.3:
void Pagina_3_3() {
	//Condição para abrir página:
	if (Num_Menu == 9){
    		//Apaga a informação do LCD.
    		lcd.clear();
    		//Define a coluna (em 16) e a linha (em 2) do LCD onde escrever:
    		lcd.setCursor(0, 0);
    		//Escreve no LCD:
    		lcd.print(Titulo_Menu[9]);
    		lcd.print(":");
    		//Define a coluna (em 16) e a linha (em 2) do LCD onde escrever:
    		lcd.setCursor(1, 1);
    		//Escreve no LCD:
    		lcd.print("Info:TEXTO...");
    
    		//Condição para acção dos botões na página:
    		if (digitalRead(Botao_menos) == HIGH) {
      			//Altera o valor de selecção do menu.
      			Num_Menu = 3;
    		}
    		//Condição para acção dos botões na página:
    		if (digitalRead(Botao_menu) == HIGH) {
			//Não realiza nenhuma acção.
		}
    		//Condição para acção dos botões na página:
    		if (digitalRead(Botao_mais) == HIGH) {
    			//Não realiza nenhuma acção.
  		}
  	}
}

//Página do Menu - 4:
void Pagina_4() {
	//Condição para abrir página:
  	if (Num_Menu == 4){
    		//Apaga a informação do LCD.
    		lcd.clear();
    		//Define a coluna (em 16) e a linha (em 2) do LCD onde escrever:
    		lcd.setCursor(0, 0);
    		//Escreve no LCD:
    		lcd.print(Titulo_Menu[Num_titulo]);
    		lcd.print(":");
    		//Define a coluna (em 16) e a linha (em 2) do LCD onde escrever:
    		lcd.setCursor(1, 1);
    		//Escreve no LCD:
    		lcd.print("Info:TEXTO...");

		//Condição para acção dos botões na página:
		if (digitalRead(Botao_menos) == HIGH){
      			//Altera o valor de selecção do menu.
      			Num_Menu = 0;
    		}
    		//Condição para acção dos botões na página:
    		if (digitalRead(Botao_menu) == HIGH){
			//Não realiza nenhuma acção.
		}
    		//Condição para acção dos botões na página:
		if (digitalRead(Botao_mais) == HIGH){
			//Não realiza nenhuma acção.
		}
  	}
}

Caso queiram saber mais ou tenham dúvidas sobre estas ou outras referências no código, vejam a sua explicação detalhada no site oficial do Arduino, através da ligação https://www.arduino.cc/en/Reference/HomePage.

Procurem os nossos tutoriais acerca do Arduino, onde são explicadas diversas montagens e o funcionamento dos seus componentes, já agora visitem também o nosso canal no Youtube, Instagram, Facebook ou Twitter.

Abraço e bons projectos.

Arduino Contest 2017

Participated in the
Arduino Contest 2017

Be the First to Share

    Recommendations

    • Finish It Already Speed Challenge

      Finish It Already Speed Challenge
    • Arduino Contest 2020

      Arduino Contest 2020
    • First Time Author Contest

      First Time Author Contest

    Discussions