Conhecendo as funções analogread, analogwrite e analogreference
-
Upload
fabio-dos-reis -
Category
Engineering
-
view
168 -
download
0
Transcript of Conhecendo as funções analogread, analogwrite e analogreference
![Page 1: Conhecendo as funções analogread, analogwrite e analogreference](https://reader036.fdocuments.net/reader036/viewer/2022080120/589ff8de1a28ab46598b5e75/html5/thumbnails/1.jpg)
Arduino
Conhecendo as funções analogRead,
analogWrite e analogReference
Bóson Treinamentos
Fábio dos Reis
![Page 2: Conhecendo as funções analogread, analogwrite e analogreference](https://reader036.fdocuments.net/reader036/viewer/2022080120/589ff8de1a28ab46598b5e75/html5/thumbnails/2.jpg)
Função analogRead()
● Lê o valor de um pino analógico especificado.
● O Arduino Uno possui um conversor analógico-digital de 10 bits
e seis canais
● O Arduino Mega possui 16 canais e as placas Mini e Nano, 8
canais.
● Uma entrada analógica demora cerca de 100 μs para ser lida,
então a taxa máxima de leitura é de cerca de 10.000 vezes por
segundo.
● A função retorna um número inteiro entre 0 e 1023, por padrão.
Bóson Treinamentos
Fábio dos Reis
![Page 3: Conhecendo as funções analogread, analogwrite e analogreference](https://reader036.fdocuments.net/reader036/viewer/2022080120/589ff8de1a28ab46598b5e75/html5/thumbnails/3.jpg)
Função analogRead()
● Resolução de 10 bits significa que as tensões de entrada entre
0 e 5 volts aplicadas ao pino serão mapeadas em valores
inteiros entre 0 e 1023 (210).
● Assim, temos uma resolução de leitura de 5 V / 1024 = 4,9 mV
por unidade de medida.
● Essa resolução é devida ao conversor analógico-digital (ADC)
utilizado no Arduino.
● Tanto a faixa de tensão de entrada quanto a resolução dos
pinos pode ser alterada com a função analogReference()
![Page 4: Conhecendo as funções analogread, analogwrite e analogreference](https://reader036.fdocuments.net/reader036/viewer/2022080120/589ff8de1a28ab46598b5e75/html5/thumbnails/4.jpg)
0 1023
0V 5V
Entrada Analógica
analogRead()
![Page 5: Conhecendo as funções analogread, analogwrite e analogreference](https://reader036.fdocuments.net/reader036/viewer/2022080120/589ff8de1a28ab46598b5e75/html5/thumbnails/5.jpg)
Entradas analógicas no Arduino Uno
![Page 6: Conhecendo as funções analogread, analogwrite e analogreference](https://reader036.fdocuments.net/reader036/viewer/2022080120/589ff8de1a28ab46598b5e75/html5/thumbnails/6.jpg)
Entradas analógicas no Arduino Mega
![Page 7: Conhecendo as funções analogread, analogwrite e analogreference](https://reader036.fdocuments.net/reader036/viewer/2022080120/589ff8de1a28ab46598b5e75/html5/thumbnails/7.jpg)
Sintaxe da função analogRead()
analogRead(pino)
Parâmetros:
pino é o número do pino analógico que será lido:
● A0 a A5 na maioria das placas, incluindo o Uno
● A0 a A15 no Arduino Mega
● A0 a A7 nos Arduinos Nano e Mini.
Bóson Treinamentos
Fábio dos Reis
![Page 8: Conhecendo as funções analogread, analogwrite e analogreference](https://reader036.fdocuments.net/reader036/viewer/2022080120/589ff8de1a28ab46598b5e75/html5/thumbnails/8.jpg)
ExemploVamos efetuar a leitura de um sinal aplicado à entrada analógica A2 do Arduino, por meio de um resistor, sensor ou potenciômetro, armazenando o valor na variável valor e mostrando no Serial Monitor os valores lidos:
int valor = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
valor = analogRead(A2);
Serial.println(valor);
}
Bóson Treinamentos
Fábio dos Reis
![Page 9: Conhecendo as funções analogread, analogwrite e analogreference](https://reader036.fdocuments.net/reader036/viewer/2022080120/589ff8de1a28ab46598b5e75/html5/thumbnails/9.jpg)
Função analogWrite()
● Permite escrever um valor analógico (que, na verdade, é um sinal PWM) em um pino.
● Usamos essa função para ativar / desativar dispositivos conectados ao Arduino, como LEDs, atuadores, motores, etc.
● A chamada à função analogWrite() gera um sinal de onda quadrada de uma razão cíclica (duty cicle) especificada, até que uma nova chamada à função seja realizada.
● A frequência do sinal PWM na maioria dos pinos é de cerca de 490 Hz. No Arduino Uno e similares, os pinos 5 e 6 possuem uma frequência de cerca de 980 Hz. No Arduino Leonardo os pinos 3 e 11 também possuem a frequência de 980 Hz.
Bóson Treinamentos
Fábio dos Reis
![Page 10: Conhecendo as funções analogread, analogwrite e analogreference](https://reader036.fdocuments.net/reader036/viewer/2022080120/589ff8de1a28ab46598b5e75/html5/thumbnails/10.jpg)
Função analogWrite()
● A função opera nos pinos 3, 5, 6, 9, 10 e 11 na maioria das placas de Arduino (com chips ATmega168 ou ATmega328).
● No Arduino Mega, funciona nos pinos 2 a 13 e 44 a 46.● Você pode identificar facilmente esses pinos na placa por
possuírem o sinal ~ ao lado do número do pino, indicando a funcionalidade de PWM.
● Não é necessário chamar a função pinMode() para configurar o pino como saída antes de chamar a função analogWrite()
● Cuidado: a função analogWrite() não tem nada a haver com os pinos analógicos da placa, nem com a função analogRead()
Bóson Treinamentos
Fábio dos Reis
![Page 11: Conhecendo as funções analogread, analogwrite e analogreference](https://reader036.fdocuments.net/reader036/viewer/2022080120/589ff8de1a28ab46598b5e75/html5/thumbnails/11.jpg)
Sintaxe da função analogWrite()
analogWrite(pino, valor)
Parâmetros:
pino é o número do pino que receberá o sinal de saída.
valor é a razão cíclica (duty cicle), um valor entre 0 e 255 (sempre
desligado a sempre ligado)
Bóson Treinamentos
Fábio dos Reis
![Page 12: Conhecendo as funções analogread, analogwrite e analogreference](https://reader036.fdocuments.net/reader036/viewer/2022080120/589ff8de1a28ab46598b5e75/html5/thumbnails/12.jpg)
Exemplo da função analogWrite()Vamos iluminar um LED de acordo com um valor de entrada lido a partir de um potenciômetro. O potenciômetro será ligado ao pino 3 (A3), um pino de entrada analógica, e o LED ao pino de saída PWM 10.
int entradaPotenciometro = 3
int LED = 10
int valor = 0
void setup() {
pinMode(LED, OUTPUT);
}
void loop() {
valor = analogRead(entradaPotenciometro);
analogWrite(LED, valor / 4)
}
Bóson Treinamentos
Fábio dos Reis
![Page 13: Conhecendo as funções analogread, analogwrite e analogreference](https://reader036.fdocuments.net/reader036/viewer/2022080120/589ff8de1a28ab46598b5e75/html5/thumbnails/13.jpg)
Função analogReference()● Função utilizada para configurar a tensão de referência usada nas entradas
analógicas – mais precisamente, o valor superior da faixa de valores de entrada.
● Quando o Arduino realiza uma leitura analógica, ele efetua uma comparação entre a tensão medida no pino analógico utilizado com um valor de Tensão de Referência Analógica, que por padrão é o valor de tensão de operação normal da placa, 5 volts
● Ao usar uma tensão de referência de 5V, cada unidade retornada na leitura de valores pela função analogRead() terá o valor de 0,00488V (4,9mV).
● Às precisamos medir valores de tensão em uma faixa distinta, por exemplo, entre 0 e 3V.
● Nesse caso, para que o ADC saiba qual é o valor superior da faixa usamos a função analogReference(). O valor mais baixo de tensão de referencia possível no Arduino é de 1,1V.
Bóson Treinamentos
Fábio dos Reis
![Page 14: Conhecendo as funções analogread, analogwrite e analogreference](https://reader036.fdocuments.net/reader036/viewer/2022080120/589ff8de1a28ab46598b5e75/html5/thumbnails/14.jpg)
Função analogReference()● Assim, se, por exemplo, precisarmos medir valores em uma faixa de tensão
entre 0 e 3V, ajustamos o valor de referência para 3V, e a partir daí cada unidade de medida do ADC será interpretada pelo Arduino como sendo:
3 V / 1024 = 2,9 mV (0,0292V) por unidade de medida.
● A tensão de referência deve ser aplicada no pino AREF na placa do Arduino.
Bóson Treinamentos
Fábio dos Reis
![Page 15: Conhecendo as funções analogread, analogwrite e analogreference](https://reader036.fdocuments.net/reader036/viewer/2022080120/589ff8de1a28ab46598b5e75/html5/thumbnails/15.jpg)
Sintaxe da função analogReference()
analogReference(tipo)
Parâmetros:
tipo: tipo de configuração a usar.
Bóson Treinamentos
Fábio dos Reis
![Page 16: Conhecendo as funções analogread, analogwrite e analogreference](https://reader036.fdocuments.net/reader036/viewer/2022080120/589ff8de1a28ab46598b5e75/html5/thumbnails/16.jpg)
Tipos de configurações de analogReference() ● DEFAULT: A tensão de referência analógica padrão, que é de 5 volts, em
placas Arduino de 5V, ou 3,3 volts, nas placas de 3,3V (por exemplo, Arduino
Due).
● INTERNAL: Referência interna, que equivale a 1,1 volts nos chips
ATmega168 e ATmega328, ou 2,56 volts no Atmega8. Não disponível no
Arduino Mega.
● INTERNAL1V1: Tensão de referência interna de 1,1V, somente para o
Arduino Mega.
● INTERNAL2V56: Tensão de referência interna de 2,56V, também somente
para o Arduino Mega.
● EXTERNAL: Este é um valor de tensão aplicada no pino AREF da placa, no
intervalo de 0 a 5 volts apenas, que será usada como referência externa.
●
Bóson Treinamentos
Fábio dos Reis
![Page 17: Conhecendo as funções analogread, analogwrite e analogreference](https://reader036.fdocuments.net/reader036/viewer/2022080120/589ff8de1a28ab46598b5e75/html5/thumbnails/17.jpg)
Localização do pino AREF no Arduino Uno
![Page 18: Conhecendo as funções analogread, analogwrite e analogreference](https://reader036.fdocuments.net/reader036/viewer/2022080120/589ff8de1a28ab46598b5e75/html5/thumbnails/18.jpg)
ExemploPrecisamos ligar um sensor ao Arduino que gera sinais de saída entre 0 e 4V. Para que a precisão das leituras seja a melhor possível, vamos alterar a opção de tensão de referência analógica para o intervalo entre 0 e 4V, usando uma fonte de tensão externa:
void setup()
{
analogReference(EXTERNAL);
}
Bóson Treinamentos
Fábio dos Reis
● Agora basta aplicar uma tensão de exatos 4V ao pino AREF da placa para usar esse valor de tensão como referência analógica.
● Tome cuidado para não usar valores de tensão abaixo de 1,1V ou maiores do que 5V, para não danificar sua placa.