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

Picture of Arduino Tutorial - Digital Input - Button - Monitor Serial

Como foi explicado em tutoriais anteriores (Ver o Arduino Tutorial - Digital Output - LED) os pinos digitais do Arduino podem ser definidos como saídas ou neste caso como entradas.

Neste tutorial iremos explicar o funcionamento dessas entradas digitais através de uma pequena montagem, cujo o objectivo é ligarmos um dos 3 LED da montagem alternadamente, ligando-os por ordem crescente ou decrescente dependendo do botão que carregamos.

Vamos também mostrar novamente a função "Communication Serial", muito útil para testar e verificar qual das saídas do Arduino está seleccionada 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 fazemos as suas respectivas ligações eléctricas.

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, estes são normalmente abertos e apenas fecham o circuito eléctrico quando os pressionamos.

Material necessário:

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

Tenham atenção à polarização dos LED, pois só funcionam se directamente 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

Picture of 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 respectivo código na placa do Arduino.

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

int Pino_Saida;		// Variável para o selecção do pino de 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 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 Communication Serial a 9600b/s:
	Serial.begin(9600);
}

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

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

No entanto, só vamos realçamos 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 a palavra seja "INPUT" fica definida como entrada.

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

e

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

Depois de definir se o pino é uma entrada ou saída, utilizamos a função "DigitalWhite" ou "DigitalRead", estas 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, verifica se estão em nível alto ou nível baixo.

Como saídas:

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

ou

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

Como entradas:

//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){

}

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  Communication Serial 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 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 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

143views

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