Micro:bot/moto:bit suport for the MakeCode "moto:bit" extension is very limited

I was going to post the following as a comment about the Micro Bot, but changed my mind and decided to post here. Though I am NOT an “educator” per se, I am trying to use the micro:bit to help introduce my granddaughters to technology in general and computers/programming in particular. I want them to understand that things like computers, smartphones, TV’s, (etc. etc. etc.), are not just “magic in a box”. Rather they are the efforts of skilled individuals - and that my granddaughters can do that too if they want.

Since this forum, (Educational Products), is the only one to really specifically mention the micro:bit, I decided to post here. If this is wrongly placed, please feel free to move it.

On with the show!

==============================================

I have two granddaughters that I gave the micro:bot last Christmas - they rapidly became so frustrated that they stopped playing with it.

Why?

As odd as it sounds, it was actually too complicated. The moto:bit extension contains three and ONLY three programming primitives.

  • Turn motor [left/right] to state [on/off]

  • Run motor [left/right] in direction [forward/backward] for [period of time]

  • Motor direction sense for the [left/right] motor [is/is not] inverted.

That’s it.

Any young kid, especially one who is unaccustomed to programming, will find it way too complex - (i.e. Which “P” number does what? Where are the blocks for the line follower? Servos?) The seeming lack of documentation frustrates even relatively seasoned technophiles like myself. Instead of the micro:bot encouraging kids to play, it collects dust.

This Christmas, I bought them two GiggleBot’s, (also micro:bit powered), one each. As a micro:bit powered device, it can also be programmed in Microsoft MakeCode, and has its own extension with a rich and varied number of blocks to work with.

Whereas the moto:bit extensions are terse to the point of pain, the GiggleBot’s extensions fully describe the various features of the device. Go load them and take a peek.

You can “drive forward” or “backward”, “turn right” or “left”, “spin to the right or left”, or even actuate LED’s or servos and read/write to various kinds of sensors, (like a TOF distance sensor). And it all works “right out of the box”, without any more fuss than downloading the GiggleBot’s one extension. Not only can you program it to be a line-follower, you can even - relatively easily - program it to follow the light from a flashlight.

My youngest granddaughter, (who is 8), had the GiggleBot briefly explained, shown ONE, (very short), demo program I wrote, and she was all over it like bugs on a bumper! She can’t wait to play with it again.

This is what the micro:bot/moto:bit extension should, (and can be), doing.

It shouldn’t be too complicated to create the requisite blocks for the moto:bit extension to handle things like reading line sensors, controlling servos, etc.

Question:

  • Is there some way I can contribute to this?

  • Is there any documentation on how to create the block-primitives for an “extension” in MakeCode?

  • Is there a GitHub repository I can pull the current “moto:bit” extension code from to work with - and then offer “patches” or pull requests?

Thanks!

Update:

In the most recent version of Microsoft MakeCode, there is now a way to add “custom blocks”.

  • - Open "MakeCode"

    (https://makecode.microbit.org/#editor)

  • - Change to "JavaScript" if blocks are being shown
  • - Beneath the "simulator" graphic, you will note a block called "Explorer". Open it.
  • - Once you do so, you will notice a "+" near the right hand side. You select this to create a "custom.ts" script file that you code using, (I assume), is JavaScript like the stuff in the "normal" editor window.
  • The micro:bit foundation has a page at https://makecode.microbit.org/blocks/custom, that provides a basic overview of how to create custom blocks.

    There is a page at https://makecode.com/defining-blocks, that goes into more detail about creating blocks.

    Within that page is a link to a “playground”, (sandbox), at https://makecode.com/playground that has several types of block prototypes defined where you can edit and “run” (upper right corner of editor section) the code to see what it will do. Very interesting!

    These pages also have links to creating a GitHub Repo, initializing it correctly, and then - hopefully! - getting some Real Work Done.

    I’m still looking for links to the various GitHub repos for some of these extensions.