Você está na página 1de 25

ENTRADAS E SAIDAS DIGITAIS

digitalRead()
[E/S digital]

Descrição

Lê o valor de um pino digital especificado, HIGHou LOW.

Sintaxe

digitalRead(pin)

Parâmetros

pin: o número do pino do Arduino que você deseja ler

devoluções

HIGHouLOW

Código de exemplo

Define o pino 13 com o mesmo valor do pino 7, declarado como uma entrada.

int ledPin = 13; // LED connected to digital pin 13


int inPin = 7; // pushbutton connected to digital pin 7
int val = 0; // variable to store the read value

void setup() {
pinMode(ledPin, OUTPUT); // sets the digital pin 13 as output
pinMode(inPin, INPUT); // sets the digital pin 7 as input
}

void loop() {
val = digitalRead(inPin); // read the input pin
digitalWrite(ledPin, val); // sets the LED to the button's value
}

Notas e avisos
Se o pino não estiver conectado a nada, digitalRead()pode retornar HIGHou LOW(e
isso pode mudar aleatoriamente).

Os pinos de entrada analógica podem ser usados como pinos digitais, referidos como
A0, A1, etc. A exceção são os pinos Arduino Nano, Pro Mini e A6 e A7 do Mini, que
só podem ser usados como entradas analógicas.

digitalWrite()
[E/S digital]

Descrição

Escreva um HIGH ou um LOW valor em um pino digital.

Se o pino foi configurado como um OUTPUT com pinMode(), sua tensão será ajustada
para o valor correspondente: 5V (ou 3,3V em placas de 3,3V) para HIGH, 0V (terra)
para LOW.

Se o pino estiver configurado como INPUT, digitalWrite()habilitará ( HIGH) ou


desabilitará ( LOW) o pullup interno no pino de entrada. Recomenda-se definir
o pinMode()para INPUT_PULLUP habilitar o resistor pull-up interno. Veja o tutorial
de Pinos Digitais para mais informações.

Se você não definir o pinMode()para OUTPUT, e conectar um LED a um pino, ao


chamar digitalWrite(HIGH), o LED pode parecer escuro. Sem definir
explicitamente pinMode(), digitalWrite()terá ativado o resistor pull-up interno, que
age como um grande resistor limitador de corrente.

Sintaxe

digitalWrite(pin, value)

Parâmetros

pin: o número do pino do Arduino.


value: HIGH ou LOW.
devoluções

Nada

Exemplo de código

O código torna o pino digital 13 an OUTPUT e o alterna alternando entre HIGH e LOW


em um segundo.

void setup() {
pinMode(13, OUTPUT); // sets the digital pin 13 as output
}

void loop() {
digitalWrite(13, HIGH); // sets the digital pin 13 on
delay(1000); // waits for a second
digitalWrite(13, LOW); // sets the digital pin 13 off
delay(1000); // waits for a second
}

Notas e avisos

Os pinos de entrada analógica podem ser usados como pinos digitais, referidos como
A0, A1, etc. A exceção são os pinos Arduino Nano, Pro Mini e A6 e A7 do Mini, que
só podem ser usados como entradas analógicas.

pinMode()
[E/S digital]

Descrição

Configura o pino especificado para se comportar como entrada ou saída. Consulte a


página Pinos Digitais para obter detalhes sobre a funcionalidade dos pinos.

A partir do Arduino 1.0.1 é possível habilitar os resistores pullup internos com o


modo INPUT_PULLUP. Além disso, o INPUTmodo desativa explicitamente os pullups
internos.

Sintaxe

pinMode(pin, mode)
Parâmetros

pin: o número do pino Arduino para definir o modo de.


mode: INPUT, OUTPUTou INPUT_PULLUP. Veja a página de Pins Digitais para uma

descrição mais completa da funcionalidade.

devoluções

Nada

Exemplo de código

O código torna o pino digital 13 OUTPUTe o alterna HIGHeLOW

void setup() {
pinMode(13, OUTPUT); // sets the digital pin 13 as output
}

void loop() {
digitalWrite(13, HIGH); // sets the digital pin 13 on
delay(1000); // waits for a second
digitalWrite(13, LOW); // sets the digital pin 13 off
delay(1000); // waits for a second
}

Notas e avisos

Os pinos de entrada analógica podem ser usados como pinos digitais, referidos como
A0, A1, etc.

E/S ANALÓGICA
analogRead()
[E/S analógica]

Descrição

Lê o valor do pino analógico especificado. As placas Arduino contêm um conversor


analógico para digital multicanal de 10 bits. Isso significa que ele mapeará as
tensões de entrada entre 0 e a tensão de operação (5V ou 3,3V) em valores inteiros
entre 0 e 1023. Em um Arduino UNO, por exemplo, isso gera uma resolução entre
as leituras de: 5 volts / 1024 unidades ou , 0,0049 volts (4,9 mV) por
unidade. Consulte a tabela abaixo para os pinos utilizáveis, tensão de operação e
resolução máxima para algumas placas Arduino.

A faixa de entrada pode ser alterada usando analogReference() , enquanto a


resolução pode ser alterada (somente para placas Zero, Due e MKR)
usando analogReadResolution() .

Em placas baseadas em ATmega (UNO, Nano, Mini, Mega), leva cerca de 100
microssegundos (0,0001 s) para ler uma entrada analógica, portanto, a taxa
máxima de leitura é de cerca de 10.000 vezes por segundo.

QUADRO TENSÃO OPERACIONAL PINOS UTILIZÁVEIS RE

uno 5 volts A0 a A5 10 b

Mini, Nano 5 volts A0 a A7 10 b

Mega, Mega2560, MegaADK 5 volts A0 a A14 10 b

micro 5 volts A0 a A11* 10 b

leonardo 5 volts A0 a A11* 10 b

Zero 3,3 Volts A0 a A5 12 b

Vencimento 3,3 Volts A0 a A11 12 b

Placas da Família MKR 3,3 Volts A0 a A6 12 b

*A0 a A5 são rotulados na placa, A6 a A11 estão respectivamente disponíveis nos


pinos 4, 6, 8, 9, 10 e 12
**A analogRead()resolução padrão para essas placas é de 10 bits, para
compatibilidade. Você precisa usar analogReadResolution() para alterá-lo para 12
bits.

Sintaxe

analogRead(pin)

Parâmetros
pin: o nome do pino de entrada analógica a ser lido (A0 a A5 na maioria das placas,

A0 a A6 nas placas MKR, A0 a A7 no Mini e Nano, A0 a A15 no Mega).

devoluções

A leitura analógica no pino. Embora esteja limitado à resolução do conversor


analógico para digital (0-1023 para 10 bits ou 0-4095 para 12 bits). Tipo de
dados: int.

Exemplo de código

O código lê a tensão no analogPin e a exibe.

int analogPin = A3; // potentiometer wiper (middle terminal) connected to analog


pin 3
// outside leads to ground and +5V
int val = 0; // variable to store the value read

void setup() {
Serial.begin(9600); // setup serial
}

void loop() {
val = analogRead(analogPin); // read the input pin
Serial.println(val); // debug value
}

Notas e avisos

Se o pino de entrada analógica não estiver conectado a nada, o valor retornado


por analogRead()flutuará com base em vários fatores (por exemplo, os valores das
outras entradas analógicas, quão perto sua mão está da placa, etc.).

analogReference()
[E/S analógica]

Descrição

Configura a tensão de referência usada para entrada analógica (ou seja, o valor
usado como o topo da faixa de entrada). As opções são:
Placas Arduino AVR (Uno, Mega, Leonardo, etc.)

 DEFAULT: a referência analógica padrão de 5 volts (em placas Arduino de 5V) ou 3,3
volts (em placas Arduino de 3,3V)
 INTERNO: uma referência interna, igual a 1,1 volts no ATmega168 ou ATmega328P
e 2,56 volts no ATmega32U4 e ATmega8 (não disponível no Arduino Mega)
 INTERNAL1V1: uma referência integrada de 1,1 V (somente Arduino Mega)
 INTERNAL2V56: uma referência integrada de 2,56 V (somente Arduino Mega)
 EXTERNAL: a tensão aplicada no pino AREF (somente 0 a 5V) é usada como
referência.

Placas Arduino SAMD (Zero, etc.)

 AR_DEFAULT: a referência analógica padrão de 3,3V


 AR_INTERNAL: uma referência de 2,23V integrada
 AR_INTERNAL1V0: uma referência de 1,0 V integrada
 AR_INTERNAL1V65: uma referência de 1,65 V integrada
 AR_INTERNAL2V23: uma referência de 2,23 V integrada
 AR_EXTERNAL: a tensão aplicada no pino AREF é usada como referência

Placas Arduino megaAVR (Uno WiFi Rev2)

 PADRÃO: uma referência interna de 0,55 V


 INTERNO: uma referência de 0,55 V integrada
 VDD: Vdd do ATmega4809. 5V no Uno WiFi Rev2
 INTERNAL0V55: uma referência de 0,55 V integrada
 INTERNAL1V1: uma referência de 1,1 V integrada
 INTERNAL1V5: uma referência de 1,5 V integrada
 INTERNAL2V5: uma referência de 2,5 V integrada
 INTERNAL4V3: uma referência de 4,3 V integrada
 EXTERNO: a tensão aplicada no pino AREF (somente 0 a 5V) é usada como
referência

Placas Arduino SAM (Devido)

 AR_DEFAULT: a referência analógica padrão de 3,3V. Esta é a única opção


suportada para o Due.

Arduino Mbed OS Nano Boards (Nano 33 BLE), Arduino Mbed OS Edge Boards (Edge
Control)
 AR_VDD: a referência padrão de 3,3 V
 AR_INTERNAL: referência de 0,6 V integrada
 AR_INTERNAL1V2: referência de 1,2 V (referência interna de 0,6 V com ganho de
2x)
 AR_INTERNAL2V4: referência de 2,4 V (referência interna de 0,6 V com ganho de
4x)

Sintaxe

analogReference(type)

Parâmetros

type: qual tipo de referência usar (veja lista de opções na descrição).

devoluções

Nada

Notas e avisos

Depois de alterar a referência analógica, as primeiras leituras analogRead()podem


não ser precisas.

Não use nada menos que 0V ou mais que 5V para tensão de referência
externa no pino AREF! Se estiver usando uma referência externa no pino
AREF, você deve definir a referência analógica como EXTERNAL antes de
chamar analogRead(). Caso contrário, você causará um curto-circuito entre a tensão
de referência ativa (gerada internamente) e o pino AREF, possivelmente danificando
o microcontrolador em sua placa Arduino.

Como alternativa, você pode conectar a tensão de referência externa ao pino AREF
por meio de um resistor de 5K, permitindo alternar entre as tensões de referência
externa e interna. Observe que o resistor alterará a tensão usada como referência
porque há um resistor interno de 32K no pino AREF. Os dois agem como um divisor
de tensão, então, por exemplo, 2,5V aplicados através do resistor resultarão em 2,5
* 32 / (32 + 5) = ~2,2V no pino AREF.
analogWrite()
[E/S analógica]

Descrição

Grava um valor analógico ( onda PWM ) em um pino. Pode ser usado para acender
um LED em vários brilhos ou acionar um motor em várias velocidades. Após uma
chamada para analogWrite(), o pino gerará uma onda retangular constante do ciclo
de trabalho especificado até a próxima chamada para analogWrite()(ou uma
chamada para digitalRead()ou digitalWrite()) no mesmo pino.

QUADRO PINOS PWM FREQUÊNCIA

Uno, Nano, Mini 3, 5, 6, 9, 10, 11 490 Hz (pinos 5 e 6: 980

mega 2 - 13, 44 - 46 490 Hz (pinos 4 e 13: 98

Leonardo, Micro, Yun 3, 5, 6, 9, 10, 11, 13 490 Hz (pinos 3 e 11: 98

Uno WiFi Rev2, Nano cada 3, 5, 6, 9, 10 976 Hz

Placas MKR * 0 - 8, 10, A3, A4 732 Hz

Wi-Fi MKR1000 * 0 - 8, 10, 11, A3, A4 732 Hz

zero * 3 - 13, A0, A1 732 Hz

Nano 33 IoT * 2, 3, 5, 6, 9 - 12, A2, A3, A5 732 Hz

Nano 33 BLE/BLE Sense 1 - 13, A0 - A7 500 Hz

Vencimento ** 2-13 1000 Hz

101 3, 5, 6, 9 pinos 3 e 9: 490 Hz, pino

* Além dos recursos de PWM nos pinos mencionados acima, as placas MKR, Nano 33
IoT e Zero têm saída analógica verdadeira ao usar analogWrite()no pino DAC0( ). **
Além dos recursos de PWM nos pinos mencionados acima, o Due possui saída
analógica real ao usar pinos e .A0
analogWrite()DAC0DAC1

Você não precisa chamar pinMode()para definir o pino como uma saída antes de
chamar analogWrite().
A analogWritefunção não tem nada a ver com os pinos analógicos ou
a analogReadfunção.

Sintaxe

analogWrite(pin, value)

Parâmetros

pin: o pino Arduino para escrever. Tipos de dados permitidos: int.


value: o ciclo de trabalho: entre 0 (sempre desligado) e 255 (sempre ligado). Tipos
de dados permitidos: int.

devoluções

Nada

Exemplo de código

Define a saída para o LED proporcional ao valor lido do potenciômetro.

int ledPin = 9; // LED connected to digital pin 9


int analogPin = 3; // potentiometer connected to analog pin 3
int val = 0; // variable to store the read value

void setup() {
pinMode(ledPin, OUTPUT); // sets the pin as output
}

void loop() {
val = analogRead(analogPin); // read the input pin
analogWrite(ledPin, val / 4); // analogRead values go from 0 to 1023, analogWrite
values from 0 to 255
}

Notas e avisos

As saídas PWM geradas nos pinos 5 e 6 terão ciclos de trabalho maiores que o
esperado. Isso ocorre devido às interações com as funções millis()e delay(), que
compartilham o mesmo timer interno usado para gerar essas saídas PWM. Isso será
notado principalmente em configurações de ciclo de trabalho baixo (por exemplo, 0 -
10) e pode resultar em um valor de 0 não desligando totalmente a saída nos pinos 5
e 6.
Família Zero, Due e MKR

analogReadResolution()
[Família Zero, Due & MKR]

Descrição

analogReadResolution() é uma extensão da Analog API para a família Zero, Due,


MKR, Nano 33 (BLE e IoT) e Portenta.

Define o tamanho (em bits) do valor retornado por analogRead(). O padrão é 10 bits


(retorna valores entre 0-1023) para compatibilidade com placas baseadas em AVR.

A família Zero, Due, MKR e as placas Nano 33 (BLE e IoT) possuem recursos ADC
de 12 bits que podem ser acessados alterando a resolução para 12. Isso retornará
valores analogRead()entre 0 e 4095.
O Portenta H7 tem um 16 bit ADC, que permitirá valores entre 0 e 65535.

Sintaxe

analogReadResolution(bits)

Parâmetros

bits: determina a resolução (em bits) do valor retornado


pela analogRead()função. Você pode definir isso entre 1 e 32. Você pode definir
resoluções maiores que os 12 ou 16 bits suportados, mas os valores retornados
por analogRead()sofrerão aproximação. Veja a nota abaixo para mais detalhes.

devoluções

Nada

Exemplo de código

O código mostra como usar o ADC com diferentes resoluções.

void setup() {
// open a serial connection
Serial.begin(9600);
}

void loop() {
// read the input on A0 at default resolution (10 bits)
// and send it out the serial connection
analogReadResolution(10);
Serial.print("ADC 10-bit (default) : ");
Serial.print(analogRead(A0));

// change the resolution to 12 bits and read A0


analogReadResolution(12);
Serial.print(", 12-bit : ");
Serial.print(analogRead(A0));

// change the resolution to 16 bits and read A0


analogReadResolution(16);
Serial.print(", 16-bit : ");
Serial.print(analogRead(A0));

// change the resolution to 8 bits and read A0


analogReadResolution(8);
Serial.print(", 8-bit : ");
Serial.println(analogRead(A0));

// a little delay to not hog Serial Monitor


delay(100);
}

Notas e avisos

Se você definir o analogReadResolution()valor para um valor maior do que as


capacidades de sua placa, o Arduino só reportará em sua resolução mais alta,
preenchendo os bits extras com zeros.

Por exemplo: usar Due with analogReadResolution(16)fornecerá um número


aproximado de 16 bits com os primeiros 12 bits contendo a leitura real do ADC e os
últimos 4 bits preenchidos com zeros .

Se você definir o analogReadResolution()valor para um valor menor do que as


capacidades de sua placa, os bits extra menos significativos lidos do ADC
serão descartados .

O uso de uma resolução de 16 bits (ou qualquer resolução superior às capacidades


reais de hardware) permite que você escreva esboços que lidam automaticamente
com dispositivos com um ADC de resolução mais alta quando estes se tornam
disponíveis em placas futuras sem alterar uma linha de código.
analogWriteResolution()
[Família Zero, Due & MKR]

Descrição

analogWriteResolution()é uma extensão da Analog API para o Arduino Due.

analogWriteResolution()define a resolução da analogWrite()função. O padrão é 8 bits

(valores entre 0-255) para compatibilidade com placas baseadas em AVR.

O Due tem os seguintes recursos de hardware:

 12 pinos cujo padrão é PWM de 8 bits, como as placas baseadas em AVR. Estes


podem ser alterados para resolução de 12 bits.

 2 pinos com DAC de 12 bits (conversor digital para analógico)

Ao definir a resolução de gravação para 12, você pode usar analogWrite()valores


entre 0 e 4095 para explorar a resolução total do DAC ou para definir o sinal PWM
sem rolar.

O Zero tem os seguintes recursos de hardware:

 10 pinos cujo padrão é PWM de 8 bits, como as placas baseadas em AVR. Estes


podem ser alterados para resolução de 12 bits.

 1 pino com DAC de 10 bits (conversor digital para analógico).

Ao definir a resolução de gravação para 10, você pode usar analogWrite()valores


entre 0 e 1023 para explorar a resolução total do DAC

A família de placas MKR possui os seguintes recursos de hardware:

 4 pinos cujo padrão é PWM de 8 bits, como as placas baseadas em AVR. Estes


podem ser alterados de 8 (padrão) para resolução de 12 bits.

 1 pino com DAC de 10 bits (conversor digital para analógico)

Ao definir a resolução de gravação para 12 bits, você pode


usar analogWrite()valores entre 0 e 4095 para sinais PWM; defina 10 bits no pino
DAC para explorar a resolução DAC completa de 1024 valores.
Sintaxe

analogWriteResolution(bits)

Parâmetros

bits: determina a resolução (em bits) dos valores usados na analogWrite()função. O

valor pode variar de 1 a 32. Se você escolher uma resolução maior ou menor do que
as capacidades de hardware de sua placa, o valor usado analogWrite()será truncado
se for muito alto ou preenchido com zeros se for muito baixo. Veja a nota abaixo
para mais detalhes.

devoluções

Nada

Exemplo de código

Explicar Código

void setup() {
// open a serial connection
Serial.begin(9600);
// make our digital pin an output
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
}

void loop() {
// read the input on A0 and map it to a PWM pin
// with an attached LED
int sensorVal = analogRead(A0);
Serial.print("Analog Read) : ");
Serial.print(sensorVal);

// the default PWM resolution


analogWriteResolution(8);
analogWrite(11, map(sensorVal, 0, 1023, 0, 255));
Serial.print(" , 8-bit PWM value : ");
Serial.print(map(sensorVal, 0, 1023, 0, 255));

// change the PWM resolution to 12 bits


// the full 12 bit resolution is only supported
// on the 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));

// change the PWM resolution to 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 avisos

Se você definir o analogWriteResolution()valor para um valor maior do que as


capacidades da sua placa, o Arduino descartará os bits extras. Por exemplo: usando
o Due with analogWriteResolution(16)em um pino DAC de 12 bits, apenas os
primeiros 12 bits dos valores passados analogWrite()serão usados e os últimos 4
bits serão descartados.

Se você definir o analogWriteResolution()valor para um valor menor do que as


capacidades de sua placa, os bits ausentes serão preenchidos com zeros para
preencher o tamanho necessário do hardware. Por exemplo: usando o Due com
analogWriteResolution(8) em um pino DAC de 12 bits, o Arduino adicionará 4 bits
zero ao valor de 8 bits usado analogWrite()para obter os 12 bits necessários.

analogReference()
[E/S analógica]

Descrição

Configura a tensão de referência usada para entrada analógica (ou seja, o valor
usado como o topo da faixa de entrada). As opções são:

Placas Arduino AVR (Uno, Mega, Leonardo, etc.)

 DEFAULT: a referência analógica padrão de 5 volts (em placas Arduino de 5V) ou 3,3
volts (em placas Arduino de 3,3V)

 INTERNO: uma referência interna, igual a 1,1 volts no ATmega168 ou ATmega328P


e 2,56 volts no ATmega32U4 e ATmega8 (não disponível no Arduino Mega)

 INTERNAL1V1: uma referência integrada de 1,1 V (somente Arduino Mega)

 INTERNAL2V56: uma referência integrada de 2,56 V (somente Arduino Mega)


 EXTERNAL: a tensão aplicada no pino AREF (somente 0 a 5V) é usada como
referência.

Placas Arduino SAMD (Zero, etc.)

 AR_DEFAULT: a referência analógica padrão de 3,3V

 AR_INTERNAL: uma referência de 2,23V integrada

 AR_INTERNAL1V0: uma referência de 1,0 V integrada

 AR_INTERNAL1V65: uma referência de 1,65 V integrada

 AR_INTERNAL2V23: uma referência de 2,23 V integrada

 AR_EXTERNAL: a tensão aplicada no pino AREF é usada como referência

Placas Arduino megaAVR (Uno WiFi Rev2)

 PADRÃO: uma referência interna de 0,55 V

 INTERNO: uma referência de 0,55 V integrada

 VDD: Vdd do ATmega4809. 5V no Uno WiFi Rev2

 INTERNAL0V55: uma referência de 0,55 V integrada

 INTERNAL1V1: uma referência de 1,1 V integrada

 INTERNAL1V5: uma referência de 1,5 V integrada

 INTERNAL2V5: uma referência de 2,5 V integrada

 INTERNAL4V3: uma referência de 4,3 V integrada

 EXTERNO: a tensão aplicada no pino AREF (somente 0 a 5V) é usada como


referência

Placas Arduino SAM (Devido)

 AR_DEFAULT: a referência analógica padrão de 3,3V. Esta é a única opção


suportada para o Due.

Arduino Mbed OS Nano Boards (Nano 33 BLE), Arduino Mbed OS Edge Boards (Edge
Control)

 AR_VDD: a referência padrão de 3,3 V

 AR_INTERNAL: referência de 0,6 V integrada


 AR_INTERNAL1V2: referência de 1,2 V (referência interna de 0,6 V com ganho de
2x)

 AR_INTERNAL2V4: referência de 2,4 V (referência interna de 0,6 V com ganho de


4x)

Sintaxe

analogReference(type)

Parâmetros

type: qual tipo de referência usar (veja lista de opções na descrição).

devoluções

Nada

Notas e avisos

Depois de alterar a referência analógica, as primeiras leituras analogRead()podem


não ser precisas.

Não use nada menos que 0V ou mais que 5V para tensão de referência
externa no pino AREF! Se estiver usando uma referência externa no pino
AREF, você deve definir a referência analógica como EXTERNAL antes de
chamar analogRead(). Caso contrário, você causará um curto-circuito entre a tensão
de referência ativa (gerada internamente) e o pino AREF, possivelmente danificando
o microcontrolador em sua placa Arduino.

Como alternativa, você pode conectar a tensão de referência externa ao pino AREF
por meio de um resistor de 5K, permitindo alternar entre as tensões de referência
externa e interna. Observe que o resistor alterará a tensão usada como referência
porque há um resistor interno de 32K no pino AREF. Os dois agem como um divisor
de tensão, então, por exemplo, 2,5V aplicados através do resistor resultarão em 2,5
* 32 / (32 + 5) = ~2,2V no pino AREF.
analogWrite()
[E/S analógica]

Descrição

Grava um valor analógico ( onda PWM ) em um pino. Pode ser usado para acender
um LED em vários brilhos ou acionar um motor em várias velocidades. Após uma
chamada para analogWrite(), o pino gerará uma onda retangular constante do ciclo
de trabalho especificado até a próxima chamada para analogWrite()(ou uma
chamada para digitalRead()ou digitalWrite()) no mesmo pino.

QUADRO PINOS PWM FREQUÊNCIA

Uno, Nano, Mini 3, 5, 6, 9, 10, 11 490 Hz (pinos 5 e 6: 980

mega 2 - 13, 44 - 46 490 Hz (pinos 4 e 13: 98

Leonardo, Micro, Yun 3, 5, 6, 9, 10, 11, 13 490 Hz (pinos 3 e 11: 98

Uno WiFi Rev2, Nano cada 3, 5, 6, 9, 10 976 Hz

Placas MKR * 0 - 8, 10, A3, A4 732 Hz

Wi-Fi MKR1000 * 0 - 8, 10, 11, A3, A4 732 Hz

zero * 3 - 13, A0, A1 732 Hz

Nano 33 IoT * 2, 3, 5, 6, 9 - 12, A2, A3, A5 732 Hz

Nano 33 BLE/BLE Sense 1 - 13, A0 - A7 500 Hz

Vencimento ** 2-13 1000 Hz

101 3, 5, 6, 9 pinos 3 e 9: 490 Hz, pino

* Além dos recursos de PWM nos pinos mencionados acima, as placas MKR, Nano 33
IoT e Zero têm saída analógica verdadeira ao usar analogWrite()no pino DAC0( ). **
Além dos recursos de PWM nos pinos mencionados acima, o Due possui saída
analógica real ao usar pinos e .A0
analogWrite()DAC0DAC1

Você não precisa chamar pinMode()para definir o pino como uma saída antes de
chamar analogWrite().
A analogWritefunção não tem nada a ver com os pinos analógicos ou
a analogReadfunção.

Sintaxe

analogWrite(pin, value)

Parâmetros

pin: o pino Arduino para escrever. Tipos de dados permitidos: int.


value: o ciclo de trabalho: entre 0 (sempre desligado) e 255 (sempre ligado). Tipos
de dados permitidos: int.

devoluções

Nada

Código de Exemplo

Define a saída para o LED proporcional ao valor lido do potenciômetro.

int ledPin = 9; // LED connected to digital pin 9


int analogPin = 3; // potentiometer connected to analog pin 3
int val = 0; // variable to store the read value

void setup() {
pinMode(ledPin, OUTPUT); // sets the pin as output
}

void loop() {
val = analogRead(analogPin); // read the input pin
analogWrite(ledPin, val / 4); // analogRead values go from 0 to 1023, analogWrite
values from 0 to 255
}

Notas e avisos

As saídas PWM geradas nos pinos 5 e 6 terão ciclos de trabalho maiores que o
esperado. Isso ocorre devido às interações com as funções millis()e delay(), que
compartilham o mesmo timer interno usado para gerar essas saídas PWM. Isso será
notado principalmente em configurações de ciclo de trabalho baixo (por exemplo, 0 -
10) e pode resultar em um valor de 0 não desligando totalmente a saída nos pinos 5
e 6.
Família Zero, Due e MKR

analogReadResolution()
[Família Zero, Due & MKR]

Descrição

analogReadResolution() é uma extensão da Analog API para a família Zero, Due,


MKR, Nano 33 (BLE e IoT) e Portenta.

Define o tamanho (em bits) do valor retornado por analogRead(). O padrão é 10 bits


(retorna valores entre 0-1023) para compatibilidade com placas baseadas em AVR.

A família Zero, Due, MKR e as placas Nano 33 (BLE e IoT) possuem recursos ADC
de 12 bits que podem ser acessados alterando a resolução para 12. Isso retornará
valores analogRead()entre 0 e 4095.
O Portenta H7 tem um 16 bit ADC, que permitirá valores entre 0 e 65535.

Sintaxe

analogReadResolution(bits)

Parâmetros

bits: determina a resolução (em bits) do valor retornado


pela analogRead()função. Você pode definir isso entre 1 e 32. Você pode definir
resoluções maiores que os 12 ou 16 bits suportados, mas os valores retornados
por analogRead()sofrerão aproximação. Veja a nota abaixo para mais detalhes.

devoluções

Nada

Exemplo de código

O código mostra como usar o ADC com diferentes resoluções.


void setup() {
// open a serial connection
Serial.begin(9600);
}

void loop() {
// read the input on A0 at default resolution (10 bits)
// and send it out the serial connection
analogReadResolution(10);
Serial.print("ADC 10-bit (default) : ");
Serial.print(analogRead(A0));

// change the resolution to 12 bits and read A0


analogReadResolution(12);
Serial.print(", 12-bit : ");
Serial.print(analogRead(A0));

// change the resolution to 16 bits and read A0


analogReadResolution(16);
Serial.print(", 16-bit : ");
Serial.print(analogRead(A0));

// change the resolution to 8 bits and read A0


analogReadResolution(8);
Serial.print(", 8-bit : ");
Serial.println(analogRead(A0));

// a little delay to not hog Serial Monitor


delay(100);
}

Notas e avisos

Se você definir o analogReadResolution()valor para um valor maior do que as


capacidades de sua placa, o Arduino só reportará em sua resolução mais alta,
preenchendo os bits extras com zeros.

Por exemplo: usar Due with analogReadResolution(16)fornecerá um número


aproximado de 16 bits com os primeiros 12 bits contendo a leitura real do ADC e os
últimos 4 bits preenchidos com zeros .

Se você definir o analogReadResolution()valor para um valor menor do que as


capacidades de sua placa, os bits extra menos significativos lidos do ADC
serão descartados .

O uso de uma resolução de 16 bits (ou qualquer resolução superior às capacidades


reais de hardware) permite que você escreva esboços que lidam automaticamente
com dispositivos com um ADC de resolução mais alta quando estes se tornam
disponíveis em placas futuras sem alterar uma linha de código.
analogWriteResolution()
[Família Zero, Due & MKR]

Descrição

analogWriteResolution()é uma extensão da Analog API para o Arduino Due.

analogWriteResolution()define a resolução da analogWrite()função. O padrão é 8 bits

(valores entre 0-255) para compatibilidade com placas baseadas em AVR.

O Due tem os seguintes recursos de hardware:

 12 pinos cujo padrão é PWM de 8 bits, como as placas baseadas em AVR. Estes


podem ser alterados para resolução de 12 bits.

 2 pinos com DAC de 12 bits (conversor digital para analógico)

Ao definir a resolução de gravação para 12, você pode usar analogWrite()valores


entre 0 e 4095 para explorar a resolução total do DAC ou para definir o sinal PWM
sem rolar.

O Zero tem os seguintes recursos de hardware:

 10 pinos cujo padrão é PWM de 8 bits, como as placas baseadas em AVR. Estes


podem ser alterados para resolução de 12 bits.

 1 pino com DAC de 10 bits (conversor digital para analógico).

Ao definir a resolução de gravação para 10, você pode usar analogWrite()valores


entre 0 e 1023 para explorar a resolução total do DAC

A família de placas MKR possui os seguintes recursos de hardware:

 4 pinos cujo padrão é PWM de 8 bits, como as placas baseadas em AVR. Estes


podem ser alterados de 8 (padrão) para resolução de 12 bits.

 1 pino com DAC de 10 bits (conversor digital para analógico)

Ao definir a resolução de gravação para 12 bits, você pode


usar analogWrite()valores entre 0 e 4095 para sinais PWM; defina 10 bits no pino
DAC para explorar a resolução DAC completa de 1024 valores.
Sintaxe

analogWriteResolution(bits)

Parâmetros

bits: determina a resolução (em bits) dos valores usados na analogWrite()função. O

valor pode variar de 1 a 32. Se você escolher uma resolução maior ou menor do que
as capacidades de hardware de sua placa, o valor usado analogWrite()será truncado
se for muito alto ou preenchido com zeros se for muito baixo. Veja a nota abaixo
para mais detalhes.

devoluções

Nada

Exemplo de código

Explicar Código

void setup() {
// open a serial connection
Serial.begin(9600);
// make our digital pin an output
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
}

void loop() {
// read the input on A0 and map it to a PWM pin
// with an attached LED
int sensorVal = analogRead(A0);
Serial.print("Analog Read) : ");
Serial.print(sensorVal);

// the default PWM resolution


analogWriteResolution(8);
analogWrite(11, map(sensorVal, 0, 1023, 0, 255));
Serial.print(" , 8-bit PWM value : ");
Serial.print(map(sensorVal, 0, 1023, 0, 255));

// change the PWM resolution to 12 bits


// the full 12 bit resolution is only supported
// on the 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));

// change the PWM resolution to 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 avisos

Se você definir o analogWriteResolution()valor para um valor maior do que as


capacidades da sua placa, o Arduino descartará os bits extras. Por exemplo: usando
o Due with analogWriteResolution(16)em um pino DAC de 12 bits, apenas os
primeiros 12 bits dos valores passados analogWrite()serão usados e os últimos 4
bits serão descartados.

Se você definir o analogWriteResolution()valor para um valor menor do que as


capacidades de sua placa, os bits ausentes serão preenchidos com zeros para
preencher o tamanho necessário do hardware. Por exemplo: usando o Due com
analogWriteResolution(8) em um pino DAC de 12 bits, o Arduino adicionará 4 bits
zero ao valor de 8 bits usado analogWrite()para obter os 12 bits necessários.

E/S avançada
nenhum()
[E/S avançada]

Descrição

Pára a geração de uma onda quadrada acionada por tone(). Não tem efeito se


nenhum tom estiver sendo gerado.

Sintaxe

noTone(pin)
Parâmetros

pin: o pino do Arduino no qual parar de gerar o tom

devoluções

Nada

Notas e avisos

Se você quiser tocar arremessos diferentes em vários pinos, precisará


chamar noTone()um pino antes tone()de chamar o próximo pino.

Você também pode gostar