Arduino Playground is read-only starting December 31st, 2018. For more info please look at this Forum Post

Entrada analógica

Um potenciômetro é um simples botão giratório que fornece uma resistência variável e que pode ser lida pelo Arduino como um valor analógico. No exemplo a seguir, esse valor é usado para controlar a taxa de piscamento de um LED.

Conectamos três fios à placa Arduino. O primeiro vai do terra a partir do terminal esquerdo do potenciômetro (ele possui geralmente três terminais). O segundo fio vai dos 5 volts ao terminal direito. O terceiro e último fio vai da entrada analógica 2 ao terminal central do potenciômetro.

Se girarmos o cursor do potenciômetro, alteramos a resistência em cada lado do contato elétrico que vai conectado ao terminal central do botão. Isso provoca a mudança na proximidade do terminal central aos 5 volts ou ao terra, o que implica numa mudança no valor analógico de entrada. Quando o cursor for levado até o final da escala, teremos por exemplo zero volts a ser fornecido ao pino de entrada do Arduino e, assim, ao lê-lo obteremos 0. Quando giramos o cursor até o outro extremo da escala, haverá 5 volts a ser fornecido ao pino do Arduino e, ao lê-lo, teremos 1023. Em qualquer posição intermediária do cursor, teremos um valor entre 0 e 1023, que será proporcional à tensão elétrica sendo aplicada ao pino do Arduino.

Circuito

Código

/*
 * Entrada analógica
 * por DojoDave <https://www.0j0.org>
 *
 * 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 2.
 */

int potPin = 2;    // 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
}