in arduino, programming, tutorial

How to Write Libraries for Arduino

Share Button

This tutorial explains how to create C++ libraries in Arduino.


For this example we will create a toy library called Fader. As the name suggests, it will allows us to have fading timers which we can query at any time. Since Arduino libraries are written in C++, we need to create two files: Fader.h and Fader.cpp. They will contain the header and the body of the class Fader, respectively. The Arduino IDE comes with its own C++ compiler, so you won’t need any other additional tool for this tutorial.

Step 1. Setting up

Before start writing our source codes, we have to find the folder which Arduino uses for its libraries. For Windows users is usually in C:\Users\<user name>\Documents\Arduino\libraries. You can find your folder by checking the Sketchbook location in the Arduino Preferences window. Browse to that folder and look for libraries.


Within that folder, you have to create another folder with the name of your library; in this example, Fader. This folder will contain all the files we need.

Step 2. The Header

Arduino’s headers

If you are unfamiliar with C++, the header is like a summary of what the library contains. Every time we want to use our library, we need to import its header; by doing so, the compiler knows which functions are available.

Almost every Arduino library header looks like this:

Lines 1,2 and 14 are used to prevent this header from being included twice, and they are quite common in C++. Lines 4-10 are necessary if you want to use the standard Arduino functions or constants from within your code.

The Code

The header contains the definition of the Fader class, and it indicates which methods and attributes are available to use.

The public methods that we can invoke on a Fader object are just fadeTo and getFade. The remaining components are declared as private and will be used internally.

Step 3. The Body

The body of the library is where the code actually is. It starts with #include "Fader.h", and then it provides a body for all the methods that have been defined in the header. For instance, the syntax Fader::fadeTo indicates that we are going to provide the body for the function fadeTo of the class Fader.

Step 4. The Keywords

The editor of Arduino is notoriously bad when it comes to semantic syntax highlighting. You can help uses by adding an extra file in the library folder called keywords.txt.

This step is totally optional, but allows to give specific keywords a different colour.

Step 5. Using the library

The final step is to use the library. To do that in an Arduino sketch, we need to import Fader.h first.

This code reviews the “Fade” example provided in the Arduino Examples folder.

Installing the library

If you zip the folder where all the library files are, you can redistribute that file to other developers. Arduino has an option to import external libraries; it will extract the archive and place the files in the right folder.


Conclusion & Downloads

You can download the Fader toy library here.

Other resources

📧 Stay updated

A new tutorial is released every week.

💖 Support this blog

This websites exists thanks to the contribution of patrons on Patreon. If you think these posts have either helped or inspired you, please consider supporting this blog.


Write a Comment


  1. Hi
    Dear Alan, I’m already in trouble with the Sim800l’ module and can not I send an SMS with Arduino Due and could not help me, it requires professional code Writer, All code and libraries written for Arduino Uno and does not work in Arduino Due;
    please help me.

  2. Hey Alan,
    Thanks for the tutorial. I’m dropping a line here because I had some trouble compiling your code. Don’t you need a return type for Fader::init? Thanks again!

  3. Hi !
    Do you know how to proceed to use a library in the library one is creating ? (In my case, Id like to include in my library a function that write on a SD card using SdFat library).
    Thanks for this tuto !

    • I have the same isssue I have the .h file in text format, but don’t know what format to port into the Ardiono ide Library, is it saved as a ascii file, c++, not sure what t do with the text. Any ideas?

  4. Hello… noob question here, but what program are you using to write the header file? Is it Arduino and you just save-as and add a .h at the end of the file name, or am I using a c++ compiler?


  • Tutorial Series - Alan Zucconi January 21, 2018

    Hi! You can use whichever editor you prefer.
    The Arduino IDE will compile the files for you.