Organise large Arduino codebase with libraries, files and folders // Arduino CLI, Nano 33 BLE Sense

5,544
0
Published 2021-01-15
#organize #codebase #arduino
I used to have long Arduino *.ino sketch files that were difficult to debug and add features. In this video, I share several incremental steps to take to split a big Arduino code file into separate different files and folders for future maintainability. Plus, we will use Arduino CLI to install libraries and track its version. We will use the Arduino Nano 33 BLE Sense board for a practical example in one file before splitting the code into manageable bits.

⏰ TIMESTAMPS
0:00 Intro
02:17 Create new codebase
06:52 Step 1: Install library
09:50 Step 2: Split code into *.ino files
11:31 Step 3: Create header files
13:07 Step 4: Create header and cpp files
15:08 Step 5: Create src folder
17:30 Step 6: Enable multiple tasks in loop()
20:15 Outro

‣ Some links below are affiliate. I receive a small commission at no extra cost to you.

🎩 DEMO FILES
Display IMU data with LSM9DS1 and Arduino Nano 33 BLE Sense board hutscape.com/tutorials/nano33-ble-sense-imu
Display temperature and humidity data with HTS221 hutscape.com/tutorials/nano33-ble-sense-temperatur…
Split up code into more *.ino files hutscape.com/tutorials/nano33-ble-sense-more-ino
Separate files into the header and c++ files hutscape.com/tutorials/nano33-ble-sense-imu-sensor…
Adding header and cpp files to Arduino folder hutscape.com/tutorials/more-files

📺 WATCH NEXT
6 ways to access the serial monitor for Arduino    • 6 ways to access the serial monitor f...  
Arduino CLI and the art of command line    • Arduino CLI and the art of command line  
Makefiles for using with Arduino    • Makefiles for using with Arduino // U...  
Debugging Arduino firmware with print statements    • Debugging Arduino firmware with print...  

🔗 LINKS SHOWN
Arduino Nano 33 BLE Sense board store.arduino.cc/usa/nano-33-ble-sense
Getting started with the Arduino NANO 33 BLE Sense www.arduino.cc/en/Guide/NANO33BLESense/
Arduino LSM9DS1 IMU library github.com/arduino-libraries/Arduino_LSM9DS1
Simple accelerometer example code github.com/arduino-libraries/Arduino_LSM9DS1/blob/…
Arduino HTS221 sensor library github.com/arduino-libraries/Arduino_HTS221
Read sensor example code github.com/arduino-libraries/Arduino_HTS221/blob/m…
Arduino CLI library specification arduino.github.io/arduino-cli/library-specificatio…
Arduino Sketch build process arduino.github.io/arduino-cli/latest/sketch-build-…
Arduino Sketch specification arduino.github.io/arduino-cli/latest/sketch-specif…
Arduino millis() www.arduino.cc/reference/en/language/functions/tim…
Writing a library for Arduino www.arduino.cc/en/Hacking/libraryTutorial

🔌 TOOLS USED
hutscape.com/tools

All Comments (20)
  • @AvinashPudale
    Yes millis are awesome until i find library called taskschduler .
  • @Stefanido
    Thank you so much for the step-by-step approach, while still keeping the discussion at a high enough level that we don't get bogged down in the details. It takes a lot of skill to develop tutorials to this level. I've learned so much from you!
  • Excellent... Txs .This should be taught very early on as file management is a big problem...for me !
  • @aamerhamdani
    Wow! I can say I have never found a video in which everything is explained the way you did. Crisp, Clear and thorough.
  • @LukePeters
    Thank you! Your teaching style is so nice - clear, concise, moving quickly from point to point but not skipping over any valuable notes.
  • Such an excellent video. 20 very lightweight and life changer minutes. Loved it.
  • @paulantoine1696
    Really love your videos and your straightforward approach to explaining things. Thank you Sayanee 🙂
  • @christianh.4729
    You have done a great job in creating a video like this. I work in the learning organization of a large company and I know how much effort it takes to create good training material. Here I have to say it is perfect. Great content, well structured, easy to understand and you are a great instructor and it's a pleasure to listen to you. I'll definitely check out the other videos from you.
  • Thank you @Sayanee, keep the excellent work going! Found your video thanks to google's recommendation. I loved your evolutionary approach to maintaining a readable and reusable code base — I see its value in small and large complex projects. I also wanted to salute your overall train of thought, I watched your PCB manufacturing and debugging videos. These concepts can be applied to problem solving projects and shorten the path to an MVP that sells the product. This is what I call quality content. Thank you.
  • @MaZeModding
    Really really good video. Thank you so much.
  • @apazit
    Thanks! It was very useful video for me :)
  • @aron8918
    Thank you, it is a really helpful video!
  • i appreciate your effort to give us the timestamp and resources link! Thank you so much👍 .. and just my thought that PlatformIO would simplify all of these steps i guess? EDIT: Especially to manage multiple source files and/or libraries.
  • @RoamingAdhocrat
    Me: Wow, this video was incredibly useful! I've been using Arduino for ten years now but I can't wait to apply these techniques! Sayanee: And that brings us to the first step of organising a large codebase… Me: …first step? <taps video> Video: 7:00 / 21:22 Me: <faints deliriously>
  • @phamhuynhuc9360
    At 3:02, I saw that your vscode editor had shown red underline, how can you fix it?