This is obviously logical. If I know how to program in Python or JS but not C and am familiar with SSH, I can do something with a SBC in a few minutes.
I get paid $200/hr. If I spent even one hour to learn what I need to deal with a microcontroller, the time cost is four times the cost of materials if I stick with what I know.
How many small projects do I need to do in my free time before it's financially smart to learn a whole new technology?
I find it remarkable that they haven't tried to make all of that easier. Any board with arduino support is easy to start using, with pared down c++, boards similar to the micro:bit support micropython and javascript as well as a few others, and a ton of modern development boards have UF2 support.
UF2 is a step change in how easy it is to flash a binary onto a microcontroller. You hold down a button before connecting it to a USB port, and then it appears as a USB drive for you to drop a file onto, once it's done "copying" the board is flashed and will run your code as soon as it resets.
If you want to gain familiarity with a board, you can drop a .uf2 file with a REPL on it and run code on the board a line at a time.
(Anyway, I still remember the thrill of writing assembly for a 68HC11 and getting a pair of hobby servos to respond.)
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
delay(1000);
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
}(Of course, there are those to whom an Arduino is an overpriced piece of junk and they don't understand how I can't solder a three cent chip myself.)
But let's be realistic - all of these things are like my Steam library - purchases made but never used (I have a drawer full of Pis and other SBCs, and Arduino dev kits, etc. Someday I'll have time time time!).
int main() {
setup();
for(;;) loop();
}
As well as a GUI to easily flash devices and view the output from the serial port, as well as import libraries that do all of the hard work like say making a serial port on any microcontroller pin or control external devices like light strips or displays.I'd assume the average user on HN should be able to figure it out pretty easily.
It is c++ though. Just limited in similar ways to the US air force's requirements for using the language.
In fact it's a lot more straight forward to not have to deal with Network Manager config files or systemd unit files or read only rootfs headaches of Linux world.
You can usually find libraries for your language of choice to speak GPIO and expose the pin's state as a variable in your code.
These days, with ESP32, Pi Pico W etc... things have changed a lot.
But before they got popular, Why deal with MCU + wiring some weird peripheral for wifi / ethernet when you get a Pi Zero W / Clone with built in wifi for the same price?
Now what I would have loved to have done is come up with some crazy analog circuit to implement an arbitrary transfer function from potentiometer input to LED voltage, but I didn't know how to do this at the time and the dev cycle would be a lot more painful than with software.
I would not have fallen in love with microcontrollers without Raspberry Pi and PocketCHIP as stepping stones.
The messaging of "it's a tiny computer, make whatever you want with it" is so much more approachable than anything I've found on the microcontroller side. Even Arduino. I dismissed it for a long time because I misunderstood it. I thought I had to buy Arduino devices, then Arduino shields, then program them in the Arduino language using the Arduino IDE.