Seeing a better blinking light
The core blinking light sketch uses a delay(1000)
to essentially stop all work for 1 second. If we want to have a more responsive gadget, this kind of delay can be a problem. This design pattern is called Busy Waiting or Spinning: we can do better.
The core loop()
function is executed repeatedly. We can use the millis()
function to see how long it's been since we turned the LED on or turned the LED off. By checking the clock, we can interleave LED blinking with other operations. We can gather sensor data as well as check for button presses, for example.
Here's a way to blink an LED that allows for additional work to be done:
const int LED=13; // the on-board LED void setup() { pinMode( LED, OUTPUT ); } void loop() { // Other Work goes here. heartbeat(); } // Blinks LED 13 once per second. void heartbeat() { static unsigned long last= 0; unsigned long now= millis(); if (now - last > 1000) { digitalWrite( LED, LOW ); last= now; } ...