I've had a rummage on DIYA and not been able to find anything that can act as a guide on tools for those taking their first steps into programming Arduino or similar devices and wanting to do the usual write, compile, debug, release cycle with the least possible pain.
I have about 30 years experience programming in a variety of languages and on a wide range of systems. But not device programming. Never done it and needed a project to focus my mind on getting started.
So I began looking at devices to program and environments in which to do the programming. I quickly became despondent at the primitive nature of what passed as development tools. They were no better than anything I was using in the early 1990's.
It took time and a lot of swearing, but, eventually I found something that works for me.
So I thought I'd write a single post on what I've decided to use and why. I've focussed on what I liked, rather than A+B comparisons with other products or ways of working. After all, if you're comfortable with something, that's 90% of the battle.
Why not explain what you work with and why...
I have about 30 years experience programming in a variety of languages and on a wide range of systems. But not device programming. Never done it and needed a project to focus my mind on getting started.
So I began looking at devices to program and environments in which to do the programming. I quickly became despondent at the primitive nature of what passed as development tools. They were no better than anything I was using in the early 1990's.
It took time and a lot of swearing, but, eventually I found something that works for me.
So I thought I'd write a single post on what I've decided to use and why. I've focussed on what I liked, rather than A+B comparisons with other products or ways of working. After all, if you're comfortable with something, that's 90% of the battle.
Why not explain what you work with and why...
I use VSCode and PlatformIO, developing in C and C++ and using a Segger JLink Edu with a non commercial license.
The PlatformIO plugin for VSCode works well, there's broad support for boards and processors, initial setup is fairly painless with the correct libraries being downloaded, along with compilers etc. There's a good library browser and searching for, then downloading libraries is easy, Configuring builds for multiple processors is also catered for. There's a very active community if you need help.
VsCode handles C and C++ relatively well. There's full code highlighting along with rudimentary refactoring support. Code is checked as you type and, like a word processor, it highlights mistakes and mostly gets it right. Mouse over variables etc. displays the variable type and the comment associated with it. Jumping to definitions and declarations is possible with key-presses, as is renaming variables etc. You can search all the places where classes etc. are used. Code can be reformatted according to your layout preferences if you can get to grips with the willfully obscure preferences system.
It has lots of addins that you can install in a painless fashion. I found one that gives me the JetBrains Intellij keymap that's ingrained in my hands after a couple of decades using their UIs. It's not clear where VSCode ends and the PlatformIO plugin begins, something I consider a good sign in both VSCode and PlatformIO.
My overall impression is very favorable, had there not been issues getting stepwise debugging working with the Segger JLink, I'd have been up and running in a couple of hours. It's Still not 100% reliable and I suspect the reliability will depend on your target device. There seem to be problems with SAMD21 processors.
All that said, one I got the setup and burn-in done I've been able to concentrate on the design, code, and testing without worring about the environment I was working in. Which is how things should be.
VSCode and PlatformIO are free and I'll be sticking with them until I find something better. I have CLion and PlatformIO in mind, there's a one-off for Clion after a 30 day trial, JetBrains don't do a community version. Yet.
I chose C/C++ because I've got a lot under my belt. Familiarity counts for a lot when starting out with something new. If you're a programming noob Python might be a better bet. C/C++ are full of bear traps for beginners. Those unknown unknowns are there, ready to bite you.
The PlatformIO plugin for VSCode works well, there's broad support for boards and processors, initial setup is fairly painless with the correct libraries being downloaded, along with compilers etc. There's a good library browser and searching for, then downloading libraries is easy, Configuring builds for multiple processors is also catered for. There's a very active community if you need help.
VsCode handles C and C++ relatively well. There's full code highlighting along with rudimentary refactoring support. Code is checked as you type and, like a word processor, it highlights mistakes and mostly gets it right. Mouse over variables etc. displays the variable type and the comment associated with it. Jumping to definitions and declarations is possible with key-presses, as is renaming variables etc. You can search all the places where classes etc. are used. Code can be reformatted according to your layout preferences if you can get to grips with the willfully obscure preferences system.
It has lots of addins that you can install in a painless fashion. I found one that gives me the JetBrains Intellij keymap that's ingrained in my hands after a couple of decades using their UIs. It's not clear where VSCode ends and the PlatformIO plugin begins, something I consider a good sign in both VSCode and PlatformIO.
My overall impression is very favorable, had there not been issues getting stepwise debugging working with the Segger JLink, I'd have been up and running in a couple of hours. It's Still not 100% reliable and I suspect the reliability will depend on your target device. There seem to be problems with SAMD21 processors.
All that said, one I got the setup and burn-in done I've been able to concentrate on the design, code, and testing without worring about the environment I was working in. Which is how things should be.
VSCode and PlatformIO are free and I'll be sticking with them until I find something better. I have CLion and PlatformIO in mind, there's a one-off for Clion after a 30 day trial, JetBrains don't do a community version. Yet.
I chose C/C++ because I've got a lot under my belt. Familiarity counts for a lot when starting out with something new. If you're a programming noob Python might be a better bet. C/C++ are full of bear traps for beginners. Those unknown unknowns are there, ready to bite you.
I use PyCharm for Python, Visual Studio for C#, NetBeans for Java.
For C I prefer simple editor like Notepad++ and clang/gcc and valgrind/gdb.
I don't really care much about IDEs. I prefer the hard way.
For C I prefer simple editor like Notepad++ and clang/gcc and valgrind/gdb.
I don't really care much about IDEs. I prefer the hard way.
Last edited:
I use Visual Studio for web design and general PC programs.
C#, C++, ASP, Javascript, AJAX, .ent, .net core, WPF etc etc
For embedded stuff i use MPLAB X and Harmony.
C#, C++, ASP, Javascript, AJAX, .ent, .net core, WPF etc etc
For embedded stuff i use MPLAB X and Harmony.
NetBeans for Java
I've not used it in decades. Flirted a little when it first came out, thought it clunky, but found a neat little IDE called Kawa, it lasted long enough for the first release of JetBrains Idea, and using it was like I was at home wearing old comfortable clothes in front of a warm fire, never ever saw a reason to re/try anything else for Java.
Thankfully there's a free community edition **and** it's the basis of Google's Android Studio. Bonus!!!
I have heard good things about JetBrains, but NetBeans is fine for me. I might try it some day.
Still, NetBeans is better than Eclipse.
Still, NetBeans is better than Eclipse.
Still on training wheels here -- I use Flowcode.
First programming -- a bunch of "used" telco relays provided by Ohio Bell Telephone Co. that were made into an adder -- in the BW TV era.
First programming -- a bunch of "used" telco relays provided by Ohio Bell Telephone Co. that were made into an adder -- in the BW TV era.
I am coding small Atmels for some time. Started with eclipse, migrated to codeblocks. After a longer pause I found codeblocks unusable due to lack of supporting actual linux. Flashing with burn-o-mat is no option anymore due to permanent problems with java runtime.
Fed up by this I did a short google search how to compile on the commandline, wrote a small bash script that compiles and flashes the code that I edit with an arbitrary highlighting editor like kate ore whatever.
Btw I never used any kind of sw-debuggers to debug my code, so I do not miss that.
Fed up by this I did a short google search how to compile on the commandline, wrote a small bash script that compiles and flashes the code that I edit with an arbitrary highlighting editor like kate ore whatever.
Btw I never used any kind of sw-debuggers to debug my code, so I do not miss that.
Oh, the problem is I have GUI designed in NetBeans. From what I have seen and read UI Designer in JetBrains is not as good as NetBeans, which already isn't very good.I have heard good things about JetBrains, but NetBeans is fine for me. I might try it some day.
Still, NetBeans is better than Eclipse.
I'm moving more to manually code GUI anyway.
Many years ago, I used assembly language for 8051, AVR from Atmel, and PIC from Microchip. Now I use C language using Arduino and Keil.
For PC, many year ago, I used Pascal then Delphi and Visual Basic. But now, I do not make software in PC again.
For PC, many year ago, I used Pascal then Delphi and Visual Basic. But now, I do not make software in PC again.
In 1995 I wrote a PCBCAD program in DOS using 8086 Assembler I wrote myself.
I had to write some software for simple menu's.
All the CAD drawing was written in Assembler.
I had to write some software for simple menu's.
All the CAD drawing was written in Assembler.


Vim and about a dozen shell sessions.
That's the thing I think, whatever makes us most comfortable and gets the job done, but always open to something new.
I've not used VIM in anger for well over two decades, but in my Xenix days, Vi was all there was. Until I discovered a cut down version of Emacs. Jonathon's Own Version Of Emacs, it was small, fast and very portable, and had very good jump to compiler error chops provided you could regex (and we can all do that, right?). It was goodbye to Vi.
I mostly do Python. No IDE, just a plain ASCII text editor with syntax highlighting. Learning an IDE is not worth the effort for me, and in the end I just need to type the code, so...
Visual Studio works well for me.
How do you use it, and what for?
For Arduino and STM32, I just use the ArduinoIDE. There's plenty of example code floating around the internet to get going.
I find it is easier to use the preloaded bootloaders and the simple compile-upload function than manually compiling and farting around.
Software | Arduino
I find it is easier to use the preloaded bootloaders and the simple compile-upload function than manually compiling and farting around.
Software | Arduino
Emacs mainly, have used Pycharm (Jetbrain's Python environment) for various work and its good, but I couldn't get good enough key bindings to make it properly like emacs.
I hate mouse/pointer based text editing, its so slow/obtrusive with the visual feedback loop needed to move a pointer. If you've never used key-driven incremental text search you might not realize how powerful it is and emacs invented it AFAICT - and probably context-dependent autocomplete too!
I hate mouse/pointer based text editing, its so slow/obtrusive with the visual feedback loop needed to move a pointer. If you've never used key-driven incremental text search you might not realize how powerful it is and emacs invented it AFAICT - and probably context-dependent autocomplete too!
I use Visual Studio Code for nearly everything except Arduino stuff. Python, C#, C, Perl, etc. Since it's open-source it runs great on both my Macs and Linux laptops.
- Home
- Design & Build
- Software Tools
- Programming Environments, what do you use?