Arduino – Conhecendo as funções pinMode, digitalRead e digitalWrite
Funções pinMode, digitalRead e digitalWrite no Arduino
Nesta lição vamos conhecer três funções primordiais usadas no desenvolvimento de software para o Arduino: pinMode(), digitalWrite() e digitalRead().
Função pinMode()
Esta função permite configurar um pino específico para se comportar como um pino de entrada ou de saída.Por padrão, os pinos do Arduino tem a função de entrada, de modo que não é necessário declará-los neste caso. Já os pinos de saída devem ser configurados por meio dessa função, o que os leva a um estado de baixa impedância, de modo que eles podem fornecer corrente para outros circuitos. Os pinos do microcontolador Atmega podem fornecer até 40 mA de corrente para outros componentes ou circuitos.
Sintaxe da função:
pinMode(pino, modo)
Parâmetros:
- pino é o número do pino que queremos configurar.
- modo pode ser: INPUT (entrada), OUTPUT (saída), ou ainda INPUT_PULLUP.
O parâmetro INPUT_PULLUP permite habilitar os resistores de pullup, os quais são desabilitados quando é usado o modo INPUT. A função pinMode() não retorna nenhum valor ao programa.
Exemplo: Queremos ajustar o pino 7, conectado a um sensor, como entrada, e o pino 8, conectado a um LED, como saída:
int sensor = 7 int LED = 8 void setup() { pinMode(sensor, INPUT); pinMode(LED, OUTPUT); } |
É muito comum usarmos a função pinMode() dentro da seção setup(), para efetuar as configurações de pinos iniciais do programa.
Função digitalWrite()
Esta função escreve um valor HIGH (alto) ou LOW (baixo) em um pino digital que tenha sido configurado como OUTPUT (saída). O valor HIGH equivale a uma tensao de 5V (ou 3,3V em algumas placas), e o valor LOW, a uma tensao elétrica de 0V.
Caso o pino tenha sido configurado como INPUT (entrada), a função digitalWrite() irá habilitar ou desabilitar o pullup interno do pino de entrada. Esta técnica não é recomendada, sendo idela usar a função pinMOde para habilitar o resistor de pullup.
Os pinos analógicos também podem ser utilziados como pinos digitais, sendo referenciados com pinos A0, A1, etc.
Sintaxe:
digitalWrite(pino, valor)
Parâmetros:
- pino: é o número do pino considerado
- valor: HIGH ou LOW
Exemplo: Usando a listagem do exemplo anterior, vamos agora escrever um nível alto no pino onde o LED será conectado (pino 8), esperar meio segundo (500 ms), e então apagr o LED, escrevendo o nível LOW no pino. Ou seja, vamos acender e apagar o LED a cada meio segundo:
int sensor = 7 int LED = 8 void setup() { pinMode(sensor, INPUT); pinMode(LED, OUTPUT); } void loop() { digitalWrite(LED, HIGH); delay(500); digitalWrite(LED, LOW); delay(500); } |
Função digitalRead()
Esta função permite ler o valor a partir de um pino digital especificado, sendo os valores possíveis HIGH ou LOW.
Sintaxe:
digitalRead(pino)
Parâmetro:
- pino é o número do pino cujo valor precisamos ler.
Esta função retorna um valor para o programa, alto (HIGH) ou baixo (LOW).
Exemplo: Usando o primeiro exemplo, vamos ler o valor que o sensor conectado ao pino 7 está enviando ao Arduino:
int sensor = 7 int LED = 8 int valorSensor = 0; void setup() { pinMode(sensor, INPUT); pinMode(LED, OUTPUT); } void loop() { valorSensor = digitalRead(sensor); } |
Note que, como a função digitalRead() retorna um valor ao programa, precisamos armazenar esse valor em algum lugar, e para isso declaramos uma nova variável, a variável valorSensor, inicializada com o valor 0 (zero). Após a chamada à função, a variável terá o valor HIGH ou LOW, conforme o sinal enviado pelo sensor, e poderemos usar esse valor para decidir o que fazer posteriormente no programa. O que aprenderemos nas próximas lições!
Referência da Linguagem do Arduino
Quando termino de programar o arduino e clico para carregar ele dis que o pinMode nao foi declarado
fis tudo certinho mas o led não pisca e a placa não acusou erro testei o led e estava bom (avrdude done. thank you.) é o que aparece
Parabéns pelo conteúdo, muito bem explanado e objetivo.
Valeu Andrei!
Eu acabei me deparando com a forma “não recomendada” de INPUT_PULLUP em: https://youtu.be/t8mE1ayw5bo?si=OEg5a6ggtxPeKdAT
Mais um outro lugar que usa essa forma de escrita “alternativa” de INPUT_PULLUP: https://www.arduino.cc/reference/pt/language/variables/data-types/bool/