Introduction: Arduino Tutorial - Analog Input - Resistive Sensors - Monitor Serial

Picture of Arduino Tutorial - Analog Input - Resistive Sensors - Monitor Serial

Neste tutorial vamos demonstrar o funcionamento das entradas analógicas do Arduino, nos vários modelos de placas de Arduíno (Ver modelos em "https://www.arduino.cc/en/Main/Products") normalmente existem muito mesmos pinos de entrada analógica do que pinos digitais, o que pode limitar um pouco as montagens dos nossos projectos.

Neste caso a placa do Arduino UNO contem apenas 6 pinos de entradas analógicas. Para explicar-mos a utilização destas entradas, escolhemos uma montagem cujo o objectivo será utilizar um potenciómetro ou resistência variável, como sensor de posição. Este potenciómetro ao ser rodado irá reproduzir a sua direcção através de uma muito simples rosa-dos-ventos feita com LED, ou seja, Norte, Sul, Este e Oeste (Ver imagem acima).

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 suas respectivas ligações eléctricas, sendo um desses componentes o nosso sensor resistivo, que é neste caso um potenciómetro ou resistência variável de 10KΩ.

Este potenciómetro é rotativo, tem uma amplitude de 360º e que será ligado de forma a funcionar como um divisor de tensão, assim quando rodamos o seu eixo este irá variar a sua resistência eléctrica, alterando assim a tensão na entrada analógica A0,

Esta variação de tensão pode ser de 0 a 5 Volts, assim quando o valor de tensão é máximo, ou seja, de 5V o valor convertido pela função das entradas analógicas será 1023, caso a tensão seja 0V o valor convertido será também de 0 (Ver circuito eléctrico acima).

Esta montagem contem também 4 LED e estes estão numa disposição parecida com uma Rosa-dos-Ventos, indicando os Pontos Cardeais, ou seja, o Norte, Sul, Este e Oeste.Para que a posição do potenciómetro corresponda a cada um dos LED teremos de dividir os 360º em 4 quadrantes , assim os LED não acendem num valor específico, mas sim quanto estão dentro do quadrante (Ver imagem acima).

Caso queiramos um sistema mais preciso, teremos de colocar mais LED e dividir o valor de 1023 (valor máximo lido pelas entradas analógica) não por 4 partes iguais mas sim por 8 ou 16, podendo assim indicar os Pontos Colaterais (Nordeste, Noroeste, Sudeste e Sudoeste) e Sub-colaterais (lés-nordeste, lés-susdeste, sul-sudeste, nor-nordeste, nor-noroeste, sul-suldoeste, oés-sudoeste e oés-noroeste).

Material necessário:

  • 1x Arduíno UNO;
  • 1x Cabo USB;
  • 1x Breadboard;
  • 4x LED Vermelho;
  • 4x Resistências 1KΩ;
  • 1x Potenciómetro 10KΩ.

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

Step 2: Código

Picture of Código

Agora com a montagem terminada, só falta ligamos o cabo USB e carregamos o respectivo código na placa do Arduino UNO.

Como foi explicado anteriormente a principal diferença entre os pinos de entradas analógicas e os pinos de digitais, é a capacidade de conseguir identificar vários valores de tensão, ou seja, entre 5 e 0 Volts, ao contrario das entradas digitais que apenas permitem distinguir ou nível Alto ou nível Baixo, ou seja, 5 ou 0 Volts (Ver imagem acima).

No entanto, estes pinos apenas têm a função de entradas e não de saídas, pelo contrario dos pinos digitais que já têm essa capacidade.

Entrada analógica

//Leitura do pino analógico:
analogRead(Pino)

Saída Digital

//Coloca o pino digital em nível alto:
digitalWrite(Pino, HIGH)
//Coloca o pino digital em nível baixo:
digitalWrite(Pino, LOW)

Entrada Digital

//Leitura de pino digital:
digitalRead(Pino)

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() {
	//Escreve 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" abre uma pequena janela onde será escrita a informação.

Este é o código da montagem, reparem onde foram utilizados estes dois tipos de saídas, as saídas analógicas que lêem o nosso sensor resistivo, e as saídas digitais que ligam e desligam LED indicando as direcções. Caso queiram saber mais sobre esta ultima função vejam o tutorial "Arduino Tutorial - Digital Output - LED", onde explicamos esta função mais detalhadamente.

int Pino_Sensor = A0;	//Variável para selecção do pino de entrada analógica.

int LED_Norte = 9;	//Variável para selecção do pino de saída digital.
int LED_Oeste = 11;	//Variável para selecção do pino de saída digital.
int LED_Este = 8;	//Variável para selecção do pino de saída digital.
int LED_Sul = 10;	//Variável para selecção do pino de saída digital.

int Valor_Sensor = 0;	//Variável para a leitura do sensor.

//Corre a função SETUP apenas uma vez após ser pressionado Reset:
void setup(){
	//Iniciar a Communication Serial 9600b/s:
	Serial.begin(9600);

	//Definição do tipo de pino (Saída ou Entrada):
	pinMode(LED_Norte, OUTPUT);
	pinMode(LED_Oeste, OUTPUT);
	pinMode(LED_Este, OUTPUT);
	pinMode(LED_Sul, OUTPUT);
}

//A rotina de LOOP e executada repetidamente:
void loop(){

	//Leitura da posição do sensor:
	Valor_Sensor = analogRead(Pino_Sensor);

	//Se o valor da variável for menor que 381 e maior que 127:
	if (Valor_Sensor < 381 & Valor_Sensor > 127){
		//Liga o LED (HIGH é nível alto) referente a Oeste:
		digitalWrite(LED_Oeste, HIGH);
		
		//Desliga o LED (LOW é nível baixo) referente a Norte:
		digitalWrite(LED_Norte, LOW);
		
		//Desliga o LED (LOW é nível baixo) referente a Este:
		digitalWrite(LED_Este, LOW);
		
		//Desliga o LED (LOW é nível baixo) referente a Sul:
		digitalWrite(LED_Sul, LOW);
	}

	//Se o valor da variável for maior que 282 e menor que 638:
	else if (Valor_Sensor > 282 & Valor_Sensor < 638){
		//Liga o LED (HIGH é nível alto) referente a Norte:
		digitalWrite(LED_Norte, HIGH);

		//Desliga o LED (LOW é nível baixo) referente a Oeste:
		digitalWrite(LED_Oeste, LOW);

		//Desliga o LED (LOW é nível baixo) referente a Este:
		digitalWrite(LED_Este, LOW);

		//Desliga o LED (LOW é nível baixo) referente a Sul:
		digitalWrite(LED_Sul, LOW);
	}
	//Se o valor da variável for maior que 638 e menor que 893:
	else if (Valor_Sensor >638 & Valor_Sensor < 893){

		//Liga o LED (HIGH é nível alto) referente a Este:
		digitalWrite(LED_Este, HIGH);

		//Desliga o LED (LOW e nível baixo) referente a Oeste:
		digitalWrite(LED_Oeste, LOW);

		//Desliga o LED (LOW e nível baixo) referente a Norte:
		digitalWrite(LED_Norte, LOW);

		//Desliga o LED (LOW e nível baixo) referente a Sul:
		digitalWrite(LED_Sul, LOW);
	}

	//Se o valor da variavel for maior que 0 e menor que 127 ou maior que 893 e menor 1023:
	else if (Valor_Sensor > 0 & Valor_Sensor < 127 || Valor_Sensor > 893 & Valor_Sensor < 1023){
		//Liga o LED (HIGH é nível alto) referente a Sul:
		digitalWrite(LED_Sul, HIGH);

		//Desliga o LED (LOW é nível baixo) referente a Oeste:
		digitalWrite(LED_Oeste, LOW);

		//Desliga o LED (LOW é nível baixo) referente a Norte:
		digitalWrite(LED_Norte, LOW);

		//Desliga o LED (LOW é nível baixo) referente a Este:
		digitalWrite(LED_Este, LOW);
	}
	//Escreve no monitor serial o texto e o valor da variável:
	Serial.print("Posição Sensor = ");
	Serial.println(Valor_Sensor);

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

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

142views

1favorite

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: