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

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

Neste tutorial iremos demonstrar o funcionamento das entradas analógicas do Arduino UNO, normalmente nos vários modelos de placas de Arduíno (Ver modelos em "https://www.arduino.cc/en/Main/Products"), existem muito mesmos pinos de entrada analógica do que digitais, o que pode limitar um pouco as montagens para os nossos projectos. Neste caso a placa do Arduíno UNO contem apenas 6 pinos com essa funcionalidade.

Para explicar-mos a utilização das entradas de sinal analógico escolhemos uma montagem, cujo o objectivo será utilizar um potenciómetro 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 de 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 ligações eléctricas do circuito, sendo um deles 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 electrica, alterando 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 electrico 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

Ok com a montagem terminada, ligamos o cabo USB e carregamos o respectivo código na placa do Arduino para carregar o código.

Como foi explicado anteriormente a principal diferença desta tipo de pinos do Arduino, as entradas analógicas, é 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 os pinos digitais já têm essa capacidade.

Entrada analógica

//Leitura de Pino analógico:
analogRead(Pino)

Saída Digital

//Coloca o pino digital em nível alto:<br>digitalWrite(Pino, HIGH)

Entrada Digital

//Leitura de Pino digital:<br>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  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 abre uma pequena janela onde será escrita a informação.

Este é o código da montagem, vejam onde foram utilizados estes dois tipos de saídas, as saídas analógicas para ler o nosso sensor resistivo, sendo este o componente principal desta montagem, 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 "Digital Output", onde explicamos 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
<p>//Corre a função SETUP apenas uma vez após ser pressionado Reset:</p><p>void setup(){</p>
	//Iniciar a Serial communication a 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 e nível alto) referente a Oeste:
		digitalWrite(LED_Oeste, HIGH);
		
		//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 Este:
		digitalWrite(LED_Este, LOW);
		
		//Desliga o LED (LOW e nível baixo) referente a Sul:
		digitalWrite(LED_Sul, LOW);
	}
	else if (Valor_Sensor > 282 & Valor_Sensor < 638){
		//Liga o LED (HIGH e nível alto) referente a Norte:
		digitalWrite(LED_Norte, 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 Este:
		digitalWrite(LED_Este, LOW);

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

	else if (Valor_Sensor >638 & Valor_Sensor < 893){

		//Liga o LED (HIGH e 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);
	}
	else if (Valor_Sensor > 0 & Valor_Sensor < 127 || Valor_Sensor > 893 & Valor_Sensor < 1023){
		//Liga o LED (HIGH e nível alto) referente a Sul:
		digitalWrite(LED_Sul, 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 Este:
		digitalWrite(LED_Este, LOW);
	}
	//Escreve no monitor serial:
	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 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

117views

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