Introduction: Arduino Tutorial - Digital Input - Button - Monitor Serial

Como foi explicado em tutoriais anteriores (Ver aqui https://goo.gl/PN7fmS) os pinos digitais do Arduino podem ser definidos como saídas ou neste caso como entradas, assim neste tutorial iremos explicar o funcionamento dessas entradas digitais através de uma pequena montagem, cujo o objetivo é ligarmos um dos 3 LED da montagem, alterando o LED, ligando-os por ordem crescente ou decrescente dependendo do botão que carregamos. Também vamos mostrar novamente a função Monitor Serial, muito útil para testar e verificar qual a saída do Arduino selecionada num determinado momento.

Caso queiram saber mais sobre estas e outras funções do Arduíno UNO, vejam as especificações detalhadas na página oficial do Arduíno "https://store.arduino.cc/arduino-uno-rev3".

Step 1: Montagem

Nesta montagem utilizamos uma Breadboard onde colocamos os componentes e onde fazemos as ligações eléctricas do circuito.

São utilizados LED de cores diferentes para podermos verificar e identificar mais facilmente os possíveis erros na montagem, também utilizamos Push Buttons ou botões de pressão, muito comuns em circuitos electrónicos, sendo estes normalmente abertos, apenas fechando o circuito quando os pressionamos.

Material necessário:

  • 1x Arduíno UNO;
  • 1x Cabo USB;
  • 1x Breadboard;
  • 3x LED (Vermelho / Verde / Azul);
  • 3x Resistências 1KΩ;
  • 2x Push Buttons.

Tenham atenção à polarização dos LED, pois só funcionam se diretamente polarizados (Ver imagens acima), como também a utilização das resistências eléctricas de 1KΩ, para que estes não se danifiquem quando os ligarmos.

Step 2: Código

Estando a montagem pronta, identificamos os botões com os símbolos (+) e (-) facilitando a operação da montagem, depois ligamos o cabo USB e carregamos o respetivo código na placa do Arduino.

int Botao_Menos = 8;	// Variável para seleção do pino de entrada.
int Botao_Mais = 9;	// Variável para seleção do pino de entrada.

int Pino_Saida;		// Variável para o seleção da saída.

//Correr a função SETUP apenas uma vez após ser pressionado Reset:
void setup() {
	//Coloca na variável.
	Pino_Saida = 5;
	//Enquanto a variável Pino_Saida for menor que 8:
	while (Pino_Saida < 8) {
		//Definição do tipo de pino (Saída ou Entrada):
		pinMode(Pino_Saida, OUTPUT);
		//Soma à variável Pino_Saida o valor +1:
		Pino_Saida = Pino_Saida +1;
	}
	//Definição do tipo de pino (Saída ou Entrada):
	pinMode(Botao_Menos, INPUT);
	pinMode(Botao_Mais, INPUT);

	//Iniciar a Serial communication a 9600b/s:
	Serial.begin(9600);
	}

//Correr a função LOOP repetidamente:
void loop() {
	//Se a leitura de botão Menos for igual a HIGH ou nível alto:
	if (digitalRead(Botao_Menos) == HIGH){
		//Se o Pino_Saida for maior que 5:
		if (Pino_Saida > 5) {
			//Desliga o LED (LOW e nivel baixo):
			digitalWrite(Pino_Saida, LOW);
			//Soma à variável Pino_Saida o valor +1:
			Pino_Saida = Pino_Saida - 1;
		}
	}
	//Se a leitura de botão Menos for igual a HIGH ou nível alto:
	else if (digitalRead(Botao_Mais) == HIGH){
		//Se o Pino_Saida for menor que 7:
		if (Pino_Saida < 7 ) {
			//Desliga o LED (LOW e nivel baixo):
			digitalWrite(Pino_Saida, LOW);
			//Soma á variável Pino_Saida o valor +1:
			Pino_Saida = Pino_Saida + 1;
		}
	}
	//Liga o LED (HIGH e nível alto):
	digitalWrite(Pino_Saida, HIGH);
	
	//Digita no monitor serial o valor da variável:
	Serial.println(Pino_Saida);

	//Atraso para o próximo passo:
	delay(1000);
}

No entanto só vou realçar a utilização da função "PinMode", que tem a finalidade de configurar os pinos digitais como saídas ou entradas, assim se colocarmos a palavra "OUTPUT" este fica definido como saída, caso seja "INPUT" fica como entrada.

//Definição do tipo de pino (Saída):
pinMode(Pino_Saida, OUTPUT);

ou

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

Depois definir se o pino é uma entrada ou saída, utilizamos a função "DigitalWhite" ou "DigitalRead", esta funções permitem alterar o estado da saída para nível baixo ou nível alto através das palavra "LOW ou "HIGH", ou então ler as entradas verificando o seu estado, ou seja, se estão em nível alto ou nível baixo.

Como saídas:

//Coloca a saída em LOW ou nível baixo:<br>digitalWrite(Pino_Saida, LOW);

ou

//Coloca a saída em HIGH ou nível baixo):
digitalWrite(Pino_Saida, HIGH);

Como entradas:

//Se a leitura de Botão Menos for igual a LOW ou nível baixo:
if (digitalRead(Botao_Menos) == LOW){

}

ou

//Se a leitura de Botão Menos for igual a HIGH ou nível alto:<br>if (digitalRead(Botao_Menos) == HIGH){

}

Função Communication Serial:

Para visualizarmos essa informação na janela da função Communication Serial é necessário colocar estas funções no código dentro da função SETUP e função LOOP:

void setup() {
	//Iniciar a  Comunicação Serie a 9600b/s:
	Serial.begin(9600);
}

e

void loop() {
	//Digita no monitor serial o valor da variável:
	Serial.println(VARIAVEL); //"println" > Escreve e depois paragrafo abaixo.
				  ou
				  //"print" > Escreve na sempre na mesma linha.
}

Depois assim que carregamos no botão Communication Serial (Ver imagem acima) abre uma pequena janela onde será escrita a informaçã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 Arduíno, através deste Link "https://www.arduino.cc/en/Reference/HomePage".

Procurem os nossos tutoriais acerca do Arduíno, 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

120views

2favorites

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 - LCD - Temperature SensorArduino Tutorial - Analog Input - Resistive Sensors - Monitor SerialArduino Tutorial - Digital Input - Button - Monitor Serial
Add instructable to: