Introduction: Arduino Tutorial - LDC - Menu

Picture of Arduino Tutorial - LDC - Menu

Neste tutorial iremos mostrar-vos uma montagem e principalmente um código com uma estrutura para um menu, tornando assim a sua disposição mais organizada e um código mais simples e disciplinado para os vossos projectos, de forma a ser mais fácil programar o Arduino.

Para ser possível visualizar as páginas do menu utilizamos uma LCD 16x2, como também alguns botões para navegar nesse menu. A estrutura do menu deve ser elaborada previamente consoante as necessidades (Ver esquema acima), este exemplo poderá ser utilizado em qualquer montagem, sendo apenas necessário pequenos ajustes, como a ordem e os nomes das páginas ou as acções que cada botões tomará quando os carregarmos.

Caso tenham duvidas ou queiram saber mais sobre o LCD 16x2 as suas características e configurações, vejam também o tutorial "Arduino Tutorial - LCD - Temperature Sensor" ou "Arduino Tutorial - Clock - LCD" onde é utilizado e explicado o funcionamento deste tipo de LCD, ou então espreitem a datasheet (Ver ficheiros abaixo).

Step 1: Montagem

Em primeiro lugar, e como sempre, utilizamos na montagem uma Breadboard onde colocamos as alimentações positivas e negativas de forma a distribuir-las mais facilmente para os componentes. Depois fazemos as ligações do LCD 16x2, pois é o componente como mais ligações, por fim colocamos os botões e as suas ligações para podermos navegar pelas várias páginas do menu.

Material necessário:

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

Instalação do LCD 16x2:

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

Pinos de Alimentação:

  • Gnd; Vcc; V0;
  • LED - ou A (Anodo);
  • LED + ou K (Catodo).

As alimentações do LCD (Gnd e Vcc) são feitas através dos pinos Gnd e +5V do Arduino UNO, pois são estáveis e protegidas não permitindo que existam sobrecargas ou curto-circuitos.

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

Os pinos de alimentação do LED de luz de fundo do LCD (A e K) são também ligados aos pinos de Gnd e +5V do Arduino UNO, no entanto, ligamos em série uma resistência de 220Ω para que o brilho não seja demasiado intenso, não permitindo que os LED internos do LCD se danifiquem.

Pinos de Comunicação:

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

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

Pinos de Informação:

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

Nesta montagem utilizamos todos os pinos de alimentação e comunicação, no entanto, utilizamos apenas 4 dos 8 possíveis pinos de informação, pois podemos realizar esta montagem com metade dos pinos de dados. Isto é possível através da Biblioteca LiquidCrystal.h que utilizamos no código, permitindo ler o Byte (Byte = 8 bits) de informação enviado pelo Arduino dividido em 2 partes, ou seja, 4 bits de cada vez.

Para isso esta Biblioteca controla os pinos de comunicação, de forma a que o LCD saiba qual o tipo e quais os canais de comunicação que receberão a informação (Pinos D4 a D7).

Com o LCD montado correctamente, colocamos por fim os 3 botões e as suas respectivas resistência de 1KΩ na Breadboard e ligamos-os aos pinos de entradas digitais do Arduino. Sendo este os nosso controlos para navegação nas respectivas páginas de menu, para isso colocamos estes botões na montagem com as funções de MENOS (ou BACK), MENU (ou SELECT)e MAIS (ou FORWARD).

Caso queiram saber mais sobre as entradas digitais do Arduino, vejam também o tutorial "Arduino Tutorial - Digital Input - Button - Monitor Serial", onde explicamos esta característica mais detalhadamente.

Step 2: Código

Terminada a montagem ligamos o cabo USB e carregamos o código na placa do Arduino. No código começamos por importar a biblioteca LiquidCrystal.h para o LCD 16x2, através do gestor de bibliotecas do software do Arduino.

A biblioteca LiquidCrystal.h facilita muito a programação do código para o LCD, sendo apenas necessário configurar 2 funções para que este fique a funcionar em pleno, o 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);
}

Para escrever no LCD é necessário primeiro definir o local onde se começará a escrever, ou seja, a coluna e a linha, depois imprimimos o texto que queremos tendo em atenção que este LCD apenas tem 16 colunas e 2 linhas, caso o texto passe esses limites não aparecerão os 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("Bateria da RTC INOP");
}

Também utilizamos da função "PinMode", que tem a finalidade de configurar os pinos digitais como saídas ou entradas, assim se colocarmos a palavra "INPUT" este fica definido como entrada. Assim basta colocar estas funções para cada um dos nossos botões do nosso menu.

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

Depois de definir os pinos como entradas, utilizamos a função "DigitalRead", esta função permite verificar se as entradas estão em nível alto ou nível baixo. Agora sempre que é necessário utilizar um botão, configura-se esta função para o respectivo botão e dentro a função "If" a acção que este irá realizar.

//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 o nosso tutorial, onde são utilizados os conceitos descritos anteriormente, sendo possível navegar pelo menu, visualizando as suas diferentes páginas, utilizando os 3 botões inseridos na montagem.

#include <LiquidCrystal.h>	//Importar a LCD library.<br><br>//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 de 16x2:
	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 e outras referências do código, vejam a sua explicação detalhada no site oficial do Arduino, através deste Link "https://www.arduino.cc/en/Reference/HomePage".

Procurem os nossos tutoriais acerca do Arduino, onde explicamos diversas montagens e o funcionamento dos seus componentes, já agora visitem o nosso canal no Youtube, Facebook ou Twitter.

Abraço e bons projectos.

Comments

About This Instructable

380views

6favorites

License:

Bio: Este é um canal para homemakers e DIY onde vai encontrar tutoriais úteis acerca de Electrónica, Arduíno, Robótica e Impressão 3D. Estes têm explicações simples ... More »
More by Crazy Taz Projects:Arduino Tutorial - Motion SensorArduino Tutorial - Alarm Clock - EEPROMArduino Tutorial - LDC - Menu
Add instructable to: