I’ve been working on altimeters for model rockets using both C and Micropython on Adafruit’s feather series and a couple other boards. The thing with C is the tool chain setup is 3/4 the battle. It’s a huge LOE to go from nothing to a blinking led (the embedded hello world) with C. With micropython it’s 5 lines, drag/drop a file, and reboot.
I appreciate C and I’ve learned a lot of things like peripheral clock multipliers and all the work that has to be done before you can even jump to main. However, I set out to make an altimeter heh.
Edit: oh and with C, writing your own device driver for every single thing is a pit of a pita too. There are open source drivers for some breakouts but they all seem to require serious hand fitting.
If you are forced to write pure C (or a very low level subset of C++) , then that is often because:
- you need every tiny bit of performance,
- you optimize for low executable size or low memory footprint (e.g ATTiny13)
- you have an exotic architecture that offers only a C compiler or ancient C++ compiler from 90s,
- you need to use C for other reasons like safety certification, e.g. MISRA C.
In all of these cases Python wouldn't work at all.
And in the others your can use modern C++ which can be just as productive as Python (in my case it is more productive, but I have probably spent more time with it than with Python, so I'm biased).
For twiddling GPIO pins, I can be most productive in C (or the C subset of c++ for pedants).
Twiddling GPIO pins and doing other bit gymnastics is a fair bit of simple sensor interface microcontroller projects, which is a large overlap with the target for CircuitPython.