Framework Arduino Básico Aula 02: Entendendo o básico sobre o uso dos pinos

 Imagem meramente ilustrativa

Relembrando

    Na aula anterior dissemos que o Arduino Uno era uma placa de prototipagem que operava a 5V, dispunha de 14 pinos para entrada e saída digital, dos quais 6 poderiam ser utilizados como pwm, além de mais 6 entradas analógicas, mas o que significa isso? 

Conhecendo os Pinos e seus estados

    Olhando a imagem abaixo podemos visualizar no alto uma linha enfileirada de conectores, enumerados de 0 a 13, com a legenda DIGITAL logo abaixo. Esses conectores ou pinos são os 14 pinos digitais que mencionamos. Eles permitem a conexão de componentes eletrônicos, sensores ou atuadores.

Pinos digitais do Arduino Uno
Pinos digitais do Arduino Uno

    Eles podem tanto receber informação, quando funcionam como entrada, ou enviar informação quando funcionam como saída. Esse ajuste de funcionamento como entrada ou saída é uma das configurações que fazemos na função setup() vista na aula passada.

    As informações que entram ou saem de um pino são na forma de diferentes voltagens e quando são entradas ou saídas digitais, essas voltagens são descritas como estados LOW ou HIGH

    Esse LOW ou HIGH que traduzidos são BAIXO e ALTO é uma forma de representar os dois estados binários da lógica digital, isto é, o ZERO ou UM, respectivamente. No entanto, isso pode confundir o estudante na questão das voltagens. Tentaremos esclarecer.

    Para o Arduino Uno que trabalha em 5 volts, no estado HIGH significa que o pino está trabalhando com voltagens próximas a 5 volts. Quando dizemos próximas é porque nem sempre será um valor exato, mas será bem próximo. Já o estado LOW, significa que o pino está trabalhando com voltagens próximas de zero.

O pinos PWM

    Em termos práticos, o LOW ou HIGH também pode ser entendidos como DESLIGADO ou LIGADO, principalmente quando estamos falando de componentes conectados aos pinos. O estado de um Led, como o da figura no início da postagem, que funciona como uma pequena lâmpada, pode ser perfeitamente descrito como ligado ou desligado, quando está aceso ou apagado.

    No entanto, existem situações onde dois únicos estados não vão atender as nossas necessidades. Por exemplo, se eu quisesse que um Led tivesse diferentes intensidades de iluminação ou se eu quisesse que um motor tivesse diferentes velocidades.

    Para esses casos o Arduino Uno permite que alguns dos 14 pinos digitais possam trabalhar com a chamada Modulação por Largura de Pulso ou PWM. Nessa situação o pino trabalha como uma saída de sinal digital, porem com diferentes durações de pulso.

    Os pinos do Arduino Uno que podem trabalhar com PWM são assinalados com um ~ ao lado do seu número.

As entradas analógicas

    Do outro lado da placa Arduino Uno encontraremos 6 conectores com a descrição ANALOG IN, que são as nossas entradas analógicas. Eles geralmente são usados para receber leituras de sensores que trabalham em uma escala, como sensores de temperatura, de luminosidade, etc.

Entradas analógicas do Arduino Uno
Entradas analógicas do Arduino Uno

Pinos de alimentação

    Para fornecer energia para os dispositivos conectados a placa, o Arduino Uno dispõe dos pinos 5V e GND, que se lê como ground e se entende como terra. Pode também oferecer 3,3V para dispositivos que não trabalhem com 5V. No entanto é importante esclarecer que existem limitações relacionadas a potencia máxima que pode ser oferecida pela placa e limitações quanto a corrente máxima suportada em cada pino.

Pinos de alimentação do Arduino Uno
Pinos de alimentação do Arduino Uno

    A corrente máxima permitida em cada pino é de 40mA, no entanto a soma de todas correntes disponibilizadas em todos os pinos não pode ultrapassar 200mA. 

    Cada dispositivo conectado a um pino demanda uma corrente e trabalha a uma dada voltagem. Essas informações podem ser consultada através de manuais de fabricantes conhecidos como Datasheets.

    Todo esse texto até agora foi feito para que o estudante tenha uma base mínima sobre os pinos e entenda que existe uma série de questões que devem ser consideradas antes de conectar algo em algum lugar da placa.

    Acredito que agora você está apto a fazer seu primeiro programa com um componente eletrônico conectado a sua placa. Para isso acesse o Wokwi com um sketch em branco através do link abaixo:

    https://wokwi.com/projects/new/arduino-uno

Conectando um Led

    Ao entrar no Wokwi utilize o botão + localizado na parte superior direita da tela e clique em LED para adicionar um Led ao seu painel de trabalho. Repita a mesma operação clicando em +, depois clicando em RESISTOR e adicione um resistor ao seu painel de trabalho. 

Botão para adicionar componentes no Wokwi
Botão para adicionar componentes no Wokwi


    Em seguida clique e arraste o Led e o resistor até deixar sua disposição conforme a figura abaixo:

Disposição do Led e do resistor
Disposição do Led e do resistor


    Repare que o Led possui dois terminais (pernas). Ao posicionar o ponteiro do mouse sobre eles verá as descrições: Led1 A e Led1 C, que são respectivamente o o Anodo e Catodo. O Anodo costuma ser o terminal mais comprido é o positivo do Led. Já o catodo é o negativo.

     Ao posicionar o ponteiro do mouse sobre a ponta do catodo ele ficará na forma de um quadradinho e se você clicar nele entrará no modo para desenhar uma conexão e poderá arrastar o mouse até o pino GND logo abaixo. Guarde a regra: Negativo geralmente se conecta no GND.

    Fazendo o mesmo para o Anodo, clique e arraste criando uma conexão até o terminal mais próximo do resistor. Diferente do Led, o resistor não possui polaridade, isto é, terminal positivo ou negativo, por isso tanto faz o lado que você conectou. Aproveite e clique e arraste o outro terminal do resistor criando uma conexão até o pino 2 do Arduino. Se tudo der certo teremos algo como a figura abaixo:

Led e resistor depois de conectado aos pinos solicitados
Led e resistor depois de conectado aos pinos solicitados

    Até aqui temos o Led conectado ao terra e o resistor conectado ao pino 2. Se pretendemos acender o Led é necessário que esse pino seja ajustado como saída para que saia uma corrente desse pino e passe pelo resistor.

    Como o próprio nome diz o resistor oferece uma resistência a passagem de elétrons, por isso a corrente passando por ele diminui, chegando mais fraca ao Led, conforme o valor de sua resistência. Por padrão o Wokwi oferece resistores de 1 KΩ, mas a maioria dos projetos encontrados na Web sugerem o uso de resistores de 220 ou 330 Ω.

    Vale lembrar que as fórmulas ensinadas em Eletricidade devem ser postas em prática. Se U=R.I, então I=U/R. Se a tensão é 5V e a Resistência é 1 KΩ ou 1000 Ω, temos que I=5/1000. Logo a corrente I será 0,005 A ou 5mA. Usando um resistor de 330 Ω ela subirá para 15mA. Dependendo do fabricante, a corrente de trabalho do Led pode estar entre 6 e 20mA.

    Se você clicar no resistor verá que se abre uma janela que permite a escolha de outro valor de resistência. O mesmo vale para a escolha da cor do Led, isto é, clique nele e uma janela será mostrada com várias opções de cor.

Ajustando o resistor no Wokwi
Ajustando o resistor no Wokwi

Escolhendo a cor do Led no Wokwi
Escolhendo a cor do Led
       

Codificando o Sketch

    Para fazer esse Led acender precisamos configurar o pino 2 como saída e para isso usamos a função pinMode() que recebe como parâmetros o número do pino e o modo como ele será ajustado, que no nosso caso será OUT. Se fosse como entrada, seria IN. Essa configuração deverá ser incluída na função setup() do Sketch.

    Já na função loop() damos a instrução para que o estado desse pino seja HIGH, isto é, para que haja 5v nele e essa diferença de potencial gere uma corrente. Para isso utilizamos a função digitalWrite() que recebe como parâmetro o número do pino e seu estado.

    Digamos que eu queira que esse Led fique piscando. Nesse caso eu preciso mandar ele apagar, assim eu preciso incluir o digitalWrite() informando que o pino 2 passe para o estado LOW. Para que esse efeito de ligar e desligar seja percebido é necessário haver um intervalo entre essas instruções.

    Este intervalo poderá ser dado com a função delay() cuja tradução significa atraso porque ela causa uma pausa no processamento por um intervalo de tempo. Esse tempo é passado como parâmetro na forma de um número inteiro representa o número de milissegundos de intervalo.

    Assim temos o seguinte código que deverá ser copiado e colado na região de Sketch do Wokwi:

  1. void setup() {
  2.   pinMode(2, OUTPUT); //ajustando o pino 2 como saída
  3. }

  4. void loop() {
  5.   digitalWrite(2, HIGH); //ligando o pino 2
  6.   delay(1000); //atraso de 1000 milissegundos ou 1 segundo
  7.   digitalWrite(2, LOW); //desligando o pino 2
  8.   delay(1000);
  9. }

    Para executar esse código basta clicar no botão start simulation. Para pará-lo clique no botão Stop:

Botão Start e Stop Simulation, respectivamente
Botão Start e Stop Simulation, respectivamente

    Imagine que por alguma razão você precisou mudar o pino que está utilizando e ao invés do pino 2, usará o pino 7. Você teria que além de mudar fisicamente a conexão do 2 para 7, teria também que mudar todo o código e trocar 2 por 7. 

    Sabemos que existem recursos para substituição em editores de texto e IDEs que fariam isso com alguns cliques, mas concorda comigo que é um trabalho que poderia ser evitado?

    Sendo assim olhe agora para esse código:

  1. int led=2; 
  2. void setup() {
  3.   pinMode(ledOUTPUT);
  4. }

  5. void loop() {
  6.   digitalWrite(ledHIGH);
  7.   delay(1000);
  8.   digitalWrite(ledLOW);
  9.   delay(1000);
  10. }

    O que fizemos aqui foi criar uma variável inteiro chamada led e atribuí a ela o valor do pino onde o led está conectado. Depois utilizei a variável ao invés do número do pino nas funções. Caso seja necessário alterar o pino basta alterar em um único local o valor da variável.

    Não esqueça de salvar o seu projeto. Na próxima aula falaremos sobre saídas pwm.

    Link para o projeto no Wokwi: https://wokwi.com/projects/411763019232562177


Próxima Aula                                                                                                                        Aula Anterior

Referências

ARDUINO DOCS. Arduino Documentation. Disponível em: <https://docs.arduino.cc/> Acesso em 05 ago. 2024.

OLIVEIRA, Cláudio Luis Vieira et al. Aprenda Arduino: Uma abordagem prática. Duque de Caixas: Katzen Editora, 2018. 181p. Disponível em: <https://www.fatecjd.edu.br/fatecino/material/ebook-aprenda-arduino.pdf> Acesso em 05 ago. 2024.

OLIVEIRA, Cláudio Luis Vieira. Arduino Descomplicado - Como Elaborar Projetos de Eletrônica. São Paulo: Editora Érica, 2015. 287p. 

TINKERCAD. Centro de Aprendizagem. Disponível em: <https://www.tinkercad.com/learn> Acesso em 05 ago. 2024.

WOKWI. Referência do wokwi-arduino-uno. Disponível em: <https://docs.arduino.cc/> Acesso em 05 ago. 2024.