analogWriteResolution()

Descrição

analogWriteResolution() é uma extensão da API Analog para os Arduinos Due, Zero e MKR.

analogWriteResolution() configura a resolução da função analogWrite(). O padrão é 8 bits (valores entre 0-255) para compatibilidade com placas baseadas em microcontroladores AVR.

O Due possui as seguintes capacidades em seu hardware:

  • 12 pinos com PWM de 8-bit por padrão, como as placas baseadas em AVR. Estes podem ser mudados para resolução 12-bits.
  • 2 pinos com DAC 12-bit (Do Inglês, Digital-to-Analog Converter).

Ao configurar a resolução para 12 bits, você pode usar analogWrite() com valores entre 0 e 4095 para tirar vantagem da resolução completa do DAC ou do sinal PWM.

O Zero possui as seguintes capacidades em seu hardware:

  • 10 pinos com PWM de 8-bit por padrão, como as placas baseadas em AVR. Estes podem ser mudados para resolução 12-bits.
  • 1 pinos com DAC 12-bit (Do Inglês, Digital-to-Analog Converter).

Ao configurar a resolução para 10 bits, você pode usar analogWrite() com valores entre 0 e 1023 para tirar vantagem da resolução completa do DAC.

A família MKR de placas possui as seguintes capacidades em seu hardware:

  • 4 pinos com PWM de 8-bit por padrão, como as placas baseadas em AVR. Estes podem ser mudados para resolução 12-bits.
  • 1 pino com DAC 10-bit (Do Inglês, Digital-to-Analog Converter).

Ao configurar a resolução para 12 bits, você pode usar analogWrite() com valores entre 0 e 4095 para sinais PWM; Use 10 bits no pino do conversor digital-analógico para tira vantagem da resoulção completa de 1024 valores do DAC.

Sintaxe

analogWriteResolution(bits)

Parâmetros

  • bits: determina a resolução (em bits) dos valores usados na função analogWrite(). Se você escolher uma resolução maior ou menor que a capacidade do hardware da sua placa, o valor usado em analogWrite() será ou truncado se é muito grande ou completo com preenchido com zeros se for muito pequeno. Veja a nota abaixo para detalhes.

Retorna

Nada

Código de Exemplo

O código configura a resolução da saída PWM para diferentes valores.

void setup() { // inicia a porta serial Serial.begin(9600); // configura os pinos digitais 11 a 13 como saída pinMode(11, OUTPUT); pinMode(12, OUTPUT); pinMode(13, OUTPUT); } void loop() { // Lê o valor analógico em A0 e mapeia-o para // um pino PWM com um LED conectado int sensorVal = analogRead(A0); Serial.print("Analog Read) : "); Serial.print(sensorVal); // a resolução PWM padrão analogWriteResolution(8); analogWrite(11, map(sensorVal, 0, 1023, 0, 255)); Serial.print(" , 8-bit PWM value : "); Serial.print(map(sensorVal, 0, 1023, 0, 255)); // Muda a reolução PWM para 12 bits // A resolução completa de 12 bits é suportada // apenas no Due analogWriteResolution(12); analogWrite(12, map(sensorVal, 0, 1023, 0, 4095)); Serial.print(" , 12-bit PWM value : "); Serial.print(map(sensorVal, 0, 1023, 0, 4095)); // Muda a reolução PWM para 4 bits analogWriteResolution(4); analogWrite(13, map(sensorVal, 0, 1023, 0, 15)); Serial.print(", 4-bit PWM value : "); Serial.println(map(sensorVal, 0, 1023, 0, 15)); delay(5); }

※ Notas e Advertências:

  • Se você configurar analogWriteResolution() com um valor maior que a capacidade de sua placa, o Arduino irá descartar os bits extras. Por exemplo: ao configurar o Due com analogWriteResolution(16) em um pino DAC 12-bit, apenas os primeiros 12 bits dos valores passados para analogWrite() serão usados e os outros 4 bits serão descartados.
  • Se você configurar analogWriteResolution() com um valor menor que a capacidade de sua placa, os bits ausentes serão completos com zeros para preencher o tamanho requerido pelo hardware. Por exemplo: ao configurar o Due com analogWriteResolution(8) em um pino DAC 12-bit, o Arduino irá adicionar 4 bits zero a esquerda do valor 8-bit usado em analogWrite() para obter os 12 bits requeridos.

Ver Também

Please note: These are affiliate links. If you buy the components through these links, We may get a commission at no extra cost to you. We appreciate it.