Wiki ADA

Projetos em Engenharia de Computação

Ferramentas do usuário

Ferramentas do site


programacao-arduino:analogread

AnalogRead e AnalogWrite

Introdução

As funções analogRead() e analogWrite() são funções análogas a digitalRead() e digitalWrite(), mas com valores analógicos. São utilizadas para ler e enviar, respectivamente, valores de tensão não-binários (diferentes de HIGH ou LOW) entre 0 e 1023, sendo que 0 representa 0V e 1023, 5V.

Ambas podem ser utilizadas nas portas analógicas da placa, assim como nas portas PWM, entretanto, nesse caso, em um intervalo de 0 a 255.

Exemplo

/*
Código que exemplifica o uso das funções analogRead() e AnalogWrite() para portas analógicas e PWM.
*/
 
/*Atribuição de váriaveis para armazenar os endereços das portas a serem utilizadas 
(A0 e A1 analógicas e porta 11 digital PWM).
Perceba que não é necessário colocar A na igualdade para as portas A0 e A1.
*/
int portIn = 0;
int portOut = 1;
int portOutPWM = 11;
 
int value, PWMvalue; //Variáveis auxiliares.
 
void setup() {
  pinMode(portIn, INPUT); //Declaração da porta analógica A0 como entrada.
  pinMode(portOut, OUTPUT); //Declara a porta analógica A1 como saída.
  pinMode(portOutPWM, OUTPUT); //Declara a porta digital PWM 11 como saída.
}
 
void loop() {
  value = analogRead(0); //Leitura da tensão na porta A0.
  analogWrite(1, value); //Escrita na porta A1 do valor obtido anteriormente.
 
  //Conversão do valor lido do intervalo de 0-1023 para 0-255 para ser utilizado na porta PWM.
  PWMvalue = (value*255)/1023; 
  analogWrite(11, PWMvalue); //Escrita do valor correpondente na porta PWM.
}

Principais Situações de Uso

A função analogRead() é utilizada para obter leituras não-binárias, normalmente de sensores (de luminosidade, de umidade, de temperatura, etc), potenciômetros e similares.

Da mesma maneira, analogWrite() é utilizada para enviar valores de tensão intermediários, entre 0 e 5V, em aplicações que controlam a luminosidade de LED's, a velocidade de motores, a geração de sinais analógicos e sinais de áudio, entre outros.

Desafios

  1. Utilzar um potenciômetro para controlar a luminosidade de um LED.
  2. Realizar a leitura dos seguintes sensores, mostrando a leitura no monitor serial:
    1. Luminosidade;
    2. Umidade;
    3. Temperatura;
    4. Ultrassônico
    5. Infravermelho;
  3. Controlar motores, variando sua velocidade e sentido de giro.

Missões

  1. Controlar a velocidade e sentido de giro um motor utilizando dois sensores de luminosidade, seguindo as condições:
    1. O motor gira no sentido do sensor que receber maior luminosidade;
    2. A velocidade do motor começa baixa, e vai aumentando gradativamente.
  2. Controlar a velocidade de um motor utilizando a leitura de um sensor ultrassônico de modo que quanto menor a distância lida, menor a velocidade, e vice-versa.
programacao-arduino/analogread.txt · Última modificação: 2020/11/26 09:04 por bandeira