   // Start the threads
   Nucleo::Thread::begin();
 }
+
+void loop()
+{
+ // Service the nucleos
+  Nucleo::Thread::service();
+}

	delay(PERIOD);
      }
    }
  private:
    LED* m_led;
  };

  LED(Board::DigitalPin pin) : Thread(), m_pin(pin, 1), m_delay(200) {}
  void set_delay(uint16_t ms) { m_delay = ms; }
  virtual void run() { m_pin.toggle(); delay(m_delay); }

private:
  OutputPin m_pin;

  class Controller : public Nucleo::Thread {
  public:
    Controller(LED* led) : Thread(), m_led(led) {}

    virtual void run()
    {
      for (uint16_t ms = LOW; ms < HIGH; ms += INC) {
