Há correntes da psicologia que indicam que cada ser humano possui seu tempo em um sentido, que cada um gerencia e possui uma velocidade de percepção e execução das coisas, o que leva, também no mundo corporativo, a falar sobre a “gestão do tempo”. E para o Arduino, o que significa o tempo? É o que vamos explorar na aula de hoje.
• 02 LEDs;
• 02 resistores 220 Ohms;
• 01 buzzer passivo;
• 01 push button;
• 08 jumpers macho-macho;
• 01 Protoboard;
• 01 Arduino Uno;
• Computador ou notebook.
Não apenas na Robótica, mas na programação como um todo, o controle do tempo é importante, pois geralmente o que vamos programar depende dele: controlar o tempo de emissão de um sinal, do acionamento de um LED ou outro componente, da simulação de portas analógicas pelas portas PWM, da movimentação de servomotores, dentre outros...
O conceito de tempo é fundamental em projetos de Arduino, especialmente quando se trata de controlar e sincronizar eventos e processos, gerenciando tarefas e sincronismos de movimentos e ações. Compreender as formas de controle do tempo permite a execução de tarefas em momentos específicos, essencial para o controle de ações e automações.
Em nossos projetos, usamos a função delay() para um controle do tempo, como no projeto de semáforo. Mas, dependendo do projeto, a função delay() pode não atender aos objetivos, pois ela pausa a programação por um tempo definido, o que impede a execução de outras tarefas simultâneas. Já a função millis(), que veremos na programação desta aula, nos auxilia no controle do tempo para permitir múltiplas tarefas no Arduino sem que haja o bloqueio de uma ação sobre a outra durante a execução do programa, como acontece quando usamos a função delay().
A função millis() retorna o valor de milissegundos que se passaram desde que o Arduino é inicializado, possibilitando a criação de projetos mais dinâmicos e inovadores quanto ao controle do tempo.
Iniciaremos a jornada por nosso “controle do tempo” com a montagem de um protótipo com dois LEDs conectados às portas 12 e 11, um buzzer à porta 10 e um botão à porta 2 do Arduino. Nesse protótipo, conectamos cada LED às portas digitais com um resistor de 220 ohms e o botão está ligado diretamente à porta digital, sem resistor, porque utilizaremos o recurso pullup na programação.
Para finalizar a montagem, confira as conexões dos terminais negativos dos componentes à protoboard, conectada na porta GND do Arduino.
Códigos Arduino IDE
Programação 1 com a função delay()
Programação 2 com a função millis()
Programação 3 com a biblioteca Neotimer
Confira a montagem e programação completa:
Uma sugestão de aprimoramento, partindo do projeto desta aula: faça um LED piscar em uma frequência fixa; em seguida, controle a frequência do piscar do outro LED utilizando um potenciômetro; por fim, configure o botão para acionar o buzzer em frequências aleatórias sempre que for pressionado. Que tal você criar outros projetos utilizando apenas um Arduino para englobar diversos controles independentes? Com esses desafios, amplie suas habilidades de programação e gerenciamento de múltiplas tarefas no Arduino. Boa sorte e divirta-se!
O projeto não funcionar?
• Verifique as variáveis criadas para armazenamento do tempo do LED e do tempo decorrido do Arduino, considerando sua sintaxe e atribuição de uma variável para cada componente a ser controlado em paralelo.
• Confira a programação quanto ao cálculo aplicado.
• Verifique, caso utilize a versão software do Arduino IDE, a instalação da biblioteca Neotimer.
• Revise as conexões do protótipo e portas declaradas no sketch da programação.
Quanto mais avançamos em nossos projetos, mais autonomia passamos a ter no controle dos eventos da prototipagem com Arduino. Compreender e aplicar corretamente a ideia de controle temporal, tanto pela função delay() quanto pela função millis() pode significar a diferença entre um projeto bem desenvolvido e um que não atende às expectativas de tempo e sincronização.
Continue sua jornada!
ARDUINO. Documentação de Referência da Linguagem Arduino. Disponível em: https://www.arduino.cc/reference/pt/. Acesso em: 27 mar. 2024.
BRINCANDO COM IDEIAS. Nunca Mais Use Delay e Nem Millis - #IDEIASAOVIVO. YouTube. 26min02. Disponível em: https://www.youtube.com/live/r20_IpWLYDk?si=-tIikLSZGoR-EpBtO. Acesso em: 05 abr. 2024.
MAKERHERO. Substituindo delay por millis no Arduino. Disponível em: https:// www.makerhero.com/blog/subtituindo-delay-por-millis-no-arduino/. Acesso em: 05 abr. 2024.