Olá pessoal!

Após muito tempo estou de volta!

Ingressei em outras atividades e não continuei com arduino, por isso recorre novamente ao grupo.

Meu caso é o seguinte:

Preciso piscar um led apenas 5x mas não posso usar o delay, pois ele pára o processamento e não consigue  executar outras operações, como ler um botão.

Pesquisei tutoriais no youtube mas eles só explicam como fazer piscar o led e executar outras operações, ou seja, o led fica piscando indefinidamente e no meu caso quero apenas 5x. Obrigado a todos pela força!

Exibições: 330

Responder esta

Respostas a este tópico

Boa tarde 2M, (se não gosta que te chame pelas iniciais, avise),

As pessoas que tentam ajudar em seu projeto são voluntários que fazem isso de graça em seu tempo livre.

Sem as informações corretas é difícil ou impossível dar-lhe a ajuda de que necessita e tudo o que acontece
é uma longa troca de mensagens enquanto tentamos obter as informações de que necessitamos para o ajudar.
Isso é frustrante para você e para nós.


Precisamos saber exatamente qual hardware você possui. Precisamos saber qual placa Arduino (ou outra marca, como ESP32) você está usando e exatamente a que outro hardware está conectando.
Quanto mais detalhes tivermos, mais fácil será ajudar.

Se você estiver usando algo que não seja um produto Arduino, é útil ter um link para a folha de dados
técnicos ou um link para onde você o comprou.

RV mineirin

Boa noite, RVT Pode me chamar pelas iniciais sim!

Obrigado pela dica!

Vou postar o código aqui mais tarde!

Boa noite!

   Obrigado pela resposta José!

Sei q fui pouco claro na minha dúvida, mas como eu disse, eu quero que um led pisque 5x (quando aciono um botao) e pare.

  Caso eu acione novamente o botão enquanto o led está piscando o arduino execute outra função, pode ser acionar outro led.

Bom dia!

Esse artigo do "Mundo Projetado" pode te ajudar: http://mundoprojetado.com.br/executar-duas-coisas-ao-mesmo-tempo/#m...

Usa a função millis.

Bom artigo!

Valeu, vou dar uma olhada. Obrigado

Valeu, vou dar uma olhada. Obrigado

Para o que você precisa há duas alternativas:

1) Mudar seu projeto para usar algum RTOS (Sistema Operacional de Tempo Real) e assim redesenhar todo o seu fluxo para ser quebrado em tarefas (tasks). Piscar o led seria uma tarefa e poderia usar o delay do RTOS sem problema pois o SO consegue rodar outras tarefas enquanto uma delas espera pelo tempo que tem que passar no delay. Um RTOS que funciona no Arduino é o FreeRTOS.

2) Continuar a usar o Arduino com C normalmente em modo mono-tarefa, não usar delay() que é uma função bloqueante - daí o problema que você relata, e passar a usar uma lógica baseada em Estados - State Machine. Nesse caso será necessário usar uma técnica de "marcador de cronômetro" ou TimeStamp para marcar em que momento algo começou e quando deveria acabar baseado no millis() para mudar os vários estados e executar uma certa atividade em seu devido estado de máquina.

O Artigo apontado pelo José Luiz Britto usa e explica a segunda alternativa que coloquei acima.

Obrigado pela resposta!

Amigo, agradeço sua atenção mas pra mim ainda é muito técnico sua palavras. Abraço!

ao invés de usar o Delay, utilize a função millis().

Isso irá resolver seu problema com os travamentos.

Obrigado pela resposta! É o que estou tentando fazer, mas não manjo de millis e nos tutoriais explicam como piscar 2 leds em frequencias diferentes. O que preciso é piscar um por 5x e parar.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço