Pins analógicos do Arduino

Neste artigo, iremos ver uma descrição dos pins de entrada analógicos de um chip Arduino (Atmega8, Atmega168, Atmega328, ou Atmega1280).

conversor A/D

Os controladores do ATmega usados pelo  Arduino contém um conversor analógico-para-digital (A/D) de 6 canais embutido. O conversor possui uma resolução de 10 bits, retornando inteiros entre 0 e 1023. Apesar da função principal dos pins analógicos para a maioria dos usuários do Arduino seja ler sensores analógicos, os pins analógicos também possuem todas as funcionalidades dos pins de entrada /saída de propósito geral (GPIO) – as mesmas dos pins digitais 0 a 13.

Consequentemente, se uma usuário precisar de mais pins de propósito geral, e todos os pins analógicos não estiverem em uso, esses pins podem ser usados para GPIO.

Mapeamento de Pin

Os pins analógicos podem usados de forma idêntica aos digitais, usando os nomes A0 (para entrada analógica 0), A1, etc. Por exemplo, o código para ajustar o pin analógico 0 como entrada e ajustado com o valor HIGH deve parecer com o seguinte:

pinMode(A0, OUTPUT);
digitalWrite(A0, HIGH);

Resistores pullup

Os pins analógicos também possuem resistores pullups, que funcionam de forma idêntica aos resistores pullup dos pins digitais. Eles são ativados pelo disparo de um como como

digitalWrite(A0, INPUT_PULLUP);  // set pullup on analog pin 0 

Fique ciente que ativar o resistor pullup irá afetar os valores reportados por analogRead().

Detalhes e Ressalvas

O comando analogRead não irá funcionar de forma correta se um pin tiver sido ajustado anteriormente como saída, assim se esse for o caso, ajuste de volta para entrada antes de usar analogRead. De forma similar, se o pin foi ajustado com o valor HIGH como uma saída, o resistor pullup será ativado quando ele for ajustado novamente como entrada.

A planilha ATmega também alerta contra a comutação de pins analógicos em proximidade temporal de fazer leituras A/D (analogRead) em outros pins analógicos. Isso pode causar ruídos elétricos e introduzir tensão no sistema analógico. Pode ser necessário, depois de manipular pins analógicos (em modo digital), adicionar um pequeno delay antes de usar analogRead() para ler outros pins analógicos.

traduzido de arduino.cc