30 de julho de 2021

Do bit Ao Byte

Embarcados, Linux e programação

Projetos simples com Arduino 01 – Gotejamento

Projetos simples com Arduino

Havia 5 minutos que me deitara para dormir, quando um lampejo me trouxe a ideia de escrever artigos para ajudar iniciantes. Levantei-me às 02:26 da madrugada, fiz um café, liguei o laptop e iniciei a série “Projetos simples com Arduino”, que iniciará diretamente com o projeto, seguido pela explicação. Assim, veremos os conceitos de forma prática e, com certeza, mais prazerosa.

Efeito de gotejamento

Vamos “encher” um LED de luz, então essa luz “pingará” no LED debaixo. O efeito fica melhor com mais LEDs em linha, mas um pouco de perspectiva já passará a sensação de gotejamento.

Materiais para o projeto

  • 1 Arduino, seja qual for.
  • 2 LEDs 5mm da cor que quiser.
  • 2 resistores de 330Ohms.
  • 4 jumpers.
  • 1 protoboard.

Conexões (Wiring)

Essa mini protoboard só tem uma direção. Cada coluna de 5 furos pertence ao mesmo contato.

Os LEDs devem ficar alinhados para causar o efeito visual de gotejamento. No vídeo tive que deixar os LEDs quase frontais por causa da correção de cor da câmera, mas dobrado é mais interessante. A montagem fica assim:

Projetos simples com Arduino

Código

Lembre-se de que a série é de projetos simples com Arduino. Se você já tem experiência, talvez nem leia o artigo até o final, mas precisamos ajudar todos.

void setup(){
     pinMode(7,OUTPUT);
 }
 void loop(){
   int i=0;
   while (i<200){
     analogWrite(5,i);
     delay(10);
     i = i+1;
   }
 analogWrite(5,0);
   delay(10);
 digitalWrite(7,HIGH);
   delay(40);
   digitalWrite(7,LOW);
   delay(1000);
 }

Explicação do projeto

Inicialmente eu havia indicado os pinos 5 e 6 para ficarem lado a lado, mas ambos são pinos PWM, por isso resolvi mudar.

PWM é uma forma de simular um sinal analógico. Com ele, conseguimos variar a intensidade do brilho do LED, semelhante aos dimmers de lâmpadas de corrente alternada. Repare que criamos uma variável chamada i para guardar o acúmulo da intensidade até 200. Podemos ir de 0 à 255, mas achei melhor limitar o brilho pra não refletir muito.

Em seguida à declaração da variável, temos um laço de repetição while que faz o incremento da intensidade de luz, com a função analogWrite(pino, valor). A cada incremento, faz uma pausa de 10ms, como se fosse uma gota se formando na torneira. Depois incrementa o valor da variável i até que chegue no 200, então acaba a tarefa do laço while.

Como a tarefa acabou, significa que a luz deve “pingar”. Como ela não deve mais estar no LED, apagamos ele com analogWrite(pino,0). Fazemos mais uma pausa de 10ms pra luz “chegar” no outro LED, Então acendemos o outro LED e o apagamos rapidamente, com uma pausa de 40ms. Depois de apagado, fazemos uma pausa de 1 segundo e então o ciclo do laço loop() se repete, e assim temos uma goteira sem barulho. Mas dá pra por barulho com um buzzer, então vamos incrementar esse projeto no próximo artigo de projetos simples com Arduino.

E a função setup?

Reparou que só o pino 7 foi configurado na função setup()? Essa função é onde iniciamos parâmetros e recursos. Se tivéssemos configurado o pino 5 como foi feito com o pino 7, também funcionaria, mas para usar a função analogWrite(pino) não foi necessário.

Por que resistores de 330Ohms?

Para acender LEDs de 5mm podemos usar resistores de 330Ohms ou 220Ohms sem calcular nada, mas existe um regra definida na lei de Ohm.

LEDs variam a tensão conforme o diâmetro e cor, e a corrente normalmente fica entre 20 e 25mA.

O Arduino tem um “nível lógico”, que é a tensão que sai ou entra nos pinos de GPIO. No Arduino Leonardo e no UNO o nível lógico é 5V e os pinos fornecem até 40mA de corrente. Pra facilitar, vamos fazer um cálculo, sabendo a corrente, tensão de alimentação e a tensão do LED:

r = V/i ou, resistor é igual a tensão dividida pela corrente. Se tivéssemos uma alimentação de 6V, um LED de 1.8V com corrente de 20mA:

6-18 = 4.2V

4.2/0.02 = r

r = 210Ohms

Se quiser ver mais a respeito, escrevi esse artigo sobre cálculo de resistores. Tem outras coisas legais também para aprender, e que em algum momento você precisará, como um divisor resistivo, para fazer comunicação com dispositivos de menos ou mais tensão do que o Arduino. Mas vamos com calma, essa série é para quem está começando.

Se ainda não conhece a protoboard bem, veja como funciona a protoboard.

Vídeo

É bom ter um vídeo da montagem, codificação e funcionamento também, certo? Pois bem, eis o vídeo “Goteira de luz“.

Atualizando esse artigo, o Prof. Devanir Bertolini fez um vídeo para seus alunos, usando programação em bloco. Ficou mais fácil ainda, recomendo!

Espero que goste e se inscreva no canal DobitaobyteBrasil no Youtube!

Até a próxima!

Revisão: Ricardo Amaral de Andrade