#include <WProgram.h>

/* led pin */
#define LED_PIN       13

#define BTN_PIN       2

/* delay (1.5s) */
#define LED_INTERVAL  1000

static int led_toggled_at = 0;
static int led_state = LOW;


static void toggle(void) {
  /* toggle led state */
  led_state = (led_state == LOW) ? HIGH : LOW;

  /* write led state */
  digitalWrite(LED_PIN, led_state);
}

void setup(void) {
  pinMode(LED_PIN, OUTPUT);
}

void loop(void) {
  int now = millis(), 
      val = digitalRead(BTN_PIN);

  if (val == LOW) {
    /* button is pressed, led is always on */
    digitalWrite(LED_PIN, HIGH);
  } else {
    /* button is not pressed */
    if (now - led_toggled_at > LED_INTERVAL) {
      /* save current time */
      led_toggled_at = now;

      /* toggle led */
      toggle();
    }
  }
}

