Pausa o programa para a quantidade de tempo (em milisegundos) especificado como parâmetro.
(Um segundo corresponde a 1.000 milissegundos )
delay(ms)
ms:o número de milissegundos para pausar (unsigned long)
Não há nenhum retorno para essa função.
"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."
http://arduino.cc/en/Reference/Delay#.Uw6pC_ldWa8
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.
millis()
nenhum
Retorna:
Número de milissegundos desde que o programa começou (unsigned long)
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).
Tags:
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
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por