Using tabs to organize code with the Arduino IDE
Вставка
- Опубліковано 23 кві 2022
- 🤩 FREE Arduino Crash Course 👇👇
bit.ly/get_Arduino_skills
✅ Sign up to get $100 on NextPCB: www.nextpcb.com/register?code...
✅ $0 for 1-4 layers PCBs: www.nextpcb.com/pcb-quote?act...
✅ PCB Assembly capabilities info:
www.nextpcb.com/pcb-assembly-...
**Want to learn more? Check out our courses!**
bit.ly/3vJ80um
Arduino Sketch Build Process Website:
arduino.github.io/arduino-cli...
**Get the code, transcript, challenges, etc for this lesson on our website**
bit.ly/3EFdfix
**We designed this circuit board for beginners!**
Kit-On-A-Shield: amzn.to/3lfWClU
SHOP OUR FAVORITE STUFF! (affiliate links)
---------------------------------------------------
We use Rev Captions for our subtitles
bit.ly/39trLeB
Arduino UNO R3:
Amazon: amzn.to/37eP4ra
Budget Arduino Kits:
Amazon:amzn.to/3C0VqsH
Multimeter Options:
Amazon: amzn.to/3rRo3E0
Helping Hands:
Amazon: amzn.to/3C8IYXZ
Soldering Stations:
Amazon: amzn.to/2VawmP4
AFFILIATES & REFERRALS
---------------------------------------------------
►Audible Plus Free trial: amzn.to/3j5IGrV
►Get LastPass: lastpass.wo8g.net/b3N1vk
►Join Honey- Save Money bit.ly/3xmj7rH
►Download Glasswire for Free:bit.ly/3iv1fql
FOLLOW US ELSEWHERE
---------------------------------------------------
Facebook: / programmingelectronics...
Twitter: / progelecacademy
Website: www.programmingelectronics.com/
________________________________
Did you know in the Arduino IDE that you can organize your code using different tabs? In this lesson, you’re gonna learn how to add these tabs, how they get organized in the Arduino sketch folder and how to use them in order to better organize your code. Stay tuned. Before we get started, if you wouldn’t mind subscribing to the channel, it really helps us bring you the best content. It doesn’t cost you anything but a click and it allows us to keep doing this. All right, so here we are in the Arduino IDE. I’ve got a program open. It’s called Tabbatha and I have got a sketch written out. So, let me just familiarize you with the sketch so you kind of get an idea what’s going on. So I’ve got some neopixels. Those are individually addressable LEDs. It’s like an individually addressable LED strip. You’ve probably seen ’em around. Really cool looking. And I’ve using this library called fastLED to control them. And I’ve got some variables here that set up the number of pins and which data pin I’m using and and a array to store the different LEDs that I’m in. Okay, and then I have some functions that do some different things. So one is setting them all the LEDs red. Then one sets ’em all blue, one sets ’em all green but it uses this little fadeall function in here that kind of makes it interesting. And I also have that function right here, fadeall. So I’ve got four functions and then below that I have my setup in my loop. So in setup, you know just start serial communication and then I’m just initializing some stuff for that fastLED library. Nothing crazy going on in setup. And then loop, all I’m doing is I’m calling these three functions: setRed, setBlue and setGreen. Okay, so what I wanna do is I wanna you know there’s a lot kind of, I don’t know, going on in here. Maybe I wanna like reduce the clutter in here and let’s say I wanna put each one of these functions in its own file, in its own tab. All right, so all of the files that you create in Arduino are gonna live in the Arduino Sketchbook folder. And you can figure out where your Sketchbook folder is by going to if you’re on a Mac, you’d go to Arduino Preferences or if you’re on a PC, I think it’s File Preferences. And the first thing they show is your Sketchbook location. So the location of my Sketchbook folder is under my name, my documents, and then in a folder Arduino. And then I have saved Tabbatha somewhere inside this folder. So I’m gonna go ahead and open that up. All right, so here is the folder Tabbatha and you’ll notice I’ve got a .eno
CONTINUED...
bit.ly/3EFdfix
**About Us:**
This Arduino lesson was created by Programming Electronics Academy. We are an online education company that seeks to help people learn about electronics and programming through the ubiquitous Arduino development board.
**We have no affiliation whatsoever with Arduino LLC, other than we think they are cool.**
You had me at FastLED LOL. And now I'm clear on tabs, prototypes and preprocessing. Another great tutorial, thank you!
Thanks so much - Glad it helped and thanks for the note!
I chuckled to my self when you pulled out that 'TabbaDabba'. Thanks for helping us stay a little more organized.
Thanks for the note Shawn! I try not to take myself too seriously and have some fun occasionally :)
Thanks a lot for this! I have been coding Arduino for a while, and I didn't know about this! I guess this is what they call modular programming. It helps a lot to break things up in smaller, digestible pieces.
I've been banging my head on the keyboard for a couple days trying to figure this out. I watched several videos that didn't help. THANK YOU!!! It's so much simpler than I thought.
Glad it helped! Thanks for the note and thanks for watching!
I like it! This will make long sketches more manageable and easier to debug. I have an old non-Arduino program that I will rewrite as a sketch - it's 400 lines long. I'll use tabs.
Very cool Keith! I feel like I rediscover this feature every so often and then get excited to use it again :)
@@programmingelectronics Hey I was wondering if you could tell if I can use Pre Processors to eliminate inter-dependencies of files which have classes in it. I would really appreciate if you can tell me something about it.
Thank you so much for making these videos, it has really helped a lot.
Awesome video! This will make my sketches so much better. Thank you.
Thanks a ton for watching Warren! I’m glad it helped!
Very good instructive video. Clear and useful for the daily practice. Thank you!
Thanks so much for watching - really appreciate the comment! We'll do our best to keep them coming...
I was looking for a video on how multiple sketches would work with each other inside a single folder and this really help
Great - glad it helped Jeremiah!
Very clear, thank you for your efforts.
When you named the first tab, I thought that you said "Your mama", I got seriously shocked for a moment 😂😂😂
Excellent content, Keep up the good work!
Thank you!
you are welkom!@@programmingelectronics
Great and clear video! For my tabs I normally prefix them with 01, 02, 03 so I can sort them with the flow that I want instead of alphabetically.
Great tip Jon - Thanks for sharing!
Test_WemosD1mini:501:6: error: expected unqualified-id before numeric constant
501 | void 3countSTARTUP();
1 or 01 prefix trigger an error, good tips but it doesn't seem to work on IDE1.8.19....! Must use letter prefix like: void A_myfunction();
@Tango charlie I _think_ the issue you are having is that you cannot start function names with a number. Otherwise you'll be fine.
@@programmingelectronics Hey, I am wondering why is that we cannot use numbers in functions /names? Because I guess today compilers are advanced enough to differentiate between functions and stuff right?
@@yashaswikulshreshtha1588 That is a great question! I am not sure of the answer.
So excited, I comment first.
I really hunger for this, didn't wrap my head around it first time, hopefully this time I'll due to my trust in your teachings. Because of your awesome teaching I ditched using delays despite it being a difficult habit to leave.
Greetings from Tanzania 🇹🇿
With "Royal Tour" :)
Thanks Raymond!
This is so easy to understand.
I can program Visual Basic but I'm a newbie to Arduino, and this allows me to modularise my code like VB.
Great! Glad it was helpful!
OmG
Thanks for posting this, helped me a ton!
Glad it helped! Thanks for the note!
Great insight!!!! Thanx a lot.
A large sketch will require lots of scrolling. This is a neat solution and makes life easier. Thanks.
Totally agree Berny!
Awesome. Thanks!
Thanks a lot, this helped me a lot so I can finally continue
Great! Best of luck!
Thank you!
Easy to follow. Great video
Thanks Hassan!
Thanks for the explanation it's clear and easy to understand and alleviate my problem how to deal with massive code in arduino.
Thanks so much Andrew - I appreciate the note!!
Cool demonstration. This is a better approach to writing functions for your sketches. It will minimize scrolling to writing code blocks in one file and improve the writing process.
Thanks Bruce! I agree I think it can help quite a bit to reduce a bunch of scrolling up and down a long sketch.
@@programmingelectronics one wastes a lot of time scrolling searching for code. Now just click on the tab.
I know I do!
Fantastic tutorial, thank you!
Thanks for watching!
EXTREMELY useful. Thank you. Yet to try it, but sure looking forward to making my code easier to read.
Great! Thanks so much!
@@programmingelectronics Unfortunately, Tab is not without its own issues, I am finding. Seems to add another level to debug unless the content of the tab is very simple. As ever, tenacity is required
so good so far, you did for me, thank alot
Glad it helped!
Very helpful as i am just getting to splitting up larger files and searching the Arduino was not producing applicable results. Your video was clear and consise..
Great to hear! Thanks for watching!
Thank you. Useful stuff.
Glad it helped! Thanks so much for watching!
Thanks you it's what i was looking for to simplify my code.🙏
Glad it helped!
There was a question about if you could set up tabs, so that the functions could be used in other programs - and update in all the programs when the tab was updated - like a library (The comment disappeared when I was attempting to reply - my bad!).
This would be really pretty cool, but unfortunately it wouldn't work. You'd need to have copies of that .ino file in every sketch folder where you wanted to use it , and then every one of the files would need updated if you made changes. In that case, setting it up like a library would be the way to go.
Thanks for this tutorial, is kinda the concept of "MVC/MVVM" Controller structure for organizing code in iOS/Swift ...this is the way for any Object Oriented Programming ;) ...I like so much your teaching skills and I hope you would be the one starting teaching Swift and Arduino with the SwiftIO board architecture 🙏🏼
Thanks for the note!
Great walkthrough of the process
Thanks for sharing your experiences with all of us :-)
Thanks a ton for the note and for watching!
@@programmingelectronics Any time 🙂
Great info. I am a Subscriber now. I will label my tabs A=green b=red c=blue Thanks 👍
Thanks so much for watching! I’m glad it helped!
Cool, that is going to be very useful, for robotics I can place different routines in different tabs
Great- I hope it helps! Thanks for the note!
LOVE it!!
Thanks Josh! I really appreciate it :)
Thanks for clearing that up. I was assuming the tabs were all separate...but the compiler kept saying otherwise...LoL. Anyways, thanks again.
Glad it helped Dave!
Creative video, thanks for sharing :)
Thanks a ton for watching! So much appreciated!
great Explanation
Thank you!
Excellently presented content!
Thanks Scott!
The tabs were kind of a mystery, having come from a mostly Visual Studio background. My first experience with the Arduino IDE was 3d printing related, working with the .h files for configuring Marlin code. Nice to understand they are like pages essentially. I'm starting to use them now. Thanks.
Great stuff for the new(er) people!
Thanks so much! I hope you can find it useful.
I have struggled with this for a couple of weeks:
A previously working sketch threw hundreds of errors when split into tabs.
My problem was that I appear to have fallen into the "rare cases" category, and had to manually add the prototypes up near my includes.
Subscribed.
Great you got it figured out!
Your videos is amazing sir .👍👍👍Please make more videos on this topic with complex examples and operations.
Thanks so much!
Thank you.
Thanks for watching!
Good tip!
Thanks!
This is the best video of subject
Glad you liked it!
Thanks for that video. I have a friends sketch, and was having a hard time reading it. Not now!
Nice! Glad it helped for readability!
Excellent! I've wanted to know what this was and how it was done. Older 3D printers that used Marlin firmware used to have all those tabs.
Awesome! Glad it helped it helped Donald!
gracias !!
Thanks for watching!
Very nice tutorial..
Thanks for watching
Very clear and helpful explanation of how to make a big sketch more manageable. Can you do one on how to then migrate those multi-tab sketches from Arduino IDE to Platform IO?
Thanks for the recommendation Steve! I'll see what I can come up with!
Thank you...! if the function has parameters, what do the tabs look like?
Good info
Thanks Ratan!
I'm new to programming in general, but I have read something about organizing our program. Help, I have questions :
1. since it works in alphabetically order, do we have to adjust the filename according to the program order (following which function come first in the source code) ?
2. what's the difference of calling function from this Tab method, and calling function from library/class (if I make a new file as a library) ?
Thank you very much for your clear and comprehensive tutorial, BTW
I have been hoping someone would explain the tabs Thank you so much!! would you mind also touching on local and global variables in the tabs with public and private, I am trying to understand this part of the tabs Thank you again for all your help !!
Great! Glad it helped Paul! I’ll see what we can come up with to address that question!
Can we define variables also in separeted tab? Along with related functions?
I wanna use line numbers and Goto's!! I wish there was a Basic IDE for Arduinos. My brain hates curly brackets.
Can we define variables in those tabs ??
Great explanation! Will this also work the same in the web editor?
I believe so Brett. Thanks for watching!
This explains what I really wanted to know. Why do other UA-cams make it so complicated? Thanks
Thanks for watching! Glad it helped!
How to decide board reading.ino file esp8266 or esp8266-01,in my case Generics esp8266 board error
Hello sir, I have a code for ws2812b led which has 12 effects change by push button. But when i off and on it again it's start from frist effect. I I want that when I turn it on it should be on the same last effect on which it was turned off. Please help me 🙏🙏
Can your functions all go after Loop instead of before setup?
Great question! Yes they can. We did a previous video on organizing code that talks about adding function prototypes prior to setup if you go that route which a lot of folks prefer.
I like it, especially the file name. How do you spell 'Tabatha'. So funny.
Thanks Tan!!
at 1:40 can someone explain line 52 interms of c++? I didn't understand it.
I hope you can make a tutorial also about creating cpp and header file inside one file thanks
Great idea - Thanks for the recommendation!
@@programmingelectronics I second this suggestion!
Thanks @@jon_raymond Taking note!
Mmnh 🤔, second comment after watching, this is helpful as in "good to know" but not what I hunger for.
Please create another tutorial on using header files (.h), just like classes
Thanks for the recommendation Raymond!
Hello could you please help me out with this error
Arduino: 1.8.19 (Mac OS X), Board: "ESP32 Dev Module, Disabled, Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 921600, None"
exec: "python": executable file not found in $PATH
Error compiling for board ESP32 Dev Module.
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
Is there a precedent for putting a library in a tab? I seem to recall seeing someone referring back and forth to a library to ensure they had the correct spelling or syntax. Using a tab made that very quick and easy?
Great question Jeff! To be perfectly honest I am not sure if there is a precedent/convention on that or not, but I could see it being handy for sure.
Side note, I believe in order to open a .h or .cpp file in the Arduino IDE, those files would need to be in the sketch folder associated with sketch, and not in the libraries folder where libraries typically reside.
@@programmingelectronics Including the version of the library you used directly in your sketch folder would probably avoid conflicts resulting from later changes or upgrades to the libraries maintained in your Documents folder.
@@jeffschroeder4805 I had exactly the same question Jeff. But I wouldn't want to have to place a copy of a library (.h or .cpp) in the sketch folder using it - just a link would be preferable (unless you really wanted to include a local copy of a version of that library for some reason). An even better way would simply be to tell the IDE in some way to just display the library code (.cpp and/or .h) as a tab within that sketch (but not to concatenate the source code to it). What I currently do if I want to readily refer to an included library while writing a sketch that uses it is to open the library source file in a Notepad++ window.
Well, my 3.3k lines of code now is 16 tabs this is fantastic , how to deal with long large arrays ? Do you make an .h tab ?
Ok I think I got it , now I have 23 tabs 😅
You might need tabs for your tabs :)
I don’t think you can add .h tabs (though I could be wrong). I believe you’d have to create the header file and save it as a .h in the same sketch folder.
What is the benefit of instead having .h and .cpp files?
I’ve wondered that myself. I’m thinking it’s easier than having to write out include guards, plus, you can’t open .h files in the IDE.
@@programmingelectronics for me it works to create a .h file with "new tab" 🤔
@@agamersdiary1622 You're Right!!!🤩Thanks! For seem reason I seem to recall NOT being able to do that.
😮 my momma? Reported!!! ... p.s Love the vids and content!! ❤
It would be really cool if the IDE didn't have to recompile everything when only the contents of one tab changed .
The 'LIKE' button has gone!
Hi to all. I have problem in coding because I don't have enough knowledge. If any of you is interested , I can explain my problem and send my code that I already have . Thanks
You're welcome to post your code here - or the part that might be giving you an error, or the error message. Best of luck!
Tabs are wonderful for organizing big projects. I honestly usually forget to use them as I'm coding. LOL
One thing for those new to coding is to remember is that if you create a tab (function) and it references a variable from the main code, that var must either be GLOBAL or you could pass a "LOCAL" to the function and have the function use its own LOCAL vars.
So if, during compiling, you get an error message about a var not being declared, pointing to a tab(s), this is why.
Great tip! Thanks for adding!
Clicked lol
Thanks!!
It is a great feature, but the UI for it is horrendous! The option is on the top right under a tiny button, instead of in the main menus?? (I won't even talk about THOSE... what a mess!) Then instead of a pop up dialog, you enter the new name in a field at the BOTTOM of the screen??? Come on, Arduino, hire someone with common sense to FIX your User Inteface.
your mama🤣🤣🤣🤣