Due to a recurring disliking for VSCode, here's a list of possible integrations of PIO. I also switched to VSCodium since then, which I can highly recommend. So now you can stop spamming "Micro$soft bad" under this video about PlatformIO, because it is completely unrelated to Micro$oft on its own, see below: VSCodium (VSCode minus Microsoft) Atom Cloud9 Codeanywhere Eclipse Che CLion CodeBlocks Eclipse Emacs NetBeans Qt Creator Sublime Text Vim Sourced from: platformio.org/install/integration Enjoy!
vscode, atom, cloud9, codeanywhere,eclipse, clion, codeblocks, emacs,netbeans, qt creqtor, sublime, vim all are just terrible, unusable, impractical, electron based or use 10gb of ram for a hello world, all the positive things that platformio could bring to the table are negated by the awful choice of integrations
@@PokettoMusic That's about every editor that is available, so I wonder what isn't terrible, unusable, impractical, electron based or RAM-hungry. Surely tools like vim, emacs and clion clearly stood the test of time in both a hobbyist and professional context. Oh and to add to that: the PIO core CLI makes all commands of PIO usually used in the UI available as command line tools, which means that you can write your code in nano or notepad and directly compile and upload from the terminal, no 3rd party editor involved.
I have tied PlatformIO on and off for over a year, and I have to say it is a mixed bag. Its biggest advantage is that it allows each project to have specified versions of libraries; this is advantageous if you have an older project that will break if a newer version of a library is used with it. Otherwise, it adds it own quirks and moderate learning curve. There are subtle gotchas that someone else commented about.
@@NithinJune That's what drove me from the ArduinoIDE to this video. Apart from that, I was confused that the ArduinoIDE just tries to compile everything within that folder. It seems like they don't want somebody to program something, which is much bigger than a small program within one file. Doesn't PlatformIO even enable you to take more control about the Language standard you are actually using? I didn't find the gotchas, yet. Which one does qCNC K mean? Is there any danger, that code might not be compileable in the future?
you can even set a dependency in lib_deps to be dependent on a specfic commit hash of a git repo if there aren't version tags for that lib i hate having to play the guessing game which libs and version a project needs so i wish everyone would use platformio because of dependency management. even more than autocomplete i use the code navigation to quick browse into the libs (control + click on function name) and like in a web browser i can click the side button on my mouse to go back feels more like linux where packages describe what exactly they depend on ...
I have to say that I loved your fast tutorial. I was overwhelmed by all the VScode buttons, windows, things opening and closing, files and folders, blablabla... and you solved it in 10 minutes. No waiting times for you writing down hello world code letter by letter, just focus on what is relevant for the topic. good job
Thank you! I am an experienced developer on microprocessors but haven’t used vscode or platformio before. Usually when I try to learn something new, I have to sit through “what is binary”, and “why use a microprocessor”, etc., with about 2 minutes left over for the topic! Thanks for understanding that not everyone is a newbie and doesn’t need binary explained! It looks like your channel is new so I hope for more content like this. Subscribing…..NOW!
The best thing that Arduino IDE has going is that the serial terminal is no nonsense and quick. PlatformIO takes longer to start and is a bit more difficult to use when using the terminal a lot during testing. It's nice to have it auto stop and restart between uploading.
I do agree that PIO has a bottleneck at every uploading cycle. That becomes noticeable when you only make small changes and need to upload often within a short time. It starts to get annoying. However, i can't see how any developer would choose a fast serial terminal over code completion, multiple supported platforms, debugging compatibility and more.
@@jse-shack825 right? I use PIO exclusively now and keep an Arduino window open only for the terminal. Unfortunately, most lightweight terminal apps all send line after each character entry not when return is sent, so it's still the best option when in early development. The PIO library management is great and also got, being able to compile for multiple targets and upload with the hex that's for the right target is absolute gold
I don't know how the Arduino "IDE" is nowadays (haven't used it in ages), but last time I did, calling itself an "IDE" was an insult to all actual IDEs.
I used it years ago and then installed it to use it a few months ago and it had regressed. I am unsure how they managed that, but they did. I was mortified.
It should be pointed out, that platformio is not part of vscode. The vscode-platformio-extention make use of platformio and add a nice IDE integration.
This is a perfect introduction for me! I'm not new to microcontrollers, nor development, nor VS Code - I just wanted to know about PlatformIO specifically, and you did that in 10 minutes!
Your clear explanation rescued me from days of frustration battling a persistent bug. While my Arduino functioned flawlessly when I utilized the Arduino IPA to upload the code, I encountered complete silence when attempting to do so through VSCode Platform IO. I discovered that the solution lied in crafting my own code within main.cpp rather than simply creating a folder with a name and a file with the name.ino extension. Your guidance was invaluable. Thank you!
I appreciate this vid -- "beginner moves on to intermediate." I'm an Arduino IDE user whose Mac dev machine crashed, giving me the "opportunity" to start fresh... I chose to use a Pi400 with a clean install of Bookworm, the Arduino IDE, and vscode, but I had only a vague idea (with advice from bard) that PlatformIO fit into the MCU picture. This vid was ideal, thank you.
I just started programming Arduino and my favorite approach so far is make + arduino cli. As a 11y of experience in software engineering I don’t like being attached to any IDE (click, drag n drop)… I have my reasons… But I will take a look on platformio cli, seems interesting. Thank you.
That's what I love about PIO, the core CLI basically lets you choose any editor, because editing and compiling/flashing/debugging are two entirely separate processes. The core CLI can even do wild stuff like remote flashing and unit testing, which requires a PIO account. Did that with a remote Raspberry Pi which had an ESP32 connected on-site, making me able to flash new firmware remotely, almost like OTA updates without the usual OTA stuff.
You should give the Arduino IDE a new look. It's now a full fledged development environment with a dark mode, syntax highlighting. More of the tools are easier to use and it's much faster than the old version. IDF is now fully supported.
I tried the most recent Arduino ide a few days ago, it seems like a massive improvement on the original. Still vs is probably better, need to try platform io.
For some reason Platform IO gives me a ton of headaches. It is wonderous when it is working, godlike when working seamlessly. But, maybe it is just settings on my computer. I spent a week reading internet searches, playing around with my Windows PATH. Installing two drivers. And I finally having it working okay again as of yesterday. But. during the six months after discovering PIO, I also found Visual Micro. Which is an extension for MS Visual Studio (NOT VS Code!). The only framework it uses as of now is Arduino. But it gives you all of the power of the Goliath of a program Visual Studio, and the ease of folder and file management. I need to say, with it being a paid software, and that I have a paid version, I am happy with it. But I have high hopes for the potential of Platform IO. And I will tame the beast and have it working seamlessly without interruptions sooner or later. Chasing bugs and conflicts or issues goes with the territory.
Have you been able to use the intellisense feature for the HAL? When I use it with STM32 cube framework, everything works, compiles, builds, etc, except accessing the HAL itself(header / source files). I've seen plenty of pp complaining already but no solution, so I wonder what was Hou experience with it. Thanks!
I was a little surprised that my old boss insisted that I do all my code development using the Arduino software. I told him that Arduino is good for hobbyists but serious developers use other more capable software. Before I left, I was able to get my boss to finally dump the 8-bit Atmel microcontrollers for new projects and use cheaper 32-bit devices like the Pi Pico. Currently, I am using VS Code for building binaries and debug at my new job. So far, I have only played around with Platform IO a little bit.
Two issues you have not mentioned when migrating from original IDE. The "porting" of existing Arduino projects, where you have to move functions above 'loop' and some/old libraries incompatibilities (Newhaven lcd comes to mind). I use vscode with Arduino plugin. Better than original Arduino ide but no issues like with pIO.
re: moving functions -- that's just how real C++ programming works. In Arduino C++, the IDE "automagically" performs function hoisting for you, adding invisible forward declarations at the beginning of your file, which is not standard/real C++. To do this properly, you should have a header file with the declarations of your functions, which is what you need in PlatformIO. You can't really fault it for being more like a standard C++ compiler in that way.
platformIO better. cause can more. i can say: i want esp32 with arduino framework. and i can say: i want esp32 with the original sdk. i can say i want some stm32 contoller with arduino framework, or with MORE other SDK's and real time operating system frameworks they support with that board ... and i just need to write ONE ini file to automatic download and configure all that complicated toolchain stuff...
@@Henry-sv3wv exactly, you automatically get OUTDATED, old libraries and toolchains, especially for the ESP8266, and probably for ESP32 also. If you want to do something, none of the official documentation will work, because platformio has outdated things.
Could you please make a tutorial on splitting code in Platform IO? There is no good place to learn that. Everywhere I looked, they were saying that it's the same as in the normal CPP but I still can't do stuff like global variables and libraries. I would greatly appreciate a tutorial covering that topic.
Yes that would be great, I've spent hours trying to migrate my code from arduino ide to vs code but eventually gave up and now I'm still using arduino.
Excellent presentation. Thanks for cutting through the BS and delivering the facts clearly with examples. Refreshing to see something in this format, considering what tends to make up most of today's UA-cam environment
The serial monitor is imo the best part of PlatformIO. It supports ANSI commands so you can do colors and move the cursor around. It's so much better than the garbage that came with Arduino IDE 1.
A linking tutorial would be very helpful. I cannot get it to consistently link libraries and dependencies. It seems to parse them some projects yet not for others and I cannot figure out why. Searching web I see a lot of forum posts with similar linking issues. It's to point where coding is almost pointless because it won't link certain things. Yet Arduino despite being a very crude IDE has no issues linking.
I agree Sir!! Arduino is so slow too... VS Code can do anything with extensions. It can run many different platforms and environments. Good code/file: reader, editor, testing, debugging, creating, compiling, and burning program. And runs efficient and fast. Faster build and test than Arduino IDE. Although Arduino is a really good system, It feels like everything about Arduino is 8 bits. Even their app.
If you are looking for speed, PIO is not the right choice, but a specific build chain for your target controller. This, as the name implies, comes at the cost of working for one controller family only. PIO is a good tool to stay flexible and multi-purpose, allowing you to run parts of your project in the context of VSCode rather than just embedded firmware, such as the preview of an embedded web server or code generating python scripts.
I'm all for improvements over the arduino IDE. But why swap it for another crap one ? VSC is awful with it's hard-to-read text, split-pane view, and annoying memory of distant projects. I want to divide my screen up sensibly with overlapping, indefinitely-sized windows, readable text and projects that stay separate.
It’s easy to be judgemental about Arduino IDE, but everybody starts off with basic readers that read like the cat sat on the mat, but nobody keeps reading at that level. Arduino IDE is a great start for those that are not Nerds
@@seriouscat2231 are you serious? I was just saying that his scathing attitude regarding Arduino IDE is out of line. This IDE has launched the skills and interest of many people, it is a solid reliable IDE. It is good that he has found a better way, but he obviously started with Arduino, and his new way is a step up from that, good for him
@@ianbirkinhead4103, I think you should decide. Either you criticize some fact or you criticize a sentiment or an attitude. Two different things that should not be confused. I did a thing or two with Arduino IDE and felt immediately limited by it.
Adding mySql database connectivity to a project. PlatformIO started complaining over non compilable libraries. Loading the same project in Arduino IDE, compiling was no problem at all. So how's that for awkward.
compiling without problems... did you even had a thought that if you don't have any warnings\errors it doesn't mean that you have everything work as expected?
Excellent video overall! Thank you. The "Test" icon is not specifically for TDD (Test Driven Development) which is a software development "philosophy" of writing unit tests before you write any actual code. The Tests button is just a shortcut to the area where you create/store unit tests... which should never be confused with TDD. One is a philosophy, the other is simply unit tests. You can write unit tests all day long without adopting TDD. It's fine... you skipped over all the testing areas because you don't know anything about it and that's perfectly fine... no one "young" ever wants to write tests. Also, git is not an "archiving" system. It is a distributed version control system. Before everyone accuses me of just being a dick... which is exactly how I know the above will be received, know that I mean it in a constructive way. The only reason I mention it is because I know you will do well in both software and UA-cam and will end up with many followers. Those YT followers will listen to everything you say and take it for fact without question... and possibly learn some things that may not be 100% correct. Were you wrong per se... eh, not really. What I'm saying, or asking rather, is that as an influencer you make sure to use the correct terminology... or at least as close as possible so people don't have to unlearn the stuff later. Like I said at the top, excellent video! And yes, the Arduino IDE blows and VSCode is a much better solution. Subscribed.
One thing I find very annoying when using the Mega2560 is that accessing flash above 64KB requires use of a 24 bit address to cater for the 256KB flash. In the standard Arduino IDE this is a cludgy solution requiring conversion to far addresses (from what are compiler known 16 bit addresses). Does platformIO, or any other compiler that you are aware of, deal with this in a more orthodox manner wherein full addresses can be specified on 2560. It would also mean that things like a 2D array of characters in flash would be possible. At the moment, in Arduino IDE, this cannot be done because all addresses are treated as is 16bit so a 2D array has address bits missing. The pgm_get_far_address that converts 16 bit to 24 bit (actually 32bit) appears to go behind the scenes and essentially ask the linker - hey where is this really as there are address bits missing. Painful. Geoffrey, NZ
Very nice. i find VSCode better to use than Arduino IDE for my ESP32 development. I always thought the PlatformIO logo was of an ant head, not an alien?
What is the difference between PlatformIO extension and the EspressIF IDF extension? I want to use VS Code (instead of the EspressIF IDF environment), but when I install/configure the extension, it keeps looking for the IDF before installing the IDF! I tried installing IDF/Tools directly (esp-idf-tools-setup-online-2.20).. and compiling via the command prompt works fine (idf_py build), yet VS Code IDF extension still does not see it! Any plans to do debug using a JTAG programmer? I bought an FT2232HL device (ESP-Prog), pointed it to the WinUsb driver (via Zadig), but how does debugging work ? For example, does it automatically start OpenOCD and load the elf file onto the ESP32? And if you unplug/plug, does the last debug program run, or was the debugger running out of RAM?
SO basically yolu still manually write the CPP code for the Arduino and then uploadc it but you just add a lot of complexity to how it is configured and managed... Perhaps interesting if you work on multiple platforms, but if you're a Die Hard Arduino user, then this is overkill....
I still program in assembler. and yes!, my software is not portable anymore, but i can duplicate my ideas any time to spare memory. Why making a program wasting 2MB when can be done in 1KB. Lazy people waste more memory
It is, but I believe that everybody who is capable of programming a microcontroller reaches the limit of the Arduino IDE after about 3 projects with it. PIO is the next step on your embedded systems journey.
How do you get the example projects from Arduino IDE to a PratformIO project. In the Arduino IDE all the code one needs is 2 clicks away. How do I get anything here?
Click the PIO symbol on the left (if you're using VSCodium), click "Open" in the "Quick Access" menu and you will then see the main page of PlatformIO. Next to the logo, 4 buttons will appear: "New Project", "Import Arduino Project", "Open Project" and "Project Examples". Hope you can spare an extra click; I counted 3
Re: 0:43 - actually, I AM kinda stupid. That's part of the reason I'm stuck with Windows. Fortunately, .exe apps tend to just install themselves if you don't interfere. If I have to apt get something, we're just gonna die. I'll give this a try. Last time I did a 328P project I was still using the Arduino 1.xx IDE. I usually don't have a problem with debugging my code but this looks spiffy. Thanks for this video.
I have a problem with plataformio, after clean and build my project when I try to run it in the terminal it appears this message "main.cpp:1:10: fatal error: Arduino.h: No such file or directory #include ^~~~~~~~~~~ compilation terminated." does anyone know how to solve this
Its too complicated and bloated of an editor just for a simple microcontroller. The worst you not mentioning is sometimes it works sometimes you have to fiddling around just to make the same project work again just because you edit your code. I've been trying to migrate to platformio but after a long time and a lot of struggle i give up
Platform IO seems to have a steep learning curve and I haven’t seen the need to use it yet. I do like some of the Eclipse-based IDE’s used to support STM32, ESP32, and other devices.
Can you generate for me code of trafic to communiacat at four way where by they are 4 esp and led green, yellow, led at four way one esp to act as master
PIO core CLI makes you able to compile and run your code from any terminal. If you dislike its or its editor's UI then you can completely bypass it that way.
Due to a recurring disliking for VSCode, here's a list of possible integrations of PIO. I also switched to VSCodium since then, which I can highly recommend. So now you can stop spamming "Micro$soft bad" under this video about PlatformIO, because it is completely unrelated to Micro$oft on its own, see below:
VSCodium (VSCode minus Microsoft)
Atom
Cloud9
Codeanywhere
Eclipse Che
CLion
CodeBlocks
Eclipse
Emacs
NetBeans
Qt Creator
Sublime Text
Vim
Sourced from: platformio.org/install/integration
Enjoy!
Atom is end of life.
vscode, atom, cloud9, codeanywhere,eclipse, clion, codeblocks, emacs,netbeans, qt creqtor, sublime, vim
all are just terrible, unusable, impractical, electron based or use 10gb of ram for a hello world, all the positive things that platformio could bring to the table are negated by the awful choice of integrations
vs code rules
you are a star!
@@PokettoMusic That's about every editor that is available, so I wonder what isn't terrible, unusable, impractical, electron based or RAM-hungry. Surely tools like vim, emacs and clion clearly stood the test of time in both a hobbyist and professional context.
Oh and to add to that: the PIO core CLI makes all commands of PIO usually used in the UI available as command line tools, which means that you can write your code in nano or notepad and directly compile and upload from the terminal, no 3rd party editor involved.
I have tied PlatformIO on and off for over a year, and I have to say it is a mixed bag. Its biggest advantage is that it allows each project to have specified versions of libraries; this is advantageous if you have an older project that will break if a newer version of a library is used with it.
Otherwise, it adds it own quirks and moderate learning curve. There are subtle gotchas that someone else commented about.
i mean its indispensable for me because of the intellesense, autocomplete, linting, etc.
@@NithinJune That's what drove me from the ArduinoIDE to this video. Apart from that, I was confused that the ArduinoIDE just tries to compile everything within that folder. It seems like they don't want somebody to program something, which is much bigger than a small program within one file.
Doesn't PlatformIO even enable you to take more control about the Language standard you are actually using?
I didn't find the gotchas, yet. Which one does qCNC K mean? Is there any danger, that code might not be compileable in the future?
you can even set a dependency in lib_deps to be dependent on a specfic commit hash of a git repo if there aren't version tags for that lib
i hate having to play the guessing game which libs and version a project needs so i wish everyone would use platformio because of dependency management.
even more than autocomplete i use the code navigation to quick browse into the libs (control + click on function name) and like in a web browser i can click the side button on my mouse to go back
feels more like linux where packages describe what exactly they depend on ...
I have to say that I loved your fast tutorial.
I was overwhelmed by all the VScode buttons, windows, things opening and closing, files and folders, blablabla... and you solved it in 10 minutes. No waiting times for you writing down hello world code letter by letter, just focus on what is relevant for the topic.
good job
Thank you! I am an experienced developer on microprocessors but haven’t used vscode or platformio before. Usually when I try to learn something new, I have to sit through “what is binary”, and “why use a microprocessor”, etc., with about 2 minutes left over for the topic! Thanks for understanding that not everyone is a newbie and doesn’t need binary explained! It looks like your channel is new so I hope for more content like this. Subscribing…..NOW!
Me2!
@@DataBoy1957Me10😂
The best thing that Arduino IDE has going is that the serial terminal is no nonsense and quick. PlatformIO takes longer to start and is a bit more difficult to use when using the terminal a lot during testing. It's nice to have it auto stop and restart between uploading.
I do agree that PIO has a bottleneck at every uploading cycle. That becomes noticeable when you only make small changes and need to upload often within a short time. It starts to get annoying. However, i can't see how any developer would choose a fast serial terminal over code completion, multiple supported platforms, debugging compatibility and more.
@@jse-shack825 right? I use PIO exclusively now and keep an Arduino window open only for the terminal. Unfortunately, most lightweight terminal apps all send line after each character entry not when return is sent, so it's still the best option when in early development. The PIO library management is great and also got, being able to compile for multiple targets and upload with the hex that's for the right target is absolute gold
@@phantomhck realterm?
I don't know how the Arduino "IDE" is nowadays (haven't used it in ages), but last time I did, calling itself an "IDE" was an insult to all actual IDEs.
The most advanced feature it has today is code suggestion. It works about 1/4 of the time and is still technically an experimental feature.
@@georgertheexplorer4114 isn't there arduino ide 2.0 based on vscode?
@@mdev790 hope not. VS code is shit.
The new 2.0 isn't half bad tbh. It has potential
I used it years ago and then installed it to use it a few months ago and it had regressed. I am unsure how they managed that, but they did. I was mortified.
As someone who is just slowly getting started in the Arduino/ESP world, you are exactly the type of UA-camr you need. Thanks !
I came here for the knowledge, stayed for pure content. Love your attitude man, hope to see more videos soon!
Great video. Finally, someone who realises we are not all new developers. I'll be watching a lot more of your videos. Thanks.
It should be pointed out, that platformio is not part of vscode. The vscode-platformio-extention make use of platformio and add a nice IDE integration.
No, it shouldn't
Just like it shouldn't be stated that Windows/Linux is a part of HDD/SSD
To the point and delivered with dry humor and sarcasm. What more could a person want? Great job!
This is a perfect introduction for me! I'm not new to microcontrollers, nor development, nor VS Code - I just wanted to know about PlatformIO specifically, and you did that in 10 minutes!
Well, I HAVE still been using the arduino IDE, but I got only a minute through your overview, and said, I need this!
Great, short tell-it-all.
Your clear explanation rescued me from days of frustration battling a persistent bug. While my Arduino functioned flawlessly when I utilized the Arduino IPA to upload the code, I encountered complete silence when attempting to do so through VSCode Platform IO. I discovered that the solution lied in crafting my own code within main.cpp rather than simply creating a folder with a name and a file with the name.ino extension. Your guidance was invaluable. Thank you!
Oh man thank you ! Finally a video that explains what I didn't get before: being able to understand what to do within Visual Studio Code & platform IO
Can you demonstrate RPI Pico development and debug using Platform IO ?
It's a great a software, but for beginners I thinks AIDE is better just because is more simple to use. Right?
I'd love to see that video on unit testing! It seems like a super helpful tool, but is currently pretty confusing
Great video, but in the Arduino IDE I get great use out of the library examples accessible via the IDEs menu. Is that possible in PlatformIO?
I appreciate this vid -- "beginner moves on to intermediate." I'm an Arduino IDE user whose Mac dev machine crashed, giving me the "opportunity" to start fresh... I chose to use a Pi400 with a clean install of Bookworm, the Arduino IDE, and vscode, but I had only a vague idea (with advice from bard) that PlatformIO fit into the MCU picture. This vid was ideal, thank you.
I just started programming Arduino and my favorite approach so far is make + arduino cli.
As a 11y of experience in software engineering I don’t like being attached to any IDE (click, drag n drop)… I have my reasons…
But I will take a look on platformio cli, seems interesting.
Thank you.
That's what I love about PIO, the core CLI basically lets you choose any editor, because editing and compiling/flashing/debugging are two entirely separate processes. The core CLI can even do wild stuff like remote flashing and unit testing, which requires a PIO account. Did that with a remote Raspberry Pi which had an ESP32 connected on-site, making me able to flash new firmware remotely, almost like OTA updates without the usual OTA stuff.
You should give the Arduino IDE a new look. It's now a full fledged development environment with a dark mode, syntax highlighting. More of the tools are easier to use and it's much faster than the old version. IDF is now fully supported.
I tried the most recent Arduino ide a few days ago, it seems like a massive improvement on the original. Still vs is probably better, need to try platform io.
For some reason Platform IO gives me a ton of headaches. It is wonderous when it is working, godlike when working seamlessly. But, maybe it is just settings on my computer. I spent a week reading internet searches, playing around with my Windows PATH. Installing two drivers. And I finally having it working okay again as of yesterday. But. during the six months after discovering PIO, I also found Visual Micro. Which is an extension for MS Visual Studio (NOT VS Code!). The only framework it uses as of now is Arduino. But it gives you all of the power of the Goliath of a program Visual Studio, and the ease of folder and file management. I need to say, with it being a paid software, and that I have a paid version, I am happy with it. But I have high hopes for the potential of Platform IO. And I will tame the beast and have it working seamlessly without interruptions sooner or later. Chasing bugs and conflicts or issues goes with the territory.
Gee you like complexity, IDE 's can be difficult to use like anything easy when you know how. I like the Arudino interface
Have you been able to use the intellisense feature for the HAL? When I use it with STM32 cube framework, everything works, compiles, builds, etc, except accessing the HAL itself(header / source files). I've seen plenty of pp complaining already but no solution, so I wonder what was Hou experience with it. Thanks!
thanks, all 10 minutes worth the time. even though i am new to this, i like it more if there is one video for one topic and not a huge explain-it-all.
I was a little surprised that my old boss insisted that I do all my code development using the Arduino software. I told him that Arduino is good for hobbyists but serious developers use other more capable software. Before I left, I was able to get my boss to finally dump the 8-bit Atmel microcontrollers for new projects and use cheaper 32-bit devices like the Pi Pico. Currently, I am using VS Code for building binaries and debug at my new job. So far, I have only played around with Platform IO a little bit.
Two issues you have not mentioned when migrating from original IDE. The "porting" of existing Arduino projects, where you have to move functions above 'loop' and some/old libraries incompatibilities (Newhaven lcd comes to mind). I use vscode with Arduino plugin. Better than original Arduino ide but no issues like with pIO.
re: moving functions -- that's just how real C++ programming works. In Arduino C++, the IDE "automagically" performs function hoisting for you, adding invisible forward declarations at the beginning of your file, which is not standard/real C++. To do this properly, you should have a header file with the declarations of your functions, which is what you need in PlatformIO. You can't really fault it for being more like a standard C++ compiler in that way.
platformIO better. cause can more.
i can say: i want esp32 with arduino framework. and i can say: i want esp32 with the original sdk.
i can say i want some stm32 contoller with arduino framework, or with MORE other SDK's and real time operating system frameworks they support with that board ...
and i just need to write ONE ini file to automatic download and configure all that complicated toolchain stuff...
@@Henry-sv3wv exactly, you automatically get OUTDATED, old libraries and toolchains, especially for the ESP8266, and probably for ESP32 also. If you want to do something, none of the official documentation will work, because platformio has outdated things.
Could you please make a tutorial on splitting code in Platform IO? There is no good place to learn that. Everywhere I looked, they were saying that it's the same as in the normal CPP but I still can't do stuff like global variables and libraries. I would greatly appreciate a tutorial covering that topic.
Congrats, you just predicted what the next video will be about.
@@jse-shack825 oh I love it. I've spent like 6 hours researching this topic and still know nothing about it.
@@jse-shack825 any idea when you'll get.git.got around to it?
Yes that would be great, I've spent hours trying to migrate my code from arduino ide to vs code but eventually gave up and now I'm still using arduino.
Proper video mate! many thanks, keep it up legend!
Excellent presentation. Thanks for cutting through the BS and delivering the facts clearly with examples. Refreshing to see something in this format, considering what tends to make up most of today's UA-cam environment
Thank you so much to not go over flowers and bees when describing some extension and cutting right to the chase 👍
Brilliantly jam packed video with golden information. Thanks my man!
I with they would offically support sublime text, I feel it is a much better and lighter editor than vscode.
They are Editor agnostik. Work with any Editor. Just depend on how much you need to do in a shell.
As soon as you assumed I wasn't an idiot, I subscribed. Thank you!
The serial monitor is imo the best part of PlatformIO. It supports ANSI commands so you can do colors and move the cursor around. It's so much better than the garbage that came with Arduino IDE 1.
no bullshit direct honest video, no fancy dangy dingy shit. SUBSCRIBED!!!
I used Platformio when I compile code for SKR 32 Bit Control Board with marlin firmware. Very useful..
A linking tutorial would be very helpful. I cannot get it to consistently link libraries and dependencies. It seems to parse them some projects yet not for others and I cannot figure out why. Searching web I see a lot of forum posts with similar linking issues. It's to point where coding is almost pointless because it won't link certain things. Yet Arduino despite being a very crude IDE has no issues linking.
You explained this so well I have subscribed to your channel.
I agree Sir!! Arduino is so slow too... VS Code can do anything with extensions. It can run many different platforms and environments. Good code/file: reader, editor, testing, debugging, creating, compiling, and burning program. And runs efficient and fast. Faster build and test than Arduino IDE. Although Arduino is a really good system, It feels like everything about Arduino is 8 bits. Even their app.
If you are looking for speed, PIO is not the right choice, but a specific build chain for your target controller. This, as the name implies, comes at the cost of working for one controller family only. PIO is a good tool to stay flexible and multi-purpose, allowing you to run parts of your project in the context of VSCode rather than just embedded firmware, such as the preview of an embedded web server or code generating python scripts.
I'm all for improvements over the arduino IDE. But why swap it for another crap one ? VSC is awful with it's hard-to-read text, split-pane view, and annoying memory of distant projects. I want to divide my screen up sensibly with overlapping, indefinitely-sized windows, readable text and projects that stay separate.
If only i could give your comment a 1000 ticks I would. Yes what a joke VS**** is, if only PIO could be used with another IDE it could be superb.
Love it! And I subscribed. Best wishes, and thank you for expanding my tool kit.
It’s easy to be judgemental about Arduino IDE, but everybody starts off with basic readers that read like the cat sat on the mat, but nobody keeps reading at that level. Arduino IDE is a great start for those that are not Nerds
So you're criticizing someone's assumed feelings about it?
@@seriouscat2231 are you serious? I was just saying that his scathing attitude regarding Arduino IDE is out of line. This IDE has launched the skills and interest of many people, it is a solid reliable IDE. It is good that he has found a better way, but he obviously started with Arduino, and his new way is a step up from that, good for him
@@ianbirkinhead4103, I think you should decide. Either you criticize some fact or you criticize a sentiment or an attitude. Two different things that should not be confused. I did a thing or two with Arduino IDE and felt immediately limited by it.
Thank you for the video - very well put-together!
Nice tutorial Sir, hope we get more in-depth platformIO tutorial
This great job brother, Thank you very much indeed.
Adding mySql database connectivity to a project. PlatformIO started complaining over non compilable libraries. Loading the same project in Arduino IDE, compiling was no problem at all. So how's that for awkward.
compiling without problems...
did you even had a thought that if you don't have any warnings\errors it doesn't mean that you have everything work as expected?
Useful and funny as well!! Thanks.
Good video, but I don't understand why you didn't think of swapping your "Visual Studio Code" for "VSCodium" ?!
Excellent Video. Thanks for sharing. Where do we put libraries that will be used by many projects. Edit: I think I have it hand
very nice video.
based on his intresting humor. i think this guy is from deutsland ( germany ) ?
Great video, wish I had found it ages ago!
Excellent video overall! Thank you.
The "Test" icon is not specifically for TDD (Test Driven Development) which is a software development "philosophy" of writing unit tests before you write any actual code. The Tests button is just a shortcut to the area where you create/store unit tests... which should never be confused with TDD. One is a philosophy, the other is simply unit tests. You can write unit tests all day long without adopting TDD. It's fine... you skipped over all the testing areas because you don't know anything about it and that's perfectly fine... no one "young" ever wants to write tests. Also, git is not an "archiving" system. It is a distributed version control system.
Before everyone accuses me of just being a dick... which is exactly how I know the above will be received, know that I mean it in a constructive way. The only reason I mention it is because I know you will do well in both software and UA-cam and will end up with many followers. Those YT followers will listen to everything you say and take it for fact without question... and possibly learn some things that may not be 100% correct. Were you wrong per se... eh, not really. What I'm saying, or asking rather, is that as an influencer you make sure to use the correct terminology... or at least as close as possible so people don't have to unlearn the stuff later.
Like I said at the top, excellent video! And yes, the Arduino IDE blows and VSCode is a much better solution. Subscribed.
this is really great!!
can you do full wireless network project with Arduino uno?
One thing I find very annoying when using the Mega2560 is that accessing flash above 64KB requires use of a 24 bit address to cater for the 256KB flash. In the standard Arduino IDE this is a cludgy solution requiring conversion to far addresses (from what are compiler known 16 bit addresses). Does platformIO, or any other compiler that you are aware of, deal with this in a more orthodox manner wherein full addresses can be specified on 2560. It would also mean that things like a 2D array of characters in flash would be possible. At the moment, in Arduino IDE, this cannot be done because all addresses are treated as is 16bit so a 2D array has address bits missing. The pgm_get_far_address that converts 16 bit to 24 bit (actually 32bit) appears to go behind the scenes and essentially ask the linker - hey where is this really as there are address bits missing. Painful.
Geoffrey, NZ
I never comment on videos, but this was a great video. Thank you
And now an project with more then 1 source file.
It's in the arduino ide piece of cake, however in platformio a nightmare.
Make a video on that.
Quite the opposite of a nightmare: ua-cam.com/video/_84rkq9a5jE/v-deo.html
Very nice. i find VSCode better to use than Arduino IDE for my ESP32 development. I always thought the PlatformIO logo was of an ant head, not an alien?
What is the difference between PlatformIO extension and the EspressIF IDF extension?
I want to use VS Code (instead of the EspressIF IDF environment), but when I install/configure the extension, it keeps looking for the IDF before installing the IDF! I tried installing IDF/Tools directly (esp-idf-tools-setup-online-2.20).. and compiling via the command prompt works fine (idf_py build), yet VS Code IDF extension still does not see it!
Any plans to do debug using a JTAG programmer? I bought an FT2232HL device (ESP-Prog), pointed it to the WinUsb driver (via Zadig), but how does debugging work ? For example, does it automatically start OpenOCD and load the elf file onto the ESP32?
And if you unplug/plug, does the last debug program run, or was the debugger running out of RAM?
SO basically yolu still manually write the CPP code for the Arduino and then uploadc it but you just add a lot of complexity to how it is configured and managed... Perhaps interesting if you work on multiple platforms, but if you're a Die Hard Arduino user, then this is overkill....
i feel blind without code navigation:
ua-cam.com/video/MuQmMsIpI04/v-deo.html
I still program in assembler. and yes!, my software is not portable anymore, but i can duplicate my ideas any time to spare memory. Why making a program wasting 2MB when can be done in 1KB. Lazy people waste more memory
@@soulrobotics and the best part is .... his actual CODING is still done exactly in the sae way, he just adds wrappers and layers. You a re so RIGHT !
Looks like a lot of hassle for nothing when the Arduino environment is plain and simple to me!
But each to their own I suppose.
Arduino ide is straightforward
It is, but I believe that everybody who is capable of programming a microcontroller reaches the limit of the Arduino IDE after about 3 projects with it. PIO is the next step on your embedded systems journey.
Just use the Arduino IDE 2.0
Dudeee, your content is the shit! An instant subscriber.
Bro is making proggramming into hillariamming (programming + hilarius)
Nice. Would you know how to change the font face in terminal? Cheers
that means u put ur .h files in the lib file and in the include file?
Thank you very much for this. This has inspired me to switch to platformIO in studio code … thanks bud.
What’s wrong with ESP-IDF? You don’t get access to everything using the arduino framework.
Can i use a git hub code originally made for arduino in esp 32 ?
Thanks a lot! This is the best guide!
Brilliant content. Helpfun and entertaining. Subscribed.
How do you get the example projects from Arduino IDE to a PratformIO project. In the Arduino IDE all the code one needs is 2 clicks away. How do I get anything here?
Click the PIO symbol on the left (if you're using VSCodium), click "Open" in the "Quick Access" menu and you will then see the main page of PlatformIO. Next to the logo, 4 buttons will appear: "New Project", "Import Arduino Project", "Open Project" and "Project Examples". Hope you can spare an extra click; I counted 3
@@jse-shack825 Thanks a lot
what about Arduino bootloaders on Arduino cards, and AVR chips?, what if I need to use an Attiny85?
I didn’t see the .ino file, is that unnecessary for the project?
(High pitched fake voice from way in the back): What about ATTiny?
"absolute gigachad" got me unprepared
So can you set this up for pic micro or not as yet to be used pic kit 3 / 4
just use arduino ide pro 2.0? yes it's sill under dev, but it does the job?
Re: 0:43 - actually, I AM kinda stupid. That's part of the reason I'm stuck with Windows. Fortunately, .exe apps tend to just install themselves if you don't interfere. If I have to apt get something, we're just gonna die.
I'll give this a try. Last time I did a 328P project I was still using the Arduino 1.xx IDE. I usually don't have a problem with debugging my code but this looks spiffy. Thanks for this video.
guyz help me
when i switch to platform io it work but is show a lot of cmd apps
how to get read of them
Arduino ide is easy to use as is the debugging, the debugging is as good as you write it to be. Skill issue.
Wow so simple and fast, sarcasm.
But without thousands of libraries how do you make anything work?
it took over half an hour before i cancet it on my new pc
is that still normal?
I have a problem with plataformio, after clean and build my project when I try to run it in the terminal it appears this message "main.cpp:1:10: fatal error: Arduino.h: No such file or directory
#include
^~~~~~~~~~~
compilation terminated." does anyone know how to solve this
Have a look at my warnings re this sort of thing when using vs**** - @joeking5211
Its too complicated and bloated of an editor just for a simple microcontroller. The worst you not mentioning is sometimes it works sometimes you have to fiddling around just to make the same project work again just because you edit your code. I've been trying to migrate to platformio but after a long time and a lot of struggle i give up
I agree. Bloated and unnecessary
Platform IO seems to have a steep learning curve and I haven’t seen the need to use it yet. I do like some of the Eclipse-based IDE’s used to support STM32, ESP32, and other devices.
but it cannot debug arduino DUE right?
Can you generate for me code of trafic to communiacat at four way where by they are
4 esp and led green, yellow, led at four way one esp to act as master
Why not just use the CLI interface at the command line of your terminal?
PIO core CLI makes you able to compile and run your code from any terminal. If you dislike its or its editor's UI then you can completely bypass it that way.
But what's better than arduino ide?
why make it simple if it’s possible to make it complicated
plattformio is totally overloaded. if you click somewhere, something new is constantly being started. i hate it
not matter yet again something same arduinoide works
Hello i am new on vs code have project but could not remove errors can anyone help
did u see arduino 2.0
I installed Arduino 2.0 and was disappointed in it. The debug capabilities are limited to a few pieces of hardware.
lol hahah never gonna use the Arduino IDE again. Thanks!
Visual studio is as much fun as a rectal exam to use
Rectal noise trying to act as speech?
no, can't be, its just noise