========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 [[programacao-arduino: pwm|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===== - Utilzar um potenciômetro para controlar a luminosidade de um LED. - Realizar a leitura dos seguintes sensores, mostrando a leitura no monitor serial: - Luminosidade; - Umidade; - Temperatura; - Ultrassônico - Infravermelho; - Controlar motores, variando sua velocidade e sentido de giro. ====Missões==== - Controlar a velocidade e sentido de giro um motor utilizando dois sensores de luminosidade, seguindo as condições: - O motor gira no sentido do sensor que receber maior luminosidade; - A velocidade do motor começa baixa, e vai aumentando gradativamente. - 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.