Importância do delay


#1

Gente, sou nova aqui e tô iniciando o estudo do arduino. Entao, eu sei que delay é uma funçaõ de tempo que quando executado pausa o programa por um período de tempo especificado. Na verdade, eu ainda não entendi a importância disso em um programa, quais problemas podem acontecer se não for usado, qual a necessidade dessa pausa, etc. Me ajudem, por favor! Obrigada :slight_smile:


Projeto Semáforo com Prioridade
#2

Olá @Clara_Marque, o delay, como o próprio nome está informando, de forma bruta, é uma pausa na execução de comandos pelo Microcontrolador, para entender, é bom dar uma olhadinha no exemplo clássico, nas referências do Arduino.

Esse exemplo meramente faz um LED piscar (blink):

int ledPin = 13;                 // LED connected to digital pin 13

void setup()
{
  pinMode(ledPin, OUTPUT);      // sets the digital pin as output
}

void loop()
{
  digitalWrite(ledPin, HIGH);   // sets the LED on
  delay(1000);                  // waits for a second
  digitalWrite(ledPin, LOW);    // sets the LED off
  delay(1000);                  // waits for a second
}

Nesse exemplo, o LED acende, e permanece aceso pelo delay de 1 segundo (1000 milisegundos), então apaga e permanece apagado pelo mesmo período de tempo e o ciclo se repete enquanto o microcontrolador estiver sendo energizado.

O que acontece se você não usar o delay: Simplesmente o LED vai acender e apagar muito rápido, de forma acurada com os ciclos de processamento do microcontrolador, talvez ficando até imperceptível o efeito, por isso, o programador determina que o microcontrolador deve baixar a bola e esperar 1 segundo antes de executar cada função, utilizando a função delay.

Há casos em que o delay é necessário para sincronizar com alguns CI’s que precisam de tempo para executar determinadas tarefas, por exemplo, se for gravar certos tipos de memória, a mesma pede um tempinho para poder terminar de gravar cada page, por isso, é necessário dar um certo delay antes de continuar a gravação, nesse caso, se a gravação não é sincronizada com o tempo de gravação, a memória não será gravada e não cumprirá a função a que se destina.


#3

A importância dele depende da sua necessidade no programa, não traz nenhum problema(só vai esperar o tempo que vc determinou para continuar a execução) e a necessidade depende do seu objetivo (Um exemplo seria: supondo que vc queira fazer algo que alerte quando abrir a porta da sua casa. Vc pode, imediatamente ao abrir disparar um alarme ou vc pode deixar entrar e se passar 30 segundos e se a pessoa nao informar a senha em um painel, o mesmo alarme soar)


#4

@Clara_Marques

Existe sim diferença.

esse post tem uma ótima explicação


#5

Bom dia @Clara_Marques!

Um exemplo de uso de uma função de delay seria num loop recursivo de espera de conexão do pendrive. Tipo, a cada 1 segundos você executa um método de verificação da conexão. Se em algum momento você verificar que o pendrive foi conectado, o delay deixa de ser executado e o programa continua seu processo.