I have been teaching programming and electronics for more than two years now. Using the Arduino ecosystem. And I loved it. And most kids older than 5th grade loved it too. But I found that, for younger kids it was a challenge. So I incorporated Scratch into my curriculum, as a springboard into programming. But I hated it! I just could not wait to finish the eight classes on Scratch and to move over to Arduino.


Gradually, however, I started to see that Scratch could be more than just a short introduction. If it is taught well, it could very well be a subject by itself. I ended up loving Scratch and the kids (and even older ones) love it too. We try to develop somewhat difficult projects, recreating in Scratch well known board games or computer games. And it gets challenging pretty quickly!


Why do I talk about Scratch and Arduino in a Micro:bit blog post?


Because, at first, I viewed Micro:bit in the same way I saw Scratch. Like a stepping stone to the more mature world of Arduino (not that Arduino is all of the embedded world).


And there are some reasons for it:


1. Most of the materials on Micro:bit concentrate on few simple projects. So I am having a hard time finding more challenging projects. Especially more difficult projects developed with Makecode for Micro:bit. I have yet to find a project involving SPI or I2C using block programming.


2. Most of the hardware components that I have around are 5V. So not good for the 3V micro:bit! I felt a little bit constrained to only what is on the micro:bit board.


3. This is very subjective: maybe even the construction of the board suggests that the micro:bit board is all you need! It is not the same with Arduino: you just can't give someone an Arduino Uno (for example) and send him to develop a project! The board is just a part in the project. The only thing you can do with an Arduino by itself is to blink the LED connected to pin 13. Then, by adding different components, you can develop real projects. It is not so with the Micro:bit! One can start developing projects with it right away, without anything added to it! While that is awesome in the beginning, one can outgrow it quickly (at least in his/her mind). So, this advantage can turn into a disadvantage if the micro:bit is left by itself!


4. Funny shape of the I/O pins. Having kids and crocodile clips is not a very good mix (in my opinion). A short is bound to happen sooner than later!


However, the more I spent time with it, the more I realized that (just like Scratch) micro:bit can really beat all these objections:


1. More challenging projects can be developed with micro:bit and Makecode! i just need to learn to use all the blocks available and really think about implementing them. And, of course, I can always switch to Micropython or C/C++ (mbed.org or Arduino IDE). In fact, I think that being able to develop the same project in two different environments can help the students appreciate the strengths and weaknesses of each approach. Maybe developing a project with blocks will help them see the big picture and have a working project. But doing it again in a text based language will help them further develop as well as fine tune it.


2. I am putting together a list of hardware that can be added to the micro:bit without any aditional 5V voltage (the humble LED, RGB LED, LED bar graph, 7 segment display, buttons, key matrix, light dependent resistor, different temperature sensors, potentiometers, rotary encoders etc). Any suggestions are appreciated!


3. I found out this excellent list of micro:bit materials: https://github.com/carlosperate/awesome-microbit (hats off to Mr. Carlos!) Lots of great resources!


4. I started using Sparkfun Breakout connectors and I have no more problems with crocodile clips!


All in all, I think that micro:bit can be used for the long run just as well! I look forward to that!