Blinking C++

Following hard on the heels of the last post, I decided to try to implement one of the other canonical examples from the MicroPython world, blinking one of the LEDs on and off repeatedly.

In MicroPython we would typically create a "forever" while loop and turn on the centre LED, wait a while, turn it off, wait again and repeat. In C++, that translates pretty faithfully to:


#include "MicroBit.h"

MicroBit micro_bit;

int main()
{
  micro_bit.init();

  const int delay_in_milliseconds = 1000;
  const int full_brightness = 255;
  const int zero_brightness = 0;
  
  while(1)
  { 
    micro_bit.display.image.setPixelValue(2, 2, full_brightness);
    micro_bit.sleep(delay_in_milliseconds);
    micro_bit.display.image.setPixelValue(2, 2, zero_brightness);
    micro_bit.sleep(delay_in_milliseconds);
  }
  
  // low power sleep mode.
  release_fiber();
}

Again, the way that the objects are built is very anti-Law-of-Demeter but at least keeps all the components in a sort of logical structure. Changing pixel values is done by chaining calls through objects: Microbit -> Display -> Image -> SetPixelValue.

The other thing to note is that in MicroPython the values 0..9 are used for LED off and full brightness. In the C++ version, the values are in the range 0..255.