Código de Exemplo
O código pausa o programa por um segundo antes de trocar o estado do pino 13.
int ledPin = 13; // LED conectado ao pino digital 13
void setup() {
pinMode(ledPin, OUTPUT); // configura o pino digital como saída
}
void loop() {
digitalWrite(ledPin, HIGH); // acende o LED
delay(1000); // espera por um segundo
digitalWrite(ledPin, LOW); // apaga o LED
delay(1000); // espera por um segundo
}
Notas e Advertências
Mesmo que seja fácil fazer um LED piscar usando a função delay()
, e muitos sketches usam delays pequenos para tarefas como debouncing de botões, o uso de delay()
em um sketch possui desvantagens significantes. Nenhuma leitura de sensores, cálculos matemáticos, ou manipulação de pinos podem ocorrer durante a função delay()
, para resumir, causa a pausa de qualquer atividade. Para métodos alternativos de controlar temporizações, veja o sketch Blink Sem Delay (Em Inglês), que verifica a função millis() até que o tempo suficiente tenha passado. Programadores mais habilidosos usualmente evitam o uso da função delay()
para timing de eventos mais longos que dezenas de milissegundos, a menos que o sketch Arduino seja muito simples.
No entanto, certas coisas continuam a acontecer enquanto a função delay() está controlando o microcontrolador, porque a função delay não desativa interrupções. Comunicação serial recebida no pino RX é armazenada, valores PWM de (analogWrite) e estados dos pinos são mantidos, e interrupções externas irão funcionar como devem.