Arduino e LEDs - Parte 2, Variação de acendimento de 5 LEDs com Potenciômetro.
Autor: Odilon Almeida | Publicado: 2014-12-28T10:00:00-08:00


Esse post tem o intuito de mostrar como variar o acionamento de LEDs através da leitura de um sinal analógico. No meu caso utilizei um potenciômetro que quando conectado a uma porta analógica do Arduino, fornece uma leitura que varia de acordo com a tensão aplicada. Explicando melhor: O potenciômetro nada mais é do que uma resistência variável, e quando aplicamos uma tensão sobre ele (Vin = 5V), podemos variar a tensão de saída girando o pendulo seu pino central.
















Com isso podemos ler a variação &nbsp;de tensão (de 0 a 5V) utilizando uma das entradas analógicas do Aduino, o que pode ser utilizado para variados projetos. Nesse caso utilizei para fazer um sequencial de LEDs. Esse mesmo principio foi utilizado para fazer o controle dos servos que foram utilizados no projeto do braço robótico, http://computadoresfazemarte-odilon.blogspot.com.br/2012/12/braco-robotico-com-arduino-e-servos.html.&nbsp;

Logo abaixo temos a parte de hardware do projeto.






Esquema elétrico





&nbsp;Esquema para montagem em um protoboard



Agora a parte de software, ou seja, o código para programar o Arduino:


int sensorPotenciometro = 0;&nbsp;
int led1 = 2 ;&nbsp;
int led2 = 3;
int led3 = 4;
int led4 = 5;
int led5 = 6;
int valor = 0; // Essa variável armazenará a leitura do potenciometro

void setup() {
&nbsp; Serial.begin(9600);
&nbsp; pinMode(led1, OUTPUT);
&nbsp; pinMode(led2, OUTPUT);
&nbsp; pinMode(led3, OUTPUT);
&nbsp; pinMode(led4, OUTPUT);
&nbsp; pinMode(led5, OUTPUT);
}

void loop() {
&nbsp; valor = analogRead(sensorPotenciometro); //Armazena os valores obtidos pelo sensor na variável "valor"
&nbsp; Serial.println(valor); //Escreve na serial as leituras obtidas que vão de 0 a 1023
&nbsp; if(valor == 0){ // Compara as leituras e faz o que se pede no bloco abaixo ...
&nbsp; &nbsp; digitalWrite(led1, HIGH);
&nbsp; &nbsp; digitalWrite(led2, LOW);
&nbsp; &nbsp; digitalWrite(led3, LOW);
&nbsp; &nbsp; digitalWrite(led4, LOW);
&nbsp; &nbsp; digitalWrite(led5, LOW);
&nbsp; &nbsp; delay (1000);
&nbsp; &nbsp; digitalWrite(led1, LOW);
&nbsp; &nbsp; delay (1000);
&nbsp; }
&nbsp; else if(valor &gt;= 0 &amp;&amp; valor &lt; 200){ // compara as leituras e faz o que se pede no bloco abaixo...
&nbsp; &nbsp; digitalWrite(led1, HIGH);
&nbsp; &nbsp; digitalWrite(led2, HIGH);
&nbsp; &nbsp; digitalWrite(led3, LOW);
&nbsp; &nbsp; digitalWrite(led4, LOW);
&nbsp; &nbsp; digitalWrite(led5, LOW);
&nbsp; }
&nbsp; else if(valor &gt;= 201 &amp;&amp; valor &lt; 400){//...
&nbsp; &nbsp; digitalWrite(led1, HIGH);&nbsp;
&nbsp; &nbsp; digitalWrite(led2, HIGH);
&nbsp; &nbsp; digitalWrite(led3, HIGH);
&nbsp; &nbsp; digitalWrite(led4, LOW);
&nbsp; &nbsp; digitalWrite(led5, LOW);
&nbsp; } &nbsp;
&nbsp; else if(valor &gt;= 401 &amp;&amp; valor &lt; 600){ //...
&nbsp; &nbsp; digitalWrite(led1, HIGH);
&nbsp; &nbsp; digitalWrite(led2, HIGH);
&nbsp; &nbsp; digitalWrite(led3, HIGH);
&nbsp; &nbsp; digitalWrite(led4, HIGH);
&nbsp; &nbsp; digitalWrite(led5, LOW);
&nbsp; }
&nbsp; else if(valor &gt;= 601 &amp;&amp; valor &lt; 800){ //...
&nbsp; &nbsp; digitalWrite(led1, HIGH);
&nbsp; &nbsp; digitalWrite(led2, HIGH);
&nbsp; &nbsp; digitalWrite(led3, HIGH);
&nbsp; &nbsp; digitalWrite(led4, HIGH);
&nbsp; &nbsp; digitalWrite(led5, HIGH);
&nbsp; }
&nbsp; else if(valor &gt; 801){ &nbsp;//...
&nbsp; &nbsp; digitalWrite(led1, LOW);
&nbsp; &nbsp; digitalWrite(led2, LOW);
&nbsp; &nbsp; digitalWrite(led3, LOW);
&nbsp; &nbsp; digitalWrite(led4, LOW);
&nbsp; &nbsp; digitalWrite(led5, LOW);
&nbsp; &nbsp; delay(1000);
&nbsp; &nbsp; digitalWrite(led1, HIGH);
&nbsp; &nbsp; digitalWrite(led2, HIGH);
&nbsp; &nbsp; digitalWrite(led3, HIGH);
&nbsp; &nbsp; digitalWrite(led4, HIGH);
&nbsp; &nbsp; digitalWrite(led5, HIGH);
&nbsp; &nbsp; delay(1000);
&nbsp; }

}



O código é bem simples, apenas cruza valores colhidos pela porta analógica e executa sinais binários nas portas digitais.

Agora é colocar a criatividade pra funcionar e incrementar o projeto de acordo com cada necessidade.
A seguir um vídeo do projeto em&nbsp;funcionamento:








Até o próximo projeto.