I'm pretty sure this has been answered before but as I am about to start a project developing software for an Arduino MEGA 2560, I am looking for opinions on the best IDE to develop the software.
After 3 tries, I'm currently using Visual Studio code with the Arduino extension but more importantly the PlatformIO extension which gives me breakpoints and a watch window. But, is there anything better and reliable out there?
Perhaps someone could publish a link to an article that already discusses this topic, or let's discuss it here.
Hi @anon24968741. I think any recommendations on what is "best" must be based on the intent and experience level of the user. For example, I would discourage a casual beginner with no experience with development from using the VS Code+PlatformIO extension option because I think the steep learning curve might cause them to give up before they are able to accomplish their goals. But for someone with a lot of experience it might well be a good option (I haven't used it so I can't provide an opinion on that specifically).
From the context of your post, we can guess that you are probably a fairly advanced user, but I think the discussion would be better if the type of user we are to recommend a "best" for was more clearly defined.
Hi ptillisch, You have a good point. Thanks for your feedback. I consider myself an advanced user although I have not written embedded code in 7 years. I prefer to read and write registers, write CAN, I2C, SPI and serial IO directly to the chip.
But I have been hired to help a startup company that has already chosen the Arduino and wants to use the Arduino libraries which for me adds just a layer of abstraction.
I'm just getting started so I thought the best way to start would be to ask what IDE'S people are using to develop and debug advanced real time systems.
Sounds to me as if this gig is going to be a problem; that is, if they are dictating Arduino libraries they will likely "balk" at your use of register-based coding; I know I would as a software supervisor, if my company intent was to avoid hiring a high-end coder for break-fix & maintenance after your initial code delivery. Side-stepping the defined API will create non-portable code, likely not what your client wishes.
My only advice, read your contract's fine-print carefully less you find out in the future you are liable for going outside the Arduino core wrapper.
I can understand why a customer would want the coder they are paying to use Arduino libraries, its very likely their investment in the code will be protected long into the future.
However there is always the problem that open source Arduino libraries might not be useable for 'commercial' purposes.
But then, just prefering to write to registers direct, does not help that much, since you would need to start from scratch for every device you wanted to use.
I asked this forum what IDE they recommend for Arduino development. Your speculation of what the customer wants is incorrect and irrelevant. If you have nothing of value to say, just please get back to work (if you have a job), or go write crap on another forum.
Something that should be noted is that Arduino IDE 2.x does have an integrated sketch debugger:
That said, the number of boards that have turnkey support is relatively small (currently limited to the "Arduino SAMD Boards (32-bits ARM Cortex-M0+)" and ESP32 platforms as far as I know). It is possible to add support to many of the other 3rd party platforms by simply adding a few lines to their boards.txt and platform.txt configuration files, but the developers of those project have yet to do so. Even though it is reported to be possible to use it with the AVR boards, support for debugging has not been added in the official "Arduino AVR Boards" platform so the Arduino IDE 2.x debugger is probably not so interesting to someone targeting the Arduino Mega 2560 if PlatformIO already provides turnkey debugging for AVR.
Hi Ptillisch, Thanks for the link. Great information. I believe I already have these debug features in the Visual Studio Code IDE with the PlatformIO extension but I will check it out more closely in the Arduino IDE. Again thanks.