Descrição
Constantes são expressões predefinidas na linguagem Arduino. Essas são usadas para tornar os programas mais legíveis. As constantes da linguagem Arduino são classificadas nos grupos:
Definições de Constantes Booleanas: true e false
Existem duas constantes usadas para representar verdade e falsidade na linguagem Arduino: true
e false
.
false
false
é o mais fácil dos dois de ser definido. Sendo definido apenas como 0 (zero).
true
true
é freqeuentemente dito ser definido como 1, o que está correto, porém true possui uma definição mais ampla. Qualquer inteiro que não seja zero é true
, em um sentido booleano. Então -1, 2 e -200 são todos definidos como true, também, em um sentido booleano.
Note que as constantes true
e false
são digitadas em caixa baixa, diferentemente de HIGH
, LOW
, INPUT
, and OUTPUT
.
Definições de níveis lógicos: HIGH e LOW
Quando lendo-se ou escrevendo-se o estado de um pino digital há apenas dois valores possíveis que esse pino pode assumir: HIGH
e LOW
.
HIGH
O significado de HIGH
(em relação a um pino) depende se o pino está configurado como entrada ou saída (INPUT
ou OUTPUT
). Qaundo um pino é configurado como INPUT
com pinMode(), e lido com digitalRead(), o Arduino (ATmega) irá retornar HIGH
se:
-
uma tensão maior que 3.0V está presente no pino (em placas 5V)
-
uma tensão maior que 2.0V está presente no pino (em placas 3.3V)
Um pino pode também ser configurado como entrada (INPUT) com pinMode()
, e posteriormente colocado em HIGH com digitalWrite(). Isso irá ativar os resistores de 20K internos para pullup, o que irá forçar o estado do pino para HIGH
a menos que esse seja forçado para LOW
por um circuito externo. Isso é exatamente como a opção INPUT_PULLUP
funciona, sendo descrita abaixo em mais detalhes.
Quando um pino é configurado como saída (OUTPUT) com pinMode()
, e colocado em estado HIGH
com digitalWrite()
, a tensão no pino é:
-
5 volts (em placas 5V)
-
3.3 volts (em placas 3.3V)
Nesse estado, o pino pode fornecer corrente (ver limites para sua placa, geralmente 40.0mA). Isso pode ser usado, por exemplo, para acender um LED que está conecatdo ao ground através de um resistor limitador de corrente.
LOW
O significado de LOW
depende também se o pino está configurado como entrada ou saída (INPUT
ou OUTPUT
). Qaundo um pino é configurado como INPUT
com pinMode()
, e lido com digitalRead()
, o Arduino (ATmega) irá retornar LOW
se:
-
uma tensão menor que 1.5V está presente no pino (em placas 5V)
-
uma tensão menor que 1.0V (aproxidamente) está presente no pino (em placas 3.3V)
Quando um pino é configurado como OUTPUT
com pinMode()
, e colocado em estado LOW
com digitalWrite()
, a tensão no pino é 0 volts (tanto em placas de 5V como 3.3V boards). Nesse estado o pino pode absorver corrente, o que pode ser usado, por exemplo, para acender um LED conectado através de um resistor limitador de corrente aos +5 volts (ou +3.3 volts).
Definições de modos para Pinos Digitais: INPUT, INPUT_PULLUP e OUTPUT
Pinos digitais pode ser usados como entrada, entrada com pull-up ou saída (INPUT
, INPUT_PULLUP
ou OUTPUT
, respectivamente). Mudar o modo de um pino com pinMode()
muda o comportamento elétrico do pino.
Pinos Configurados como entrada - INPUT
Pinos configurados como INPUT
com pinMode()
são ditos estarem em um estado de alta-impedância. Quando configurados como INPUT
, esses pinos exigem multíssimo pouco dos circuitos que estão verificando, equivalente a um resistor de 100 Megohm na frente do pino. Isso faz com que sejam muito úteis para ler sensores.
Se você configurar um pino como INPUT
, e ler o estado de um botão conectado a 5V, por exemplo, quando o botão estiver em estado aberto, a entrada estará "flutuando", resultando em leituras imprevisíveis. Isso acontece porque quando o botão está aberto, o pino não está conectado a nenhuma tensão. Para assegurar uma leitura correta quando o botão está aberto, um resistor de pull-up ou pull-down deve ser usado. O propósito desse resistor é colocar o pino em um estado conhecido quando o botão estiver aberto. Um resistor de 10K ohm é usado geralmente, pois possui valor baixo o suficiente para previnir confiavelmente o estado flutuante, ao mesmo tempo que é grande o suficiente para não usar muita corrente qaundo o botão estiver fechado. Veja o tutorial Serial e Digital Read (Em Innglẽs) para mais informações.
Se um resistor de pull-down é usado, o pino de entrada estará em LOW
quando o botão estiver aberto e HIGH
quando o btoão estiver pressionado.
Se um resistor de pull-up é usado, o pino de entrada estará em HIGH
quando o botão estiver aberto e LOW
quando o btoão estiver pressionado.
Pinos Configuradoos como entrada com pull-up - INPUT_PULLUP
O microcontrolador ATmega na maioria das placas Arduino possui resistores pull-up internos (resistores conectados a alimentação internamente) que você pode acessar. Se você preferir usar estes em vez de resistores de pull-up externos, você pode usar o argumento INPUT_PULLUP
na função pinMode()
.
Veja o tutorial Input Pullup Serial (Em Inglês) para um exemplo do uso desses resistores.
Pinos configurados como entradas com ambos INPUT
ou INPUT_PULLUP
podem ser danificados ou destruídos se são conectados a tensões abaixo de zero (tensões negativas) ou acima da tensão de alimentação (5V ou 3V).
Pinos Configurados como saída - OUTPUT
Pinos configurados como OUTPUT
com pinMode()
são ditos estarem em um estado de baixa-impedância. Isso significa que esses podem fornecer uma quantidade substancial de corrente para outros circuitos. Os pinos de um ATmega podem fornecer ou absorver correntes de até 40 mA (miliamperes) para/de outros dispositivos/circuitos. Isso faz com que sejam úteis para alimentar LEDs, pois LEDs tipicamente usam menos de 40 mA. Cargas que exigem mais de 40 mA (ex. motores) irão reqeurer um transistor ou um outro circuito de interface.
Pinos configurados como saídas podem ser danificados ou destruídos se forem conectados diretamente ao ground ou na tensão de alimentação.
Definição do LED na placa: LED_BUILTIN
A maioria das placas Arduino possuem um pino conectado a um LED on-board através de um resistor. A constante LED_BUILTIN
é o número do pino ao qual o LED on-board está conectado. Na maioria das placas, esse LED é conectado ao pino digital 13.