Função delay() - atraso 

Descrição:

Pausa o programa para a quantidade de tempo (em milisegundos) especificado como parâmetro.

(Um segundo corresponde a 1.000 milissegundos )

Sintaxe:

delay(ms)

Parâmetros:

ms:o número de milissegundos para pausar (unsigned long)

Retorna:

Não há nenhum retorno para essa função.

Exemplo:

    int Led_Pino = 13;             // Led conectado ao pino digital  13

  void setup()
 {
     pinMode(Led_Pino, OUTPUT);  // configura o pino do Led como saída
 }

  void loop()
 {
     digitalWrite(Led_Pino, HIGH);      // acende o Led
     delay(1000);                       // aguarda um segundo 
     digitalWrite(Led_Pino, LOW);       // apaga o Led
     delay(1000);                       // aguarda um segundo 
 }

"Embora seja fácil montar um LED piscando com a função delay (), e muitos Sketchs usando pequenos atrasos para tarefas como eliminar debouncing, o uso de delay () em um Sketch tem desvantagens significativas.


Nenhuma outra leitura de sensores, cálculos matemáticos, ou manipulação de pinos pode continuar durante a função de atraso, portanto impede outra atividade.

Para abordagens alternativas para controlar o tempo, veja a função millis () .Programadores mais experientes costumam evitar o uso do delay () para o sincronismo de eventos com mais de 10  milésimos de segundo, a menos que o Sketch Arduino seja muito simples.

Entretanto, certas coisas vão continuar enquanto a função delay () está controlando o chip ATmega, porque a função de atraso não desabilita as interrupções. A comunicação serial que aparece no pino RX , valores de PWM (analogWrite), estados de pinos são mantidos, e as interrupções irão funcionar como deveriam."

Referência :

http://arduino.cc/en/Reference/Delay#.Uw6pC_ldWa8

Função millis() - milisegundos

Descrição:

Retorna o número de milissegundos desde que o Arduino começou a executar o programa atual.

Este número vai transbordar (voltar para zero), depois de aproximadamente 50 dias.

Sintaxe:

millis()

Parâmetros:

nenhum


Retorna:

Número de milissegundos desde que o programa começou (unsigned long)

Exemplo:

   unsigned long tempo;

   void setup ()

  {
     Serial.begin (9600);  // configura a console do monitor
  }


  void loop ()

  {
    Serial.print ("Tempo");
    tempo = millis ();  

    // imprime o Tempo desde que o programa começou 


    Serial.println (tempo);


   / / Espera um segundo para não enviar grandes quantidades de dados


    delay (1000);
  }

Dica:

Note que o parâmetro para millis é um longo sem sinal  (unsigned long).

Erros podem ser gerados se um programador tenta fazer matemática com outros tipos de dados, como inteiros (int).

Referência :

http://arduino.cc/en/Reference/Millis#.Uw6u-vldWa8

Exibições: 6080

Responder esta

Respostas a este tópico

Piscando o Led sem Delay (atraso)

Às vezes você precisa fazer duas coisas ao mesmo tempo. Por exemplo, você pode querer piscar um LED (ou alguma outra função sensível ao tempo) durante a leitura de um acionamento de um  botão ou de outra entrada.

Neste caso, você não pode usar delay (), porque vai parar todas as outras rotinas do programa enquanto o LED piscar.

O programa pode não perceber o  pressionar do botão, se isso acontecer durante o delay () - atraso.

Este Sketch demonstra como a piscar o LED sem usar a função delay ().

Ele mantém um registro da última vez que o Arduino alterou  o estado do  LED - ligado ou desligado.

Então, cada vez que executar o loop (), ele verifica se um intervalo de tempo suficiente já passou.

Se afirmativo, ele alterna o estado do LED - ligado ou desligado.


Hardware necessário:

Arduino Board
LED

 

Circuito:

 

 

Para construir o circuito, pegue um LED e conecte a perna longa, positivo (chamado de anodo) ao pino 13.

Fixe a perna curta negativa (chamado de cátodo) para o terra.

Em seguida, conecte sua placa Arduino em seu computador, inicie o programa Arduino, e insira o código abaixo.


Diagrama:

 

 

Código:

O código a seguir usa a função  millis (), que retorna o número de milissegundos desde que a placa Arduino começou a rodar o seu programa atual, para piscar um LED.


 / * Piscando sem Delay

  Liga e desliga um diodo emissor de luz (LED) conectado a um pino digital
  sem usar a função  delay (). Isto significa que outros códigos
  podem ser executados ao mesmo tempo, sem ser interrompido pelo código do LED.

   O circuito:
   * LED ligado do pino 13 ao terra.
   * Nota: na maioria dos Arduinos, já existe esse LED na placa   que está ligado ao pino 13,

    então não é necessário nenhuma montagem para este exemplo.


   criado 2005
   por David A. Mellis
   modificado 8 de fevereiro de 2010
   por Paul Stoffregen

   Este exemplo de código é de domínio público. 


http://www.arduino.cc/en/Tutorial/BlinkWithoutDelay
*/


// Definição das constantes

const int Led_Pino = 13; // Led do pino digital 13

// Definição das Variáveis

  // Estado do LED para controlar o acende/apaga
  int Led_estado = LOW;

  // Armazena o ultimo tempo(milisegundos) 
  long Tempo_anterior = 0; 

// As variáveis ​​seguintes são longas porque o tempo medido em milissegundos,

   // tornar-se rapidamente um número enorme, muito maior do que pode ser armazenado em um inteiro.

 

   // intervalo para o pisca-pisca (em millisegundos)
  long intervalo = 1000;             

void setup()
{

// Configura o pino do LED como saída

pinMode(Led_Pino, OUTPUT);
}

void loop()
{


   // Aqui é o lugar onde você coloca o código que precisa ser executado o tempo todo.
   // Verifique se é hora de piscar o LED, ou seja, se a
   // diferença entre o tempo atual e última vez que você piscou
   // o LED é maior do que o intervalo no qual você deseja
   // piscar o LED.



unsigned long Tempo_atual = millis();

if(Tempo_atual - Tempo_anterior > intervalo)
{
    // salve o último tempo desde que piscou o LED 

Tempo_anterior = Tempo_atual;

// Se o LED esta apagado, ele acende e vice-versa

if (Led_estado == LOW) Led_estado = HIGH;

else

Led_estado = LOW;

// Configura o LED com o estado da variável Led_estado

digitalWrite(Led_Pino, Led_estado);
}
}

 

Referência:

http://arduino.cc/en/Tutorial/BlinkWithoutDelay#.Uw6zxvldWa8

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço