Este exemplo mostra como ler um pino de uma entrada analógica, mapear o resultado para um intervalo de 0 a 255, e usar esse resultado para definir a modulação PWM de um pino de saída para acender e apagar um LED como um dímer.

O Que Vou Aprender?

- Controlar uma entrada analógica
- Ver dados pelo computador
- Múltiplos estados de um potenciômetro
- Ler uma entrada analógica

Conhecimentos Prévios

- Sinal analógica
- Função analogRead() e Serial.print

Código Fonte

Download do arquivo em formato .ino

Materiais Necessários

Para este tutorial você vai precisar de 1 Arduino Uno R3, 1 LED, 1 Resistor 330Ω, 1 potenciômetro, 1 Protoboard, 1 Cabo USB - AB e Jumpers premium. Ou você pode utilizar os componentes do Kit Iniciante com Arduino Uno R3.

Tutorial Multilógica-Shop Arduino Leitura Serial de uma Entrada Analógica

 

Diagrama

Tutorial Multilógica-Shop Arduino Leitura Serial de uma Entrada Analógica

 

Código Fonte

/*
  Entrada Analogica, Saida Analogica, Saida serial
 
Le o pino de entrada analogica, mapeia o resultado para um intervalo entre 0 e 255 e usa o resultado para estabelecer o pulso PWM do pino de saida.
Tambem e possivel acompanhar o resultado atraves do Monitor Serial.
 
 O circuito:
 - O pino central do Potenciometro conectado ao pino analogico 0. Os pinos lateriais do potenciometro conectados no terra e 5V.
 - LED conectado no pino digital 9 e no terra.

 
Criado em 29/12/2008, Modificado em 09/04/2012 por Tom Igoe
 Este exemplo e de dominio publico.
 */

// constantes nao sao alteradas:
const int analogInPin = A0;  // Entrada analogica do potenciometro
const int analogOutPin = 9;  // Saida analogica onde o LED esta conectado

int sensorValue = 0;        // leitura do potenciometro
int outputValue = 0;        // leitura da saida PWM (analogica)

void setup() {
  // inicializa a comunicacao serial:
  Serial.begin(9600);
}

void loop() {
  // faz a leitura da entrada analogica:
  sensorValue = analogRead(analogInPin);            
  // mapeia o resultado da entrada analogica dentro do intervalo de 0 a 255:
  outputValue = map(sensorValue, 0, 1023, 0, 255);  
 
  // muda o valor da saida analogica:
  analogWrite(analogOutPin, outputValue);          

  // imprime o resultado no monitor serial:
  Serial.print("sensor = " );                      
  Serial.print(sensorValue);      
  Serial.print("\t output = ");      
  Serial.println(outputValue);  

  // Aguarda 2 milissegundos antes do proximo loop:
  delay(2);                    
}

 

Dicas

1 - Note que as entradas analógicas do Arduino têm uma resolução de 10 bits (valores de 0 a 1023), mas as saídas analógicas por PWM têm uma resolução de 8 bits (valores de 0 a 255). É por isso que é necessária a função 'map', para "mapear" os valores de modo que se mantenham proporcionais.

2 - Outros elementos que também são potenciômetros:

Potenciômetro de Membrana rotativo Softpot

Potenciômetro de Membrana rotativo Softpot

 

Potenciômetro de Membrana rotativo HotPot

Potenciômetro de Membrana rotativo HotPot

 

Este tutorial é parte integrante do Guia Iniciante Arduino, desenvolvido pela equipe da Multilógica-Shop. Faça download grátis do arquivo com 15 tutoriais. Neste guia você também vai encontrar, além de indicações de instalação e tutoriais, uma grande quantidade de informações sobre todo o ambiente que está ao redor desta plataforma.

Guia Arduino Iniciante Multilógica-Shop 2.0