@@boots7859 Sadly Visual Studio performs abominable under wine, if you manage to get it going at all. Perhaps it can work as a plug-in for MonoDevelop (aka Xamarin Studio aka Visual Studio for macOS, but then the Linux build) but that would also need some work from the plugin developer(s) or community.
You can use VS Code add-on Arduino, that way you can use on any OS. Good thing is that you can open any existing Arduino project with VS Code and whenever you want you can open that project with Arduino IDE again not like PlatformIO that create specific files for the project.
Disappointed with single platform tools getting coverage (especially windows), it's 2021. suggest this is better tool -> /www.arduino.cc/pro/arduino-pro-ide
20 years ago i worked for a company where we build JTAG Debuggers (for the Pentium CPU). The reason why you are limited to 4 breakpoints is that these breakpoint get serially shifted into 4 special registers inside the CPU. They are simple address comparators that finally can halt the cpu. There are just 4 of those registers, that's the reason why you can have just 4 breakpoints .. but that should be enough for most scenarios.
Thank you for clarification. It seems logic and another viewer mentioned the same fact. I did not know it. But I have to confess that I fast get 4 breakpoints because I keep a few "strategic" ones. But I learned to deactivate some of them if I do not need them anymore. Like that the stay where they are...
@@AndreasSpiess Even today, I can only set a few breakpoints on my ARM devkit at work before it complains 'no more resources'. Thanks Texas Instruments.
I was a Visual Studio developer when I started Arduino in 2010 and was happy to be able to use my preferred development environment with Visual Micro. I lost track of it when I started with ESP8266. Thank you Andreas for bringing it back to my mind.
Danke Andreas, it's great to have you do these overviews and comparisons across different working methods and environments, a big help in pointing in the right direction for different kinds, and levels, of projects!
Thank you Andreas for your information video. I have been using Visual Studio for many years and used with its C++ debugging. I will start to test Visual Micro as an IDE for my Arduino projects.
I give them credit for the work they put in on Arduino IDE but going up against Visual Studio with vMicro extension is an uphill battle to say the least.
Looks like this IDE might be the sweet spot between ease of use and capability I have been looking for. I am installing now. I gave your channel a mention when I signed up for their forums. Thanks Andreas!
After your video, i started using Visual Micro; i spend hours converting arduino sketches, and i wasn't sattisfied; because of the errors and the lots of work. switching was a great option; thanks for your video, it saved me a lot of time!
@@AndreasSpiess did you get enough of a look at it to form an opinion that is worth a video? in my opinion it having auto complete already makes it a thousand times more useful than the current arduino ide
@@TheScarvig from what im seeing...the 2.0 beta is built on the same VScode core as this ...so its prity much the same.....just doesnt have all the window features..that IMO are unnecessary ive also noticed M$ is pushing the VSCode everywhere lately... Windows, Linux, RPI, and now MCUs
I tried to use it but for example autofill did not work after deleting a letter and stuff like that. Nothing for a fair review for the moment. It compiled a complex ESP32 sketch with many libraries. This part seems to work. They also will not create an ESP32 debugger interface and hope, somebody else will do it. I will have a look at it from time to time.
I have used Visual Micro for over 11 years now, and have not found anything that I couldn't do. To understand the environment it is equally complex and has a long learning curve to really know all the features. So, it is the devil you know, vs the devil you don't know. I like having compatibility with Arduino IDE, having this feature defeats the ability to control libraries versions the 'easy' way. Having Arduino IDE compatibility means you can hand off source to a newbie so they can make changes easily. Excellent video as usual.
Thank you for sharing your experience. I found the learning curve less steep as with PlatformIO (to get something working). But it has less possibilities for large projects where I would prefer PIO.
@@AndreasSpiess I have had no problems with large projects with Visual Micro + Visual Studio. I agree, getting VM + VS to work is a lower learning curve. However, you can get into trouble with either tool equally. :-> Both are good solutions.
Thank you Andreas for this. Using hardware instead of serial looks really cool. I can't tell you many times I've forgotten the Serial window was open and watched my upload to the board fail.
4 breakpoints is not a limitation of gdb, when running a program from flash you are dependent on breakpoint support from the jtag hardware inside the chip. As the debugger is not an emulator, it cannot stop program execution by it self. It actually writes the address of the breakpoint to a register in the chip. Ask the chip to continue running. And then waits for the chip to report back that a breakpoint was reached and has halted. It is different if program is executing from ram. Here, when you set a breakpoint, the debugger will replace the instruction at that location with a break instruction (storing the real instruction in its own memory), and using some clever replacement make this invisible to you. Thus not being dependent in a number of break regusters in a jtag unit, you have close to unlimited breakpoints when running in ram.
@3:49 in your video - for my large ESP32 project this "deep library search" was very very slow - about 1 minute - I found you can turn it off though (option is in the Visual menus) - and through the menus manually select the libraries you are using. Compiles then in seconds. For larger projects, with .c or cpp as well as a .ino file - only extra step you need to do, that's not documented, is as well as selecting in the menus - you need to include all .h files you need throughout all the project in the .ino file - even if they are not required in that ino file but required by some other .c file in the project - only if they are selected in the menus and referenced in the .ino file are they passed to the linker. Apart from that small thing that tripped me up - Its a really great IDE overall, much better than all the alternatives I've tried.
Good to know. Maybe I did not have problems because I always include all libraries as well as .h files at the top of my .ino file (as I do with the Arduino IDE). Compiling took about the same time as with an Arduino IDE and the compiler sometimes printed "using a precompiled version" or so.
VERY NICE - $12/yr - sold! *Thank you for sharing your knowledge and skills with us.* I needed this break from my FLCCC health study. Please take care of you and yours.
You folks have some sort of "early access to the videos" arrangement in place? I wonder how these 2 comments on this video were posted "1 day ago" when the video itself appears posted only "53 minutes ago"
+1 for slobber. Now it's my favorite one for hobby projects. Was found it after struggling from arduino ide. Only recommendation to install it as a readymade bundle from eclipse.baeyens.it/installAdvice.shtml Then it works smooth. As plugin I was failed on windows and linux.
Just a hw debugger is not available with slower just out of the box. But it's possible, I even tried it before with esp32. But I remember it was annoyingly slow somewhy.
I'm using Visual Micro for 3 years now and for people accustomed to Visual Studio this is simply the best. Platformio has barely a GUI. Everything is done via dozens of console commands and there isn't even a shortkey chart available for people with a non-US keyboard. I prefer comfortable software.
@@AndreasSpiess I just wanted to give VM a second voice in the comment section since it was foreseeable that Platformio fans would run wild in the comments like when Heise.de mentioned Visual Micro. Over time I had a lot of conversations with the author about problems I had and he really tries to help.
Why not use Atmel Studio? It is a version of visual studio specificsllg for atmel mcus. And they added in arduino functionality a long while ago making visual micro obsolete. Only thing I dont know is that if there is debug capability without a programmer, in that case visual micro still has its place. But they have a visual micro plugin for atmel studio as well.
The best approach i found is to use the best of both worlds: 1. Open Arduino IDE (Advantages: easy to use, libraries available, default IDE and therefore many tutorials online in case of errors, all possible boards supports, ...), go into the settings and enable external IDE. 2. Open CLion (Advantage: High Level C++/C/Python IDE with autocompletion, ClangTidy, ... support) on the project from above and program here. 3. Compile in the Arduino IDE and use the Serial monitor from it.
BTW, Visual Micro also works in Microchip (Atmel) Studio. It is an excellent product, which has matured over many years. Very reasonable licensing and pricing too. 👍🏼
Andreas, again thx for the excellent videos you create ... first thing I watch Sunday's after my breakfast :) I've been using the Arduino IDE for 4-5 years and gave PlatformIO a try last year, mainly because I had to deal with specific Library-versions & different hardware. It did work, but as a hobbyist I found it too complex for me. Visual Micro seemed an ideal solution and I gave it a try; I've created a Solution with one Project inside as you showed in your video. I used the 'Clone for project when using libraries' with the 'Library versions',, this is exact what I need and it works fine. Gave the (serial) debugging a try and again excellent. But there is one thing I cannot find how to do, probably because I am not used to work with VS 2019 / Visual Micro : in the Arduino IDE, I regularly use the 'Save as ...' with a postfix version (-v1, -v2, ....) to have a copy of my versions while developing. But I cannot find how to do this with VS 2019/Visual Micro - if we keep the one solution/one project structure, I need to clone or copy the solution and rename (all solution/project files)? Although having multiple versions of a project in a solution could also work for me ? But there does not seem to be easy method for that - using a full-fledged version-mgt system will again make this too complex ? Do you or anyone else have some recommendations how to handle this ?
Maybe you have a look at the github implementation of Visual Micro. It would give you the possibility to create new "commits" instead of versions. I also use Visual Micro for the moment because it is backward compatible with the Arduino IDE.
@@AndreasSpiess I will give the github implementation a look. But currently I am looking into the one Solution containing multiple project versions; In Solution Sketch, I start with proj sketchv1; then a create a new project sketchv2 and copy my ino & .h files into the new directory. For the libs I use the 'Clone for solution when using libraries'. Not as easy as the 'Save as ...' in the Arduino IDE but workable. I'll see how this progresses ...
Many Thanks for all your sharing. I paste the answer of Simon from vm for a post related to development under linux. "Visual Micro is only compatible with the full Visual Studio 2019/2022 editions published for Windows at present to our knowledge."
I never used Arduino IDE for Arduino, even 7 years ago. I (almost) always use Eclipse for almost everything, like C/C++/Java/JS/HTML/PHP/Perl. Today I use Eclipse for Arduino boards and for ESP32 boards. It's very similar to Visual Micro
@@AndersJackson Usually I go to Help -> Eclipse Marketplace and search for suitable plugin. There are instructions for ESP32: github.com/espressif/idf-eclipse-plugin
Another great video ... good to have your input. I bought Visual Micro a long time ago. I had it installed on Atmel Studio (which was an option.) As you point out, it works without additional hardware purchases, (a selling point for me at the time.) But, while serial debugging seemed like a really cool idea, it has some serious limitations. Also, I found that with Visual Micro, every time there was an update to the Arduino ide, Atmel Studio, or Visual Micro ... things would break. At times, it could be really frustrating. Finally, I bought an Atmel ICE programmer/debugger (and Visual Micro became redundant.) The Atmel ICE costs ... but it just works!, and Atmel Studio is a wonderful piece of software. Of course Atmel Studio only handles Atmel products, so .... I know that a lot of people love the idea of having an 'all in one' solution. Intuitively however, software which tries to do everything, is bound to have some issues, which the creators will struggle to keep up with. For me; I'm happy to use Atmel Studio (with ICE) for Atmel products, STM32 CubeIDE (with STM link) for STM products, PlatformIO (with ESP-PROG) for ESP32, and even Arduino (with Serial.write() ) when I just need to throw something together quickly ... since each of these environments works 'really' well for the supported hardware. I applaud the guys who make Visual Micro. It sounds like they have improved it considerably since I last used it, and perhaps it's for some people, but probably I won't be switching.
Thank you for sharing your experience! For my use case (only Arduino compatible projects), mostly on the ESP32) it fits my purpose because of the debugger and the backward compatibility that I can use the Arduino IDE to show my projects on my channel.
Hi Andreas, I have used both Visual Micro and PlatformIO extensively and for large projects. I'd like to add a few things to your comparison. 1. The serial port in VM is much more stable than PIO. You can plug the device in and out of the USB ports, and the serial monitor just keeps working. Not so with PIO. 2. On a multi-monitor setup, Visual Studio works much better than Visual Studio Code. The latter does not allow 1 instance to have several windows, whereas Visual Studio allows you to arrange the windows any way you want it, even over multiple monitors. 3. In Visual Studio you can test (HW independent) library code by compiling it for windows. All the powerful debugging features are available. You can use the built in unit testing framework to thoroughly test your libraries. 4. I use multiple projects in one solution a lot! It is the perfect way to write smaller test-programs to test-drive your library components. This way your main program, your libraries and your test code stays together. (a simple example : when you develop an arduino library, the library itself and the example projects are all separate projects in one solution). Of course it is a personal matter, to some extent, but I've found myself always more productive on VM than on PIO. Thank you for your inspiring video's and I hope to meet you once in real life somewhere, someday where we can talk about our projects. Pascal
Thank you for sharing your experience! I never used testing feature. It is still on my list. But I do mostly projects and not libraries, so the testing is often done with "the real thing"...
Simple: PlatformIO is better for bigger projects and programmers. Visual Micro is easier to learn but still has auto completion and a debugger. And Visual Micro is Windows only.
@@AndreasSpiess How about saying what platforms the IDE's run on???? Kind of important. It appears that Visual Micro is a Windows only product, where as many others run on all three of the important platforms.
@@DavidProffer Its obvious? Visual Studio is windows only, visual micro is a VS extension, are there really programmers who dont know what visual studio is?
I have used Visual Micro when I was a Windows user. It was simple setup and worked flawlessly. When I went to a linux desktop I initally used the Arduino IDE but now I use PIO. You can spend many hours installing, configuring and troubleshooting IDE's when they don't work. I think the arduino IDE is fine for most beginner to intermediate users.
Thanks Andreas. I've finally had enough of the Arduino 2.X IDE - and was wishing it was more like Visual Studio. It looks like Visual Micro might be the answer!
Thanks for getting this in my pc :) I am an ex light developer (C, Java etc) and use the very robust Eclipse IDE with the Sloeber plugin but this looks pretty nifty as well for VS
I use PlattformIO and CLion. The latter is expensive if you buy the commercial version, but there are free licenses available for educational or open source projects
I was an Arduino IDE user when that was the only feasible option for a beginner to compile and upload sketches. With arduino-cli I can now do the same but in any editor, it still takes a bit of work to have autocomplete working right but it's miles better than relying on the compile button to check errors. My main issue with these complex or user friendly IDEs is that they often hide some of the details of how the code is compiled and it often makes it difficult to have a project that can be cloned and then built by anyone, this why I'm sticking to vscode because it requires that I add the necessary scripts and configuration to the project.
I Like the Arduino-cli too and If you switch between different devices it helps much for holding things transparent, but it could bei a good Idea to Share Arduino-cli Scripts or templates.
Finally. You’re doing some useful stuff here. It will help people get to a new level. Please stick with these sort of videos. No more begging Chinese companies for free crap. No more ridiculously complicated radio BS that you clearly don’t understand (it’s obvious to radio people). Stick with things that RUclips viewers can handle. Maybe I will be able to use your work with my students again.
@@AndreasSpiess No, I haven't tried it yet, partly because of the beta status, partly due to lack of time/need. I lost interest in Arduino a bit after working with manufacturer software to create faster code (at the price of a bit more effort), but I am looking forward to trying the new Arduino IDE on my next project, even if only for a day and switching back. The old IDE was sub-par IMO, I expect the new IDE (once the bugs are ironed out) to be a blessing for makers. Thank you for the quality videos BTW, they have been a reference for me, and I'm sure many others. Kudos to you.
Have been using VM now for a couple of weeks and like it quite a lot. One thing is that I have not been able to write a littleFS file system for an esp32. I carefully followed the skimpy directions on the VM website and always get a can't find a tool error. A work around is to set up the littleFS tools in the Arduino IDE (per another good online video) and write the files and file system with this environment. Once the file system is in place files can be read and written from inside a VM C++ program with the appropriate libraries. Another issue I came across is that the serial interface stops working for output if all the pins are setup as Digital IO (required for the board I am designing). Not sure yet which pins are the problem.
As always, you have provided an excellent single point of reference for me when I have decided to try something out and postponed (procrastinated ?) the learning, knowing that I will always find the answers if I search your videos. Thank you, Andreas! I have been using VS Micro since the early days and VS itself even longer. In fact I did not start using Arduinos till VSMicro brought intellisense and a mature GUI to the platform. After being utterly spoiled by using PIC micros with their superb dev platform that included step/trace debugging, emulators (you could test most code without hooking up the micro) I was disappointed with the 'Duino. In studying JTAG debugging with the ESP32, I noticed that the IO Pins used are also the ones used for accessing the 4-wide SD-MMC bus - I wanted to mention that this is one more exception where it may not be possible to attach the debugger.
I agree with the pins. This is why I created an Excel sheet where you can select all sorts of criteria to find the pins you (still) can use. The JTAG pins are one category which must not be used if you want to debug.
I don't know if it's just me, but when using platform IO, I would regularly run into the problem "I'm running a project, but a completely different one launches" and I spent hours trying to fix it and never managed to do it, so I jumped ship.
I'm not sure my problem was the same one, but I also really tried to use it but there would always be something that wouldn't work... I'm not that good of a programmer though, so maybe it was myistake
@@jaspervandenameele4834 Well, consider myself moderately experienced, so I don't think it's just you. I had some issues with variables from one project being detected as duplicate names from another project. So my overall experience is that it's a buggy tool. (For everyone reading, I did search online for help, I tried the solutions, but the problems persisted)
Well, easiest solution: Just have one project in your workspace. There is a way to tell PIO which project to compile if you have multiple ones in your workspace, but I usually cannot remember 😅
@@RoterFruchtZwerg well, my workflow required multiple projects, and I always assumed it would compile the selected project :( I never managed to get it to work properly.
@@nikolatotev I think the "Switch PlatformIO Project Environment" Button below the editor, right next to the Serial monitor and upload buttons, is what u are looking for
VS has better visualization when working with hundred #DEFs. Deactivate defs stay in light glow. VS also record more than 2MB of serial print when terminal is open.
Thanks fot the sunday-gem! I always wonder: is there a possibility to completely virtualize the esp32/arduino, to refine the code, before even uploading? This would make things so much faster!
I cannot imagine to virtualize my MCU because it usually interacts with the environment (often in real-time). So I would use a lot of time to simulate this too. Hardware debugging seems to be a good compromise to learn how your code behaves.
I know Visual Micro from Ben Heck, looks cool and easy to use. In my job we use VSC + Platformio, everything we make is ESP32 based, we love those little bastards (tons of flash, OTA, WiFi, dual core, cheap as chips). We config the projects as Arduino framework so we can use the libraries for Arduino IDE and mix some FreeRTOS goodness. Tabnine is a extension for VSC that autocompletes code based on AI, it's pretty funky, sometimes reads your mind and write the whole thing itself.
Just another IDE. It does not work for me. I threw a project to it and it does not build! It does on ArduinoIDE and VSCode. I will play around for a short time, maybe some settings in preferences somewhere. At some point, I decided to do all my programming in VSCode and that works in 99% of the cases.
I did a quite big project with many libraries and it compiled. It was more difficult to understand to debug a multi-core ESP32 project where I had my fair share of problems... But VSC is also a good thing...
. If this was handy before,I would've stayed with MicroControllers, but now I've moved on to SBCs like RaspPi. I'll remember this when I decide to go back to them. Thanks Andreas! 😊 .
I bought a perpetual license too when it first came out years ago, but after switching a couple of computers and a couple of hard drive failures and reinstallations the author won't reset the license anymore and told me to buy it again. Not too impressed. I switched to compiling and uploading within my Sublime Editor instead. (Arduino's editor is terrible!) I miss the days when you buy a program and you didn't have to activate it every time Windows did a major update, or something in your computer changes.
Hi Andreas, thanks for yet another well made video. Being non-free and based on the arcane Visual Studio makes it non appealing for my open source projects (as opposed to Visual Studio Code + platformio).
Thanks for Video I'm C# developer working with VS from 2000 Arduino just my hobby doing small projects in free time great what now can use VS instead of Arduino IDE I like Arduino IDE but VS way too superior with debug and code features before compile . I doubt Arduino IDE can catch VS as Microsoft already ve put ton money in VS and will continu its their core product line. Again special thanks to you Andreas Your videos saving ton of my time and you doing that with A++ Quality.
It sounds like most of those features (the code completion, smart rename, etc) are also available in platform IO. Other than the backwards compatibility, and less steep learning curve, does Visual Micro have anything that Platform IO doesn't have? (I'm annoyed with the Arduino IDE and want to use something else. I use VSCode and Visual Studio for work, my preference is VSCode. I'm trying to weigh up if it's worth skipping Visual Micro and using Platform IO)
If you are a programmer, PlatformIO is a good choice. Visual Micro is easier to use for a non programmer and, because I will continue to use the Arduino I DE on the channel, I will use visual micro because of its backward compatibility
It's not about bills. It's about flawed business model or deep pockets. Either way, we just became beta testers for them. What if Arduino IDE became paid?
shift-F11 did not help in my case :-( Somehow the debugger does not have the information to which code the program counter belongs. If the ESP is not crashed, continue sometimes helps...
Does it support compiler directives like #ifdef, #else, etc?. I was unable to get platformio to do this. I like the idea of separating the serial output window from the main ide. Again I was unable to figure out how to do this on platformio.
You are right. But sometimes I feel the details are not needed but the overview is important. That is why I change resolution during the video. For sure, this video is not for watching on a Smartphone.
Andreas zooms in on things that you might need to read, but the tiny print on the overview doesn't much matter as he's just trying to show what various sections are for. I think that he did a good job with this video, but he definitely has a larger monitor than I do ;). Mine is nearly 20 years old, though.
unfortunately being on linux cannot use this tool. so perhaps a video on platform io could still be worthwhile. or a reference to find other recommended tutorial series for getting started with pio. unfortuately my installation seems to have become broken now! since it wont let me import a simple arduino sketch. or i am missin doing something obvious. but i have no idea why! its all so complicated. it becomes rather confusing all the different layers of projects, workspaces, platforms etc. for example trying to stop project A from getting mixed up with project B
or it could be some platform or plugin or libraries dependancies breakage. or it could be some otherbreakage in all the scrambled up insides of PIO. i have no idea anymore! maybe it could be more robust inside of some kind of a sandbox system. or container system (docker etc). where you could have a clean python, and clean all other dev environment. that could be recreated and 'cleaned' like a refresh. so just push a button get back to a working state. and with projects mounted into docker volumes. IDK its just another foolish idea at this point. hehe
I have a question about Visual Micro and Platformio : Is there a debug software feature as with Microchip MPLAB IDE ? I mean a simulator ONLY feature without any board connected to just check the program with variable watches and breakpoints. (same way to debug a windows or linux program)
How easy is it to add own boards instead of the predefined boards? This is the only thing keeping me from fully switching from Atmel/Microchip Studio to PlatformIO for the AVR-chips (I am not using the Arduino-framework for those...)
I used Visual Micro for a year. It's very good, but if you're looking to program other micros as well, using their native frameworks (ie. ESP32 with ESP32 IDF, STM32 with HAL, CMSIS) with the advantages of Visual Studio, then take a look at VisualGDB Embedded. It's not free, but worth it IMHO, it pretty well takes care of everything for you without all the tinkering.
I use VisualGDB for native STM32 development. But we are talking about Arduino and last time I checked there was no usable arduino integration in VisualGDB. I'm not sure if Visual Micro and VisualGDB can coexist. I installed them on separate VMs to avoid the risk.
I decided to stick with the Arduino IDE for this channel because otherwise I would have to have a lot of different frameworks, example projects, and libraries. This is different for professionals, of course.
@@MetalheadAndNerd Yes, there is. Besides standard Arduino boards, I've done ESP8266, ESP32, and STM32 blue pill using the Arduino framework in VisualGDB. Select your board and VisualGDB will download/install what's necessary. It's an excellent turnkey solution IMHO.
@@AndreasSpiess Sorry, I don't know, I paid the $99us for the Embedded version, it's half for academics(?). For me, the $ is worth the hassle free setup. I'm mostly using STM32/HAL/st-link these days and it works very well. They do have a 30 day free trial. The support also appears to be very good. OT, but it also now supports the Pico.
I wish IDEs would add smarter autocomplete. If I already have 1 " and try to add another one before it or a closing " why does it always add an extra 1. There should be a check if there is already an open tag. Visual Studio and many other IDEs do this, and it is enough to make me turn it off. Even though it is only 1 key press to remove it (although then both can get removed) I would rather always have to add the closing tag, than sometimes have an extra one added at random when I am not expecting it.
It’s always funny to see how people can discover standard IDE features when coming from limited/starter platforms .. that’s just like JS user discovering types ,)
For me it was not a discovery. I used a debugger in the 1980s and missed it when I started with Arduino... But of course you can only miss things you know.
I started using the Visual Studio Code IDE and Arduino CLI for compiling which is an easy free option. However, Arduino 2.0 is in its beta stage and has significant improvements, the debugging part is the one I don't know if they support.
Sorry this time I cant follow Your great suggestions. No Linux version of this and Platform IO not backward compatible and not yet mainstream .... Will stay walking barefoot 😉
Because I use the Arduino IDE for the channel I want to open the same file with either Arduino IDE or my development platform. I found this works better with visual micro than with PlatformIO.
Now I would be very interested what your point of view is on the ESP-IDF in VSCode. ☺️ Some stuff seems to work only on that like Tensorflow on microcontrollers.
Very good video for me. I had no idea about this tool. Options are nice to have. I love platformio but the lack of backward compatibility is a drag if you want to share your projects with people who don’t want the learning curve.
I just started playing with ESPs and Arduino Boards and I quickly was annoyed by the awful compile times in the Arduino IDE. Even small programs took ages to compile. Some days ago I switched to PlatformIO, which is a really cool free IDE that integrates into VS Codium or Visual Studio Code under Linux and Windows (I guess Mac is probably supported, too). The compile time went down to 1 or 2 seconds, even with some bigger libraries. Serial monitoring, library and board/sensors support is very similar to the Arduino IDE, you can easily install needed packages for your hardware.
Great video...I find Platform IO really great but remembering all the stuff for it is a pain...I will give this new one a go....I think it looks a lot better on your report :)
Could you please do a video only about debugging with breakpoints i.e. which boards and which IDEs support what kind of debugging? I find that the ESP32 HW debugger is irreplaceable for me, but a lot of the times I do not need such a powerful board for a simple project.
PlatformIO and Visual Micro support hardware debugging. I do not know other IDEs which do HW debugging. So I am no help. ESP32 and STM32 can be debugged. But I am sure other boards, too. Just look if they support JTAG or SWD.
I used Visual Micro at first when I started my journey back into Microcontrollers a few years back. I understood it was free software, only to be surprised one day it was demanding money to open my projects.. So I switched quickly back to Arduino IDE and, grit my teeth and got on with it. Now don't get me wrong, I probably would not mind paying if (A) it was clear upfront before wasting time on it, and (B) The software was really good. But actually I found the how interface a little disappointing and clunky, I can see those guys have put thier hearts into it, but I guess my expectations may have been to high given historical experience with large projects in visual studio. I have started using the PlatformIO and so far really like it. It would be interesting if you did a real hard feature comparison between PlatformIO, Visual Micro and The next generation Arduino IDE. Seems these things have been out in the wild long enough for a fair comparison to be made. You could also introduce the free IDE's as available from the makers of the STM,32 ATMEL and ESP chips. I took a look a couple of them, they are not bad with the one for ATMEL very strong, but for me the better answer is to leverage the common platform for all my microcontrollers as the benifits far outweigh the compromises in nearly all cases.
For the moment, PIO or Visual micro are for bigger projects with a clear tendency towards PIO because it is free. And for the small projects it still is Arduino IDE.
@@AndreasSpiess IFor me, I will only use Arduino IDE for legacy things and testing something as a known good. I managed to get all of my 8 types of microcontrollers working in PIO, making a test project for each. I don't think I would ever open Arduino IDE again to make a program, even for small stuff, fiddling around with the microcontroller setup each time is just to painful.
Hello. I have a question: I have a project folder in Arduino IDE which consists of several .ino files (in their folders) and the whole folder is in git (and on github) What would be the right steps to create Visual Micro Arduino project from this? So that I could work with it in Visual Studio using all VS IDE benefits OR sometimes in Arduino IDE as needed flawlessly? Is it possible at all?
I've used most versions of visual studio IDE (was called VSC) since version 1 on windows 3.1 But in 2012 went to full time linux boy. That was so very hard saying good by to it. best IDE ever! So glad they now do Visual Studio Code for all platforms. Just wish they had not given it the same name as the original. Very confusing. They are very different. Looks like visual micro is a SQU of visual studio IDE.
Great video! I have had so much trouble debugging eps-IDF and ADF and was hoping this would be the answer. After installing it seems visual micro wont let me select my programmed. when I hit the drop down and select esp-prop it goes back to no programmer. Another issue, when i load my project folder and try to build it only shows "run code analysis" not build or build all. Any help would be greatly appreciated, have spent days on this so far with not much progress. I have tried VS code and eclipse with plugins.
Good that comes alternatives for Aduino IDE, it creates competition and AIDE have to wake up from sleeping beauty sleep. I use AIDE, and not planning to swicth so waiting for AIDE 2.0
@sualazzo: Did you use the 2.0? I tried it and for example auto completion did not work after I deleted a letter. Maybe I had bad luck. And looking at the forum there is a lot of work ahead. A complex ESP32 sketch compiled ok. So this side seems to be ok. And we will not get an ESP32 debugger from Arduino. They encourage the community to write one.
Espressif has very good support for ESP-IDF in Eclipse. There is also an Eclipse plugin for Arduino from Jan Baeyens. Excellent tool, with some small exceptions. I might be mistaken, but free visual studio favours like a cheese. Perhaps there is a trap somewhere nearby.
I tried Eclipse a few years ago but the learning curve was too steep for me compared with potential rewards. The Arduino IDE pro seems to use it. So maybe I give it a try when it is out of beta...
Question: I got an ESP32-Prog and it shows up on Windows 10 Device Manager as two serial ports.... so am I correct to assume that I do not need to use Zagid as shown in your earlier video?
I assume you found out that the debugger does not work with serial devices.... I keep one as a serial device which can be connected to a board without Serial to USB chip.
Electron-based applications *really* took over!!! 😬😬 Chromium instances are really heavy, my personal preference is still stick over old C/C++/C#/Java based applications for almost everything. Any thoughts over such trend, Mr. Spiess? Thank you for the always brilliant content!!!
I get the feeling, but just imagine how much fewer pieces of good enough software would exist without something like electron? Particularly when it comes to easily implementable and highly customizable software that actually looks good, that takes way more experienced dev hours to do natively and thats before you talk about being cross platform. Sometimes it's good to accept that tech allows us to be inefficient efficiently. A text editor no longer needs to be super efficient. It can be just ok, because 2ms vs 50 is barely noticeable for loading a text file.
@@AndreasSpiess maybe I am just thinking a bit beyond, but as applications get heavier for the host PCs... you will eventually have to have even more powerful machines in order to program your microcontrollers. And considering that Raspberry Pis are already considered kind of a host machine, running a heavy application on Raspbian will take its toll eventually. That is what I thought behind my first rationale!
3 года назад
Just as a note, because I guess many viewers are confused Visual Studio != Visual Studio Code Visual Studio is the "high end" IDE from Microsoft. It's very powerful. You can imagine it like the Eclipse IDE. Visual Studio Code is a very slim IDE, it's good enough for most things.
Why not just use Atmel studio? On avrfreaks they said visual micro was only useful until atmel studio implemented arduino. Atmel studio is a version of visual studio specifically for all Atmel MCUS. What I cant answer right now is if atmel studio has debug capability without a programmer, which would be the only reason to use visual micro. But there is also a visual micro extension for atmel studio.
Visual Micro only works on Windows. I should have mentioned it in the video. Sorry for that.
Anyone know if it works under Wine?
@@boots7859 Sadly Visual Studio performs abominable under wine, if you manage to get it going at all. Perhaps it can work as a plug-in for MonoDevelop (aka Xamarin Studio aka Visual Studio for macOS, but then the Linux build) but that would also need some work from the plugin developer(s) or community.
You can use VS Code add-on Arduino, that way you can use on any OS. Good thing is that you can open any existing Arduino project with VS Code and whenever you want you can open that project with Arduino IDE again not like PlatformIO that create specific files for the project.
Disappointed with single platform tools getting coverage (especially windows), it's 2021.
suggest this is better tool -> /www.arduino.cc/pro/arduino-pro-ide
@Chris: Did you already try it?
20 years ago i worked for a company where we build JTAG Debuggers (for the Pentium CPU). The reason why you are limited to 4 breakpoints is that these breakpoint get serially shifted into 4 special registers inside the CPU. They are simple address comparators that finally can halt the cpu. There are just 4 of those registers, that's the reason why you can have just 4 breakpoints .. but that should be enough for most scenarios.
Thank you for clarification. It seems logic and another viewer mentioned the same fact. I did not know it.
But I have to confess that I fast get 4 breakpoints because I keep a few "strategic" ones. But I learned to deactivate some of them if I do not need them anymore. Like that the stay where they are...
Btw: The JTAG debugger you get today for
With such things we see how lucky we are today. I highly integrated chip does the thing for a few dollars :-)
I always feel amazed when i see epic tech comments from people who made all these technologies back in the days. Cool!
@@AndreasSpiess Even today, I can only set a few breakpoints on my ARM devkit at work before it complains 'no more resources'. Thanks Texas Instruments.
I was a Visual Studio developer when I started Arduino in 2010 and was happy to be able to use my preferred development environment with Visual Micro. I lost track of it when I started with ESP8266. Thank you Andreas for bringing it back to my mind.
Same as with me.they lost me with the appearance of the ESP8266...
Danke Andreas, it's great to have you do these overviews and comparisons across different working methods and environments, a big help in pointing in the right direction for different kinds, and levels, of projects!
Bitte, gern geschehen!
Thank you Andreas for your information video. I have been using Visual Studio for many years and used with its C++ debugging. I will start to test Visual Micro as an IDE for my Arduino projects.
Visual Studio != Visual Micro.
The debugging of the ESP32 works quite well!
Arduino 2.0 beta is coming and has a new look and some serious improvements over the previous version.
True. I have it on my "radar". But currently it still needs a lot of work.
Well let's look forward to it.
I give them credit for the work they put in on Arduino IDE but going up against Visual Studio with vMicro extension is an uphill battle to say the least.
Looks like this IDE might be the sweet spot between ease of use and capability I have been looking for. I am installing now. I gave your channel a mention when I signed up for their forums. Thanks Andreas!
You are welcome! I hope you will like it.
After your video, i started using Visual Micro; i spend hours converting arduino sketches, and i wasn't sattisfied; because of the errors and the lots of work. switching was a great option; thanks for your video, it saved me a lot of time!
I am glad the video was helpful.
Arduino has realsed an Arduino idea 2.0, still in beta but maybe hoy could give it a try
I did it. Good direction, a long way ahead...
@Bryce Ahmad @Marco Drake why would anyone hack somebody's profile? Go see a psychiatrist, you have issues.
@@AndreasSpiess did you get enough of a look at it to form an opinion that is worth a video? in my opinion it having auto complete already makes it a thousand times more useful than the current arduino ide
@@TheScarvig from what im seeing...the 2.0 beta is built on the same VScode core as this ...so its prity much the same.....just doesnt have all the window features..that IMO are unnecessary
ive also noticed M$ is pushing the VSCode everywhere lately... Windows, Linux, RPI, and now MCUs
I tried to use it but for example autofill did not work after deleting a letter and stuff like that. Nothing for a fair review for the moment. It compiled a complex ESP32 sketch with many libraries. This part seems to work.
They also will not create an ESP32 debugger interface and hope, somebody else will do it. I will have a look at it from time to time.
Love your channel! Thank you very much! Greetings from Bavaria
You are welcome! Thank you for your kind words.
I have used Visual Micro for over 11 years now, and have not found anything that I couldn't do. To understand the environment it is equally complex and has a long learning curve to really know all the features. So, it is the devil you know, vs the devil you don't know. I like having compatibility with Arduino IDE, having this feature defeats the ability to control libraries versions the 'easy' way. Having Arduino IDE compatibility means you can hand off source to a newbie so they can make changes easily. Excellent video as usual.
Thank you for sharing your experience. I found the learning curve less steep as with PlatformIO (to get something working). But it has less possibilities for large projects where I would prefer PIO.
@@AndreasSpiess I have had no problems with large projects with Visual Micro + Visual Studio. I agree, getting VM + VS to work is a lower learning curve. However, you can get into trouble with either tool equally. :-> Both are good solutions.
Thank you Andreas for this. Using hardware instead of serial looks really cool. I can't tell you many times I've forgotten the Serial window was open and watched my upload to the board fail.
I still use serial for debugging if I want to have summarized output, for example. Downloading via debugging HW is pretty cool.
so much input, right after I found some grip to platfirmio. Seems, this is what grey and rainy weekends are made for ... Thanks a lot.
You are welcome. If you are ok with PlatformIO it is no need to change, I think. If PIO is hard for you, I would give it a try.
Thanks Andreas, this is very helpful! I always look forward to your postings.
Glad to hear that!
4 breakpoints is not a limitation of gdb, when running a program from flash you are dependent on breakpoint support from the jtag hardware inside the chip.
As the debugger is not an emulator, it cannot stop program execution by it self. It actually writes the address of the breakpoint to a register in the chip. Ask the chip to continue running. And then waits for the chip to report back that a breakpoint was reached and has halted.
It is different if program is executing from ram. Here, when you set a breakpoint, the debugger will replace the instruction at that location with a break instruction (storing the real instruction in its own memory), and using some clever replacement make this invisible to you. Thus not being dependent in a number of break regusters in a jtag unit, you have close to unlimited breakpoints when running in ram.
Thank you for clarification. I did not know this.
@3:49 in your video - for my large ESP32 project this "deep library search" was very very slow - about 1 minute - I found you can turn it off though (option is in the Visual menus) - and through the menus manually select the libraries you are using. Compiles then in seconds.
For larger projects, with .c or cpp as well as a .ino file - only extra step you need to do, that's not documented, is as well as selecting in the menus - you need to include all .h files you need throughout all the project in the .ino file - even if they are not required in that ino file but required by some other .c file in the project - only if they are selected in the menus and referenced in the .ino file are they passed to the linker.
Apart from that small thing that tripped me up - Its a really great IDE overall, much better than all the alternatives I've tried.
Good to know. Maybe I did not have problems because I always include all libraries as well as .h files at the top of my .ino file (as I do with the Arduino IDE). Compiling took about the same time as with an Arduino IDE and the compiler sometimes printed "using a precompiled version" or so.
Andreas thanks for sharing!!!
Amazing work.
You are welcome!
VERY NICE - $12/yr - sold! *Thank you for sharing your knowledge and skills with us.*
I needed this break from my FLCCC health study. Please take care of you and yours.
So far we are healthy. Creating RUclips videos is a save profession. I do not meet a lot of people ;-)
Looks promising - thanks for this cool video Andreas :)
You are welcome! I decided to use it for my own purposes. Debugging possibilities are addictive ;-)
You folks have some sort of "early access to the videos" arrangement in place? I wonder how these 2 comments on this video were posted "1 day ago" when the video itself appears posted only "53 minutes ago"
This arrangement is called "Patreon" where you get early access as a benefit for supporting the channel.
Visual Studio is surely a friendly looking IDE for embedded programming.
I look forward for your future videos on FreeRTOS!
It is in the making...
There is also Sloeber, addon for eclipse that uses existing Arduino IDE tools.
I heard about it, but never used it. Maybe I am still traumatized of my Eclipse experiments a few years ago :-(
+1 for slobber. Now it's my favorite one for hobby projects. Was found it after struggling from arduino ide. Only recommendation to install it as a readymade bundle from eclipse.baeyens.it/installAdvice.shtml
Then it works smooth. As plugin I was failed on windows and linux.
Just a hw debugger is not available with slower just out of the box. But it's possible, I even tried it before with esp32. But I remember it was annoyingly slow somewhy.
I'm using Visual Micro for 3 years now and for people accustomed to Visual Studio this is simply the best. Platformio has barely a GUI. Everything is done via dozens of console commands and there isn't even a shortkey chart available for people with a non-US keyboard. I prefer comfortable software.
BTW: One can use ReSharper C++ together with Visual Micro to get an even more powerful development environment.
I also found Visual Micro easier to use. This was the reason for this video...
@@AndreasSpiess I just wanted to give VM a second voice in the comment section since it was foreseeable that Platformio fans would run wild in the comments like when Heise.de mentioned Visual Micro.
Over time I had a lot of conversations with the author about problems I had and he really tries to help.
using visual micro since yesterday and I'm very impressed. Thanks Andreas for inspiring again and again and again and......
You are welcome! Glad you like it.
Why not use Atmel Studio? It is a version of visual studio specificsllg for atmel mcus.
And they added in arduino functionality a long while ago making visual micro obsolete.
Only thing I dont know is that if there is debug capability without a programmer, in that case visual micro still has its place. But they have a visual micro plugin for atmel studio as well.
@@LittleRainGames in my case I have a mid large project with ESP32
Just becuase it wasn't explicitly mentioned you get that f12 functionality in vscode/platformio as well
Thank you for the addition.
The best approach i found is to use the best of both worlds:
1. Open Arduino IDE (Advantages: easy to use, libraries available, default IDE and therefore many tutorials online in case of errors, all possible boards supports, ...), go into the settings and enable external IDE.
2. Open CLion (Advantage: High Level C++/C/Python IDE with autocompletion, ClangTidy, ... support) on the project from above and program here.
3. Compile in the Arduino IDE and use the Serial monitor from it.
Thank you for sharing your experience. Your approach is very good if you do not want a hardware debugger. This feature is very important to me.
BTW, Visual Micro also works in Microchip (Atmel) Studio. It is an excellent product, which has matured over many years. Very reasonable licensing and pricing too. 👍🏼
Thank you for the addition. I usually go with the mainstream for tools, so I did not know.
Looking forward for up coming rtos videos. :D
I hope in the next few weeks...
Andreas, again thx for the excellent videos you create ... first thing I watch Sunday's after my breakfast :) I've been using the Arduino IDE for 4-5 years and gave PlatformIO a try last year, mainly because I had to deal with specific Library-versions & different hardware. It did work, but as a hobbyist I found it too complex for me.
Visual Micro seemed an ideal solution and I gave it a try; I've created a Solution with one Project inside as you showed in your video. I used the 'Clone for project when using libraries' with the 'Library versions',, this is exact what I need and it works fine. Gave the (serial) debugging a try and again excellent.
But there is one thing I cannot find how to do, probably because I am not used to work with VS 2019 / Visual Micro : in the Arduino IDE, I regularly use the 'Save as ...' with a postfix version (-v1, -v2, ....) to have a copy of my versions while developing. But I cannot find how to do this with VS 2019/Visual Micro - if we keep the one solution/one project structure, I need to clone or copy the solution and rename (all solution/project files)? Although having multiple versions of a project in a solution could also work for me ? But there does not seem to be easy method for that - using a full-fledged version-mgt system will again make this too complex ?
Do you or anyone else have some recommendations how to handle this ?
Maybe you have a look at the github implementation of Visual Micro. It would give you the possibility to create new "commits" instead of versions.
I also use Visual Micro for the moment because it is backward compatible with the Arduino IDE.
@@AndreasSpiess I will give the github implementation a look. But currently I am looking into the one Solution containing multiple project versions; In Solution Sketch, I start with proj sketchv1; then a create a new project sketchv2 and copy my ino & .h files into the new directory. For the libs I use the 'Clone for solution when using libraries'. Not as easy as the 'Save as ...' in the Arduino IDE but workable. I'll see how this progresses ...
Many Thanks for all your sharing. I paste the answer of Simon from vm for a post related to development under linux.
"Visual Micro is only compatible with the full Visual Studio 2019/2022 editions published for Windows at present to our knowledge."
Thank you for the info!
I never used Arduino IDE for Arduino, even 7 years ago. I (almost) always use Eclipse for almost everything, like C/C++/Java/JS/HTML/PHP/Perl. Today I use Eclipse for Arduino boards and for ESP32 boards. It's very similar to Visual Micro
How so you setup the development with Eclipse?
Eclipse isn't that hard, but is a professional tool.
@@AndersJackson Usually I go to Help -> Eclipse Marketplace and search for suitable plugin. There are instructions for ESP32: github.com/espressif/idf-eclipse-plugin
@Anton: Thank you for sharing your experience!
Another great video ... good to have your input.
I bought Visual Micro a long time ago. I had it installed on Atmel Studio (which was an option.) As you point out, it works without additional hardware purchases, (a selling point for me at the time.) But, while serial debugging seemed like a really cool idea, it has some serious limitations. Also, I found that with Visual Micro, every time there was an update to the Arduino ide, Atmel Studio, or Visual Micro ... things would break. At times, it could be really frustrating. Finally, I bought an Atmel ICE programmer/debugger (and Visual Micro became redundant.) The Atmel ICE costs ... but it just works!, and Atmel Studio is a wonderful piece of software. Of course Atmel Studio only handles Atmel products, so ....
I know that a lot of people love the idea of having an 'all in one' solution. Intuitively however, software which tries to do everything, is bound to have some issues, which the creators will struggle to keep up with.
For me; I'm happy to use Atmel Studio (with ICE) for Atmel products, STM32 CubeIDE (with STM link) for STM products, PlatformIO (with ESP-PROG) for ESP32, and even Arduino (with Serial.write() ) when I just need to throw something together quickly ... since each of these environments works 'really' well for the supported hardware.
I applaud the guys who make Visual Micro. It sounds like they have improved it considerably since I last used it, and perhaps it's for some people, but probably I won't be switching.
Thank you for sharing your experience! For my use case (only Arduino compatible projects), mostly on the ESP32) it fits my purpose because of the debugger and the backward compatibility that I can use the Arduino IDE to show my projects on my channel.
Hi Andreas, I have used both Visual Micro and PlatformIO extensively and for large projects. I'd like to add a few things to your comparison.
1. The serial port in VM is much more stable than PIO. You can plug the device in and out of the USB ports, and the serial monitor just keeps working. Not so with PIO.
2. On a multi-monitor setup, Visual Studio works much better than Visual Studio Code. The latter does not allow 1 instance to have several windows, whereas Visual Studio allows you to arrange the windows any way you want it, even over multiple monitors.
3. In Visual Studio you can test (HW independent) library code by compiling it for windows. All the powerful debugging features are available. You can use the built in unit testing framework to thoroughly test your libraries.
4. I use multiple projects in one solution a lot! It is the perfect way to write smaller test-programs to test-drive your library components. This way your main program, your libraries and your test code stays together. (a simple example : when you develop an arduino library, the library itself and the example projects are all separate projects in one solution).
Of course it is a personal matter, to some extent, but I've found myself always more productive on VM than on PIO. Thank you for your inspiring video's and I hope to meet you once in real life somewhere, someday where we can talk about our projects. Pascal
Thank you for sharing your experience! I never used testing feature. It is still on my list. But I do mostly projects and not libraries, so the testing is often done with "the real thing"...
visual micro vs platformio? I need a comparative table.
Simple: PlatformIO is better for bigger projects and programmers. Visual Micro is easier to learn but still has auto completion and a debugger. And Visual Micro is Windows only.
@@AndreasSpiess How about saying what platforms the IDE's run on???? Kind of important. It appears that Visual Micro is a Windows only product, where as many others run on all three of the important platforms.
@@DavidProffer Its obvious? Visual Studio is windows only, visual micro is a VS extension, are there really programmers who dont know what visual studio is?
@@LittleRainGames Perhaps you should educate yourself on Microsoft Visual Studio before you offer advice or comments.
I have used Visual Micro when I was a Windows user. It was simple setup and worked flawlessly. When I went to a linux desktop I initally used the Arduino IDE but now I use PIO. You can spend many hours installing, configuring and troubleshooting IDE's when they don't work. I think the arduino IDE is fine for most beginner to intermediate users.
I agree and I will stick to the Arduino IDE for the channel. But I like to use a HW debugger for my more complex projects...
Thanks Andreas. I've finally had enough of the Arduino 2.X IDE - and was wishing it was more like Visual Studio. It looks like Visual Micro might be the answer!
I did not transition to 2.0. But I plan to try it for debugging
Thank you very much my dear Professor!
You are welcome
Thanks for getting this in my pc :)
I am an ex light developer (C, Java etc) and use the very robust Eclipse IDE with the Sloeber plugin but this looks pretty nifty as well for VS
I once tried Eclipse but it was way over my head. So I gave up :-(
Sorry, Eclipse is a piece of crap. MSVS forever
I use PlattformIO and CLion. The latter is expensive if you buy the commercial version, but there are free licenses available for educational or open source projects
PIO definitively has its advantage. But also a learning curve. This was easier for me.
I was an Arduino IDE user when that was the only feasible option for a beginner to compile and upload sketches. With arduino-cli I can now do the same but in any editor, it still takes a bit of work to have autocomplete working right but it's miles better than relying on the compile button to check errors. My main issue with these complex or user friendly IDEs is that they often hide some of the details of how the code is compiled and it often makes it difficult to have a project that can be cloned and then built by anyone, this why I'm sticking to vscode because it requires that I add the necessary scripts and configuration to the project.
I Like the Arduino-cli too and If you switch between different devices it helps much for holding things transparent, but it could bei a good Idea to Share Arduino-cli Scripts or templates.
Thank you for sharing your experience. IDEs seem to be a very personal choice. Everybody has some different needs and preferences...
Impressive video and program!
Thanks for sharing :-)
My pleasure!
Finally. You’re doing some useful stuff here. It will help people get to a new level. Please stick with these sort of videos.
No more begging Chinese companies for free crap. No more ridiculously complicated radio BS that you clearly don’t understand (it’s obvious to radio people).
Stick with things that RUclips viewers can handle. Maybe I will be able to use your work with my students again.
Arduino 2.0 beta is out and supports all desired features, FYI
Did you try it? It looks like very beta to me.
@@AndreasSpiess No, I haven't tried it yet, partly because of the beta status, partly due to lack of time/need. I lost interest in Arduino a bit after working with manufacturer software to create faster code (at the price of a bit more effort), but I am looking forward to trying the new Arduino IDE on my next project, even if only for a day and switching back. The old IDE was sub-par IMO, I expect the new IDE (once the bugs are ironed out) to be a blessing for makers. Thank you for the quality videos BTW, they have been a reference for me, and I'm sure many others. Kudos to you.
I tried it and thought that it still needs some time to ripe. The direction is good, though.
Have been using VM now for a couple of weeks and like it quite a lot. One thing is that I have not been able to write a littleFS file system for an esp32. I carefully followed the skimpy directions on the VM website and always get a can't find a tool error. A work around is to set up the littleFS tools in the Arduino IDE (per another good online video) and write the files and file system with this environment. Once the file system is in place files can be read and written from inside a VM C++ program with the appropriate libraries. Another issue I came across is that the serial interface stops working for output if all the pins are setup as Digital IO (required for the board I am designing). Not sure yet which pins are the problem.
1. They have a forum where you can ask questions.
2. I made a video about which pins you can safely use.
As always, you have provided an excellent single point of reference for me when I have decided to try something out and postponed (procrastinated ?) the learning, knowing that I will always find the answers if I search your videos. Thank you, Andreas! I have been using VS Micro since the early days and VS itself even longer. In fact I did not start using Arduinos till VSMicro brought intellisense and a mature GUI to the platform. After being utterly spoiled by using PIC micros with their superb dev platform that included step/trace debugging, emulators (you could test most code without hooking up the micro) I was disappointed with the 'Duino. In studying JTAG debugging with the ESP32, I noticed that the IO Pins used are also the ones used for accessing the 4-wide SD-MMC bus - I wanted to mention that this is one more exception where it may not be possible to attach the debugger.
I agree with the pins. This is why I created an Excel sheet where you can select all sorts of criteria to find the pins you (still) can use. The JTAG pins are one category which must not be used if you want to debug.
Great video ! I've always loved visual whatever products...
It seems to be a good compromise between features and complexity...
Thanks for another great video!! Could you share a little more info about that brother heatshrink printer? Maybe it deserves a short video(?)
It is a PT700 connected to my PC. Nothing special...
As ever a great video, thankyou for the content.
You are welcome!
I don't know if it's just me, but when using platform IO, I would regularly run into the problem "I'm running a project, but a completely different one launches" and I spent hours trying to fix it and never managed to do it, so I jumped ship.
I'm not sure my problem was the same one, but I also really tried to use it but there would always be something that wouldn't work... I'm not that good of a programmer though, so maybe it was myistake
@@jaspervandenameele4834 Well, consider myself moderately experienced, so I don't think it's just you. I had some issues with variables from one project being detected as duplicate names from another project. So my overall experience is that it's a buggy tool. (For everyone reading, I did search online for help, I tried the solutions, but the problems persisted)
Well, easiest solution: Just have one project in your workspace. There is a way to tell PIO which project to compile if you have multiple ones in your workspace, but I usually cannot remember 😅
@@RoterFruchtZwerg well, my workflow required multiple projects, and I always assumed it would compile the selected project :( I never managed to get it to work properly.
@@nikolatotev I think the "Switch PlatformIO Project Environment" Button below the editor, right next to the Serial monitor and upload buttons, is what u are looking for
VS has better visualization when working with hundred #DEFs. Deactivate defs stay in light glow. VS also record more than 2MB of serial print when terminal is open.
I saw that i was able to go back in serial history. Very convenient!
I once tried installing PlatformIO. The installation process alone was such a hellish experience that I gave up the idea of installing it forever.
What? It's one-click install basically
I had no problems with installing. But for using it you need to know some basics. This is why not everybody likes it.
IMHO good choice is JetBrains CLion with platformio plugin.
Thank you for the tip!
That's what I use too
Thanks fot the sunday-gem! I always wonder: is there a possibility to completely virtualize the esp32/arduino, to refine the code, before even uploading? This would make things so much faster!
I cannot imagine to virtualize my MCU because it usually interacts with the environment (often in real-time). So I would use a lot of time to simulate this too. Hardware debugging seems to be a good compromise to learn how your code behaves.
I know Visual Micro from Ben Heck, looks cool and easy to use.
In my job we use VSC + Platformio, everything we make is ESP32 based, we love those little bastards (tons of flash, OTA, WiFi, dual core, cheap as chips).
We config the projects as Arduino framework so we can use the libraries for Arduino IDE and mix some FreeRTOS goodness.
Tabnine is a extension for VSC that autocompletes code based on AI, it's pretty funky, sometimes reads your mind and write the whole thing itself.
PIO is a good choice, especially in professional environments.
Just another IDE. It does not work for me. I threw a project to it and it does not build! It does on ArduinoIDE and VSCode. I will play around for a short time, maybe some settings in preferences somewhere. At some point, I decided to do all my programming in VSCode and that works in 99% of the cases.
I did a quite big project with many libraries and it compiled. It was more difficult to understand to debug a multi-core ESP32 project where I had my fair share of problems...
But VSC is also a good thing...
Looking forward to your RTOS video.
It is in the making...
FreeRTOS flavor please.
.
If this was handy before,I would've stayed with MicroControllers, but now I've moved on to SBCs like RaspPi.
I'll remember this when I decide to go back to them. Thanks Andreas! 😊
.
You are welcome!
I love Visual Micro and I bought the perpetual license. But even after years of use you manage to supply a detail I didn't know.
Cool. Thank you!
I bought a perpetual license too when it first came out years ago, but after switching a couple of computers and a couple of hard drive failures and reinstallations the author won't reset the license anymore and told me to buy it again. Not too impressed. I switched to compiling and uploading within my Sublime Editor instead. (Arduino's editor is terrible!) I miss the days when you buy a program and you didn't have to activate it every time Windows did a major update, or something in your computer changes.
Hi Andreas, thanks for yet another well made video. Being non-free and based on the arcane Visual Studio makes it non appealing for my open source projects (as opposed to Visual Studio Code + platformio).
That is ok for me. No need to leave PlatformIO if you can deal with it. VM is more for the ambitious beginner, I think.
Thanks for Video I'm C# developer working with VS from 2000 Arduino just my hobby doing small projects in free time great what now can use VS instead of Arduino IDE I like Arduino IDE but VS way too superior with debug and code features before compile . I doubt Arduino IDE can catch VS as Microsoft already ve put ton money in VS and will continu its their core product line. Again special thanks to you Andreas Your videos saving ton of my time and you doing that with A++ Quality.
Glad you like my content! I assume , the Arduino IDE just have to extend a bit like autocomplete, or debug. And it has to remain simple.
It sounds like most of those features (the code completion, smart rename, etc) are also available in platform IO.
Other than the backwards compatibility, and less steep learning curve, does Visual Micro have anything that Platform IO doesn't have?
(I'm annoyed with the Arduino IDE and want to use something else.
I use VSCode and Visual Studio for work, my preference is VSCode.
I'm trying to weigh up if it's worth skipping Visual Micro and using Platform IO)
If you are a programmer, PlatformIO is a good choice. Visual Micro is easier to use for a non programmer and, because I will continue to use the Arduino I DE on the channel, I will use visual micro because of its backward compatibility
If you are accustomed to Visual Studio you feel at home immediately. That was my main reason in the beginning.
I used to love Visual Micro when it was free. Then they stopped releasing free versions.
I assume they have to pay their bills, too.
@@AndreasSpiess yes...but we have too 😁
It's not about bills. It's about flawed business model or deep pockets. Either way, we just became beta testers for them. What if Arduino IDE became paid?
@@mayankraichura I don't understand this comparison. Arduino makes money on their hardware.
SHIFT + F11 allow you to get out normally of a function you stepped into by "error"
shift-F11 did not help in my case :-( Somehow the debugger does not have the information to which code the program counter belongs. If the ESP is not crashed, continue sometimes helps...
Does it support compiler directives like #ifdef, #else, etc?. I was unable to get platformio to do this. I like the idea of separating the serial output window from the main ide. Again I was unable to figure out how to do this on platformio.
I used #ifdef it in my project and it worked.
Yes, it does. I had to tinker with Intellisense to get it's interpretation of the code to match the compiler's interpretation.
Thank you Andreas. Could you please review Visual Code? For those of us not running Windows. Thank you
Visual studio code was part of my PlatformIO video
I wish I could follow your demo of the software. But it‘s far too tiny too read anything. Please change your screen recording setup for future videos.
Sometimes one can fix this problem by going to the highest video resolution on the RUclips player.
You are right. But sometimes I feel the details are not needed but the overview is important. That is why I change resolution during the video.
For sure, this video is not for watching on a Smartphone.
@@AndreasSpiess I watched on a chromebook (15") but I found it difficult to follow and slightly hurt the eyes!
@@AndreasSpiess it might be worth bumping up the font size
Andreas zooms in on things that you might need to read, but the tiny print on the overview doesn't much matter as he's just trying to show what various sections are for. I think that he did a good job with this video, but he definitely has a larger monitor than I do ;). Mine is nearly 20 years old, though.
As far as I can tell Visual Micro is only for Windows, not osx & linux?
Then it is a no go for me. As I using a RPi 4 B as a developing environmenr.
Yes, it is Windows only. I should have mentioned it in the video :-(
unfortunately being on linux cannot use this tool. so perhaps a video on platform io could still be worthwhile. or a reference to find other recommended tutorial series for getting started with pio. unfortuately my installation seems to have become broken now! since it wont let me import a simple arduino sketch. or i am missin doing something obvious. but i have no idea why! its all so complicated. it becomes rather confusing all the different layers of projects, workspaces, platforms etc. for example trying to stop project A from getting mixed up with project B
or it could be some platform or plugin or libraries dependancies breakage. or it could be some otherbreakage in all the scrambled up insides of PIO. i have no idea anymore!
maybe it could be more robust inside of some kind of a sandbox system. or container system (docker etc). where you could have a clean python, and clean all other dev environment. that could be recreated and 'cleaned' like a refresh. so just push a button get back to a working state. and with projects mounted into docker volumes. IDK its just another foolish idea at this point. hehe
I made a video about platformIO some time ago. But as said in this video, it has a learning curve. But it supports Linux.
@@AndreasSpiess lol thanks, i'll go back to watch it now then! since being right in the middle of this little arduino project
I have a question about Visual Micro and Platformio :
Is there a debug software feature as with Microchip MPLAB IDE ?
I mean a simulator ONLY feature without any board connected to just check the program with variable watches and breakpoints. (same way to debug a windows or linux program)
I do not think so.
The most disadvantage of Visual Micro - it's Windows-only. I have only Mac OS and Linux on Raspberry, so PlatformIO is my choise...
Good choice for Linux or Mac...
How easy is it to add own boards instead of the predefined boards? This is the only thing keeping me from fully switching from Atmel/Microchip Studio to PlatformIO for the AVR-chips (I am not using the Arduino-framework for those...)
I do all the boards and library stuff in the Arduino IDE. Because it is compatible, it uses all changes. So I cannot answer you question.
I used Visual Micro for a year. It's very good, but if you're looking to program other micros as well, using their native frameworks (ie. ESP32 with ESP32 IDF, STM32 with HAL, CMSIS) with the advantages of Visual Studio, then take a look at VisualGDB Embedded. It's not free, but worth it IMHO, it pretty well takes care of everything for you without all the tinkering.
I use VisualGDB for native STM32 development. But we are talking about Arduino and last time I checked there was no usable arduino integration in VisualGDB.
I'm not sure if Visual Micro and VisualGDB can coexist. I installed them on separate VMs to avoid the risk.
I decided to stick with the Arduino IDE for this channel because otherwise I would have to have a lot of different frameworks, example projects, and libraries. This is different for professionals, of course.
@@MetalheadAndNerd Yes, there is. Besides standard Arduino boards, I've done ESP8266, ESP32, and STM32 blue pill using the Arduino framework in VisualGDB. Select your board and VisualGDB will download/install what's necessary. It's an excellent turnkey solution IMHO.
Does VisualGDB offer a free or a "Maker priced" version. The prices on their homepage are more for a commercial usage.
@@AndreasSpiess Sorry, I don't know, I paid the $99us for the Embedded version, it's half for academics(?). For me, the $ is worth the hassle free setup. I'm mostly using STM32/HAL/st-link these days and it works very well. They do have a 30 day free trial. The support also appears to be very good. OT, but it also now supports the Pico.
I wish IDEs would add smarter autocomplete. If I already have 1 " and try to add another one before it or a closing " why does it always add an extra 1. There should be a check if there is already an open tag. Visual Studio and many other IDEs do this, and it is enough to make me turn it off. Even though it is only 1 key press to remove it (although then both can get removed) I would rather always have to add the closing tag, than sometimes have an extra one added at random when I am not expecting it.
I learned that editors are very individual. Somebody likes a feature that is hated by somebody else. Very difficult for the developers ;-)
It’s always funny to see how people can discover standard IDE features when coming from limited/starter platforms .. that’s just like JS user discovering types ,)
For me it was not a discovery. I used a debugger in the 1980s and missed it when I started with Arduino...
But of course you can only miss things you know.
@@AndreasSpiess yes indeed.. most likely it’s not so critical in smaller sketches
I started using the Visual Studio Code IDE and Arduino CLI for compiling which is an easy free option. However, Arduino 2.0 is in its beta stage and has significant improvements, the debugging part is the one I don't know if they support.
They will support debugging. But they leave it to the community to support the ESP32...
@@AndreasSpiess A video tutorial about serial and/or hardware debugging on the Arduino would be nice
This is not a good stuff for a video, I think. Lots of details...
I use Microchip studio. But I will consider VM i near future.
As they have a free trial period it is not a big risk. Only a little time to spend...
a free trial is already a waste of my time.
Sorry this time I cant follow Your great suggestions.
No Linux version of this and Platform IO not backward compatible and not yet mainstream ....
Will stay walking barefoot 😉
Yup yup. The Code editor is pretty popular though. I believe that is what you need to compile the latest version of Marlin.
there are Linux versions for PlatformIO or what do you mean with "backward compatible"?
@@uwezimmermann5427
1. no linux visual micro
2. watch the video at 14:55
Because I use the Arduino IDE for the channel I want to open the same file with either Arduino IDE or my development platform. I found this works better with visual micro than with PlatformIO.
Now I would be very interested what your point of view is on the ESP-IDF in VSCode. ☺️
Some stuff seems to work only on that like Tensorflow on microcontrollers.
I only use the Arduino framework on this channel, so I do not know.
Very good video for me. I had no idea about this tool. Options are nice to have. I love platformio but the lack of backward compatibility is a drag if you want to share your projects with people who don’t want the learning curve.
That compatibility is why I use Visual Micro for my complex projects. I use the Arduino IDE on the channel.
I just started playing with ESPs and Arduino Boards and I quickly was annoyed by the awful compile times in the Arduino IDE. Even small programs took ages to compile. Some days ago I switched to PlatformIO, which is a really cool free IDE that integrates into VS Codium or Visual Studio Code under Linux and Windows (I guess Mac is probably supported, too). The compile time went down to 1 or 2 seconds, even with some bigger libraries. Serial monitoring, library and board/sensors support is very similar to the Arduino IDE, you can easily install needed packages for your hardware.
PlatformIO is a good alternative. I also did a video about it.
Great video...I find Platform IO really great but remembering all the stuff for it is a pain...I will give this new one a go....I think it looks a lot better on your report :)
I found its learning curve less steep...
Could you please do a video only about debugging with breakpoints i.e. which boards and which IDEs support what kind of debugging? I find that the ESP32 HW debugger is irreplaceable for me, but a lot of the times I do not need such a powerful board for a simple project.
PlatformIO and Visual Micro support hardware debugging. I do not know other IDEs which do HW debugging. So I am no help. ESP32 and STM32 can be debugged. But I am sure other boards, too. Just look if they support JTAG or SWD.
Hello, could you do a video about the Atmel Studio and the AVR Dragon - newer Atmel ICE programmers? Thank you.
I decided to stick with the Arduino IDE on the channel and sometimes to IDEs which are very compatible.
What about zerynth?
Great tutorial. May I know the screen size of the monitor that you used to do coding in this video?
I use 27 inch monitors.
Can you do a review on VisualGDB?
Do they have version priced for Makers? I only saw prices for the professional market.
2:30, 17:01 Is it 3 months or 6 weeks?
Recently they changed it to 6 weeks.
I used Visual Micro at first when I started my journey back into Microcontrollers a few years back. I understood it was free software, only to be surprised one day it was demanding money to open my projects.. So I switched quickly back to Arduino IDE and, grit my teeth and got on with it. Now don't get me wrong, I probably would not mind paying if (A) it was clear upfront before wasting time on it, and (B) The software was really good. But actually I found the how interface a little disappointing and clunky, I can see those guys have put thier hearts into it, but I guess my expectations may have been to high given historical experience with large projects in visual studio. I have started using the PlatformIO and so far really like it. It would be interesting if you did a real hard feature comparison between PlatformIO, Visual Micro and The next generation Arduino IDE. Seems these things have been out in the wild long enough for a fair comparison to be made. You could also introduce the free IDE's as available from the makers of the STM,32 ATMEL and ESP chips. I took a look a couple of them, they are not bad with the one for ATMEL very strong, but for me the better answer is to leverage the common platform for all my microcontrollers as the benifits far outweigh the compromises in nearly all cases.
For the moment, PIO or Visual micro are for bigger projects with a clear tendency towards PIO because it is free. And for the small projects it still is Arduino IDE.
@@AndreasSpiess IFor me, I will only use Arduino IDE for legacy things and testing something as a known good. I managed to get all of my 8 types of microcontrollers working in PIO, making a test project for each. I don't think I would ever open Arduino IDE again to make a program, even for small stuff, fiddling around with the microcontroller setup each time is just to painful.
Hello. I have a question: I have a project folder in Arduino IDE which consists of several .ino files (in their folders) and the whole folder is in git (and on github)
What would be the right steps to create Visual Micro Arduino project from this? So that I could work with it in Visual Studio using all VS IDE benefits OR sometimes in Arduino IDE as needed flawlessly? Is it possible at all?
It seems they support multiple ino files. You have to ask them in the forum. I never use multiple ino files.
Hello, thank you! Can you tell please if Serial Plotter is available with Visual Micro?
I do not know. You have to ask the developers. I very rarely use it.
I've used most versions of visual studio IDE (was called VSC) since version 1 on windows 3.1 But in 2012 went to full time linux boy. That was so very hard saying good by to it. best IDE ever! So glad they now do Visual Studio Code for all platforms. Just wish they had not given it the same name as the original. Very confusing. They are very different. Looks like visual micro is a SQU of visual studio IDE.
I agree that they created a lot of (unnecessary confusion). Also with me :-(
Great video! I have had so much trouble debugging eps-IDF and ADF and was hoping this would be the answer. After installing it seems visual micro wont let me select my programmed. when I hit the drop down and select esp-prop it goes back to no programmer. Another issue, when i load my project folder and try to build it only shows "run code analysis" not build or build all. Any help would be greatly appreciated, have spent days on this so far with not much progress. I have tried VS code and eclipse with plugins.
Are you sure you used Zadig for your programmer? I never use "code analysis"
Good that comes alternatives for Aduino IDE, it creates competition and AIDE have to wake up from sleeping beauty sleep. I use AIDE, and not planning to swicth so waiting for AIDE 2.0
The 2,0 version looks good. Still a long way to go, but the direction is good...
arduino ide 2.0beta is out from a week, with most of the things you asked included: autocompletion, navigation to definitions, debugger
:)
Yes, i will be or is a good improvemnt over ide. And still PORTABLE. other solutions aren't
Good point. I will have a look when it is a little more advanced. I do not like beta versions for my daily work...
@@AndreasSpiess gmail was beta for about 10 years, maybe more :D
@sualazzo: Did you use the 2.0? I tried it and for example auto completion did not work after I deleted a letter. Maybe I had bad luck. And looking at the forum there is a lot of work ahead. A complex ESP32 sketch compiled ok. So this side seems to be ok. And we will not get an ESP32 debugger from Arduino. They encourage the community to write one.
I was not able to install platform IO as there is a issue with PIO Core installation error
Maybe bac luck? It seems it has a lot of successful users.
Hi
Have you had a look at Visual Studio that is free for the Raspberry Pi?
Visual studio code runs on the Pi, not Visual Studio. PlatformIO uses it.
Espressif has very good support for ESP-IDF in Eclipse. There is also an Eclipse plugin for Arduino from Jan Baeyens. Excellent tool, with some small exceptions. I might be mistaken, but free visual studio favours like a cheese. Perhaps there is a trap somewhere nearby.
I tried Eclipse a few years ago but the learning curve was too steep for me compared with potential rewards. The Arduino IDE pro seems to use it. So maybe I give it a try when it is out of beta...
@@AndreasSpiess That is probably true, I can't measure how hard is it to start using Eclipse since I am using it quite a lot of time already.
Question: I got an ESP32-Prog and it shows up on Windows 10 Device Manager as two serial ports.... so am I correct to assume that I do not need to use Zagid as shown in your earlier video?
I figured it out....:->
I assume you found out that the debugger does not work with serial devices.... I keep one as a serial device which can be connected to a board without Serial to USB chip.
Electron-based applications *really* took over!!! 😬😬 Chromium instances are really heavy, my personal preference is still stick over old C/C++/C#/Java based applications for almost everything. Any thoughts over such trend, Mr. Spiess? Thank you for the always brilliant content!!!
I get the feeling, but just imagine how much fewer pieces of good enough software would exist without something like electron?
Particularly when it comes to easily implementable and highly customizable software that actually looks good, that takes way more experienced dev hours to do natively and thats before you talk about being cross platform.
Sometimes it's good to accept that tech allows us to be inefficient efficiently.
A text editor no longer needs to be super efficient. It can be just ok, because 2ms vs 50 is barely noticeable for loading a text file.
Flutter will be the next Electron i think.
How relevant is this stuff for microcontrollers?
@@AndreasSpiess maybe I am just thinking a bit beyond, but as applications get heavier for the host PCs... you will eventually have to have even more powerful machines in order to program your microcontrollers. And considering that Raspberry Pis are already considered kind of a host machine, running a heavy application on Raspbian will take its toll eventually. That is what I thought behind my first rationale!
Just as a note, because I guess many viewers are confused
Visual Studio != Visual Studio Code
Visual Studio is the "high end" IDE from Microsoft. It's very powerful. You can imagine it like the Eclipse IDE.
Visual Studio Code is a very slim IDE, it's good enough for most things.
And VSC is open source, too... I think, Microsoft did a very bad job creating this confusion.
@@AndreasSpiess reminds me of Java and JavaScript. 😅
Why not just use Atmel studio?
On avrfreaks they said visual micro was only useful until atmel studio implemented arduino.
Atmel studio is a version of visual studio specifically for all Atmel MCUS.
What I cant answer right now is if atmel studio has debug capability without a programmer, which would be the only reason to use visual micro.
But there is also a visual micro extension for atmel studio.
I never used Atmel studio, so I do not know. I mainly program ESP32 chips and sometimes also STM32s and I do not know it they are supported.