Boa tarde alguem me tira uma duvida

eu preciso fazer um temporizador de minutos. como eu faço, seria asimm?

#define motor 5
#define botao 7

void setup() {

pinMode (motor,OUTPUT);
pinMode (botao,INPUT_PULLUP);
}

void loop() {

if (!digitalRead(botao)){
digitalWrite (motor,HIGH);
delay(300000); //motor fica ligado 3 minutos
digitalWrite (motor,LOW);
delay(500000); //motor fica desligado 5 minutos
}
eu tentei fazer com millis mas não entendi como usar ele

Ola companheiro. não estou com muito tempo agora a escrever código. Mas segue ai um caminho:

A função millis() é apenas para pegar o tempo em cada ciclo guardar numa variável e comparar depois ele mais adiante lendo esta variável. É útil para saber quanto tempo de execução, por exemplo, de um trecho de código ou de um desvio. Segue o link que explica a função: https://www.arduino.cc/reference/pt/language/functions/time/millis/
https://www.arduino.cc/reference/en/language/functions/time/millis/

Esta parte de seu código acho que tem problema: pinMode (botao,INPUT_PULLUP);, deve ser simplesmente pinMode (botao,INPUT);

Não recomendo usar desta forma para ligar e desligar motor em 3 minutos e deixar desligado 5 minutos. E o resto do tempo voce vai fazer oque? Desta forma se tivesse que atuar neste meio tempo com outros dispositivos estará impedido de fazer até que o tempo termine. Recomendo usar Interrupções que joga para um bloco de codigo e ai que entra o millis() fique verificando se já pasou o tempo se não passou executa outra coisa.
Acompanhe este código que terá a solução: https://www.filipeflop.com/blog/subtituindo-delay-por-millis-no-arduino/

O botão voce pode criar interrupção se pressionado desvia o codigo apra o vetor de itenrrupção e lá está seu código da ISR a executar. Isto faz com que interrompa a tarefa atual esperando o mills terminar executa o seu evento enquanto sito (pressionar de botão)

aqui esta a boa refrerencia para voce:

Um exemplo bem claro no caso de seu botão:

Espero ter dado alguma luz.

1 curtida