Tutorial 010: Arduino Básico- Potenciômetro

Um componente muito útil em projetos é o potenciômetro,que é basicamente um resistor variável.
Ele será o foco do tutorial de hoje,por meio desse componente falaremos sobre uma função básica na programação do Arduino, a função em questão é o analogRead().
Como o nome diz, é uma leitura analógica.
O Arduino possui um conversor analógico-digital de 10 bits,isso permite dividir uma entrada analógica em 1024 partes (2^10) iguais,esse valores são posteriormente amostrado em valores bem pequenos,imagina dividir uma escala 0-5 V em 1024 partes!
Esses valores do conversor A/D é lido por meio da função analogRead.
Temos outra função chamada analogWrite(), que faz o oposto,ou seja,ela escreve o valor ao invéz de ler como faz o analogRead().

Logo abaixo posto um código tirado do site Arduino Playground com uma mudança do pino do potenciômetro( pq eu aproveitei uma imagem da internet).

Nesse código,o intervalo de tempo entre as piscadas de um led é alterado mediante a variação no potenciômetro, no caso é aproveitado o led do pino 13,mas qualquer outro led colocado em outro pino pode ser usado.

Código:

/*
* Entrada analógica
* por DojoDave
*
* Liga e desliga um LED conectado ao pino digital 13. O tempo
* que o LED permanece ligado ou desligado depende do valor
* obtido pelo analogRead(). No caso mais simples, conectamos
* um potenciômetro ao pino analógico 0.
*/

int potPin = 0; // selecione o pino de entrada ao potenciômetro
int ledPin = 13; // selecione o pino ao LED
int val = 0; // variável a guardar o valor proveniente do sensor

void setup() {
pinMode(ledPin, OUTPUT); // declarar o pino ledPin como saída
}

void loop() {
val = analogRead(potPin); // ler o valor do potenciômetro
digitalWrite(ledPin, HIGH); // ligar o ledPin
delay(val); // pausar o programa por algum tempo
digitalWrite(ledPin, LOW); // desligar o ledPin
delay(val); // pausar o programa por algum tempo
}

http://arduino.cc/es/uploads/Tutorial/graph-circuit3.png

Nó códido anterior, o tempo máximo no intervalo é de 1024 mili-segundos,mas esse tempo poderia ser mudado utilizando a função map(),que falarei adiante.

Função map()

Essa função transformar um intervalo de valores em um outro intervalo de forma proporcional.
Por exemplo,o potenciômetro varia linearmente de 0 a 1023,vamos admitir que o meio desse intervalo é 512 , com a função map() esse valor poderia corresponder a 50 em uma escala que varia de 0 a 100.
Muito útil quando vc deseja ter uma saída que varia proporcionalmente a um potenciômetro, como por exemplo,a intensidade de um Led.
Abaixo segue um código que varia o brilho de um led com um potenciômetro:

Código:


int Ledpin=9; //Led ligado ao pino 9
int analogpin=A0; //Potenciometro ligado ao pino de entrada analogica 0
int valor=0;
int x =0;
void setup()
{
pinMode(Ledpin, OUTPUT); //Configurando o pino do led como saída
}
void loop()
{
valor=analogRead(analogpin); // colocando o valor do potenciometro na variavel
x=map(value,0,1023,0,255); // função map convertendo intervalos
analogWrite(Ledpin,x); // analogWrite escrevendo o valor analogico
}

http://api.ning.com/files/04UGNaRQ3yV*68KQq4EmV0vmKa-tm60JvbH3w7STujLiGBaRGZtXaqZIGiqt2x7SuAH*cuyABinzb9QDfgbzGH5nbBLSfWIk/pwm.png

Para variar o brilho do Led,transformamos o intervalo 0-1023 do potenciômetro no intervalo 0-255 que é o intervlao de funcionamento do PWM,responsável por mudar o brilho do Led.
Caso queira saber mais sobre PWM, consulte o final desse post do sucata: link

4 ideias sobre “Tutorial 010: Arduino Básico- Potenciômetro

  1. Ola amigo, estou com um problema na aplicação de um pot100K na entrada analogica do arduino, devido a variação de pulso que acontece, por exemplo, o pot parado em um ponto especifico varia 10 pulsos mais ou menos e assim não me da a precisão que eu precisava, vc sabe um forma de obter mais precisão na leitura do pot ou como estabilizar esse pulso?

    • Boa noite,obrigado pelo comentário e desculpe pela demora em responder, o site está sendo reativado.

      Bruno, não entendi muito bem, o valor mostrado pelo potenciômetro está oscilando mesmo com ele parado, é isso?
      Já verificou as ligações? Principalmente o ground ?
      Teste com outro potenciômetro, pois se houver sujeiras ou danos na trilha de carbono dele é possível que cause interferências na leitura.

Deixe um Comentário

O seu endereço de email não será publicado

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>