Arduino Tutorial - Digital Input - Button - Monitor Serial

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

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.

Como explicado em tutoriais anteriores os pinos de sinal digital do Arduino podem ser definidos como saídas ou neste caso como pinos de entradas de sinal (Ver imagem acima).

Arduino Tutorial - Digital Output - LED - https://www.instructables.com/id/Arduino-Tutorial-Digital-Output-LED/

Neste tutorial iremos explicar o funcionamento destes pino mas agora como entradas de sinal digital, através de uma pequena montagem cujo o seu objectivo é ligar um dos 3 LED da montagem alternadamente por ordem crescente ou decrescente consoante carregarmos num dos botões da montagem.

Vamos também utilizar novamente a função Communication Serial, pois é muito útil para testar e confirmar qual das saídas do Arduino está a ser seleccionada nesse momento.

Para saber mais sobre estas e outras funções do Arduino UNO, vejam as especificações detalhadas na página oficial do Arduino em https://store.arduino.cc/arduino-uno-rev3.

Step 1: Montagem

Na montagem utilizamos novamente uma "Breadboard" onde colocamos os componentes e fazemos as suas respectivas ligações eléctricas. São utilizados tambémLED de cores diferentes, para podermos verificar e identificar mais facilmente possíveis erros na montagem, alem dos LED são utilizamosbotões de pressão ou "push button" muito comuns em circuitos electrónicos, estes funcionam com normalmente abertos ou NO, fechando apenas o circuito eléctrico quando são pressionamos.

Material necessário:

  • 1x Arduino UNO;
  • 1x Cabo USB;
  • 1x Breadboard;
  • 3x LED (Vermelho / Verde / Azul);
  • 2x Botões de pressão;
  • 5x Resistências 1KΩ.

Tenham atenção à polarização dos LED, visto só funcionarem se directamente polarizados, como também deve ser sempre ligados em série com uma resistência eléctricas de 1KΩ, evitando que estes se danifiquem quando são ligarmos (Ver imagem acima).

Step 2: Código

Estando a montagem pronta, identificamos os botões com os símbolos (+) e (-) facilitando o seu manuseamento, 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);
}

Vamos apenas realçar a utilização da função PinMode, que tem como objectivo configurar os pinos de sinal digital como saídas ou entradas, bastando apenas colocar a palavra "OUTPUT" ficando assim o pino definido como saída, caso contrário se a palavra for "INPUT" o pino fica definido 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 quais os pino são entradas ou saídas, utilizamos a função DigitalWrite ou DigitalRead, tendo a função DigitalWrite a finalidade de alterar o estado da saída do pino para nível baixo ou nível alto utilizando as palavras "LOW" ou "HIGH" respectivamente. No caso da função DigitalRead o seu objectivo será ler os estado dos pinos de entrada, verificando se estes estão em nível baixo ou nível alto "LOW" ou "HIGH".

Pinos definidos 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);

Pinos definidos 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 podermos verificar estas informação através da janela do Monitor Serial é necessário colocar a função Communication Serial na 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.
}

Ao carregarmos no botão Monitor Serial será aberta uma pequena janela sendo assim possível acompanhar a informação que está a ser escrita neste, podendo assim verificar qual dos pinos está a ser utilizado como saída nesse momento.

Para saber mais ou caso tenham dúvidas sobre estas e 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 sobre do Arduino no nosso canal e já agora sigam-nos no Youtube, Instagram, Facebook ou Twitter.

Abraço e bons projectos.

Be the First to Share

    Recommendations

    • Pocket-Sized Speed Challenge

      Pocket-Sized Speed Challenge
    • Audio Challenge 2020

      Audio Challenge 2020
    • Maps Challenge

      Maps Challenge

    Discussions