I have recently been working on creating an open-source Arduino curriculum and now have a working base completed. You can check it out here, and this is the GitHub repo which contains all the lesson docs, schematics and source code.
When I first attempted to learn Arduino, I noticed that there weren't many clear, structured resources which taught beginners from the grounds up. Rather, these courses usually hand-held students through the lessons, or were frankly too difficult to understand. I created ArduinoMap with the very intention of solving this problem and providing a free, open-source curriculum that teaches good fundamentals.
As ArduinoMap is open source, I would love to involve the community in growing it. Also, I must mention that this is just a base - it would be great to work on adding new lessons, projects and ideas together to make it a great resource to learn Arduino.
Well, it isn’t supposed to be better than any book yet. It is simply a base. That’s why I made it open source, so that the community can help grow the content further.
The initiative is good - the more content the better as long as it is correct..
There are many ways to learn - although I like learning by doing I still feel it often misses the point of getting to understand what you do first. So I don’t dive in without a few lectures about theory first. Might be boring for some and very reassuring for others.
Side note - I noticed the
Therefore, we need to communicate with our Arduino board using programmed instructions written in a variant of the C++ programming language.
➜ it’s NOT a variant. It’s C++. We use a C++ full compiler/ linker.
I think what is being misunderstood here is that the Arduino package contains a lot of built in functions, like digitalWrite that are not standard in most C/C++ implementations.
Arduino does not introduce a new variant of C++. It uses the same C++ language and toolchain, but with additional preprocessing and a set of platform-specific libraries.
What makes Arduino look different is not a change in the language itself, but the provided environment. The Arduino IDE hides the main() function, adds some boilerplate behind the scenes, and links in libraries suited to the microcontroller platform.
This is no different from any other C++ environment where you link platform-specific code. On Windows, you rely on the Win32 API or DirectX. On Linux, you might use POSIX calls. On Arduino, you use libraries like Wire or Serial that wrap low-level hardware access, some of which are written in C or assembly.
➜ programming Arduino is not using a C++ variant. It is plain C++ with platform constraints and helper libraries tailored to embedded systems.
By the way, this is the exact kind of feedback/suggestions I’m looking for. As this is merely a base, it is bound to have errors here and there. I have planned to make it open source so that others can help proofread, offer improvements and even work on them.
Do you have any suggestions for how I could go about finding people who’d like to contribute?
Such initiatives require a long term commitment and building a personal relationship can help so if there is one near where you live, join a maker club for example or offer to help teach in school clubs and find alike minds.
This may not be exactly the kind of suggestion you are looking for, but since you indicated that you are interested in suggestions, I'll throw mine in: Consider changing the project name to one that doesn't use the "Arduino" trademark.
You can certainly find a huge number of examples of "Arduino" used in the names of well established and popular projects. However, this could technically be considered infringing on the legal rights of the Arduino company. Would the company ever exercise their rights in regards to this type of project? I don't have an answer for that. I don't have any involvement in that area of the company, and even if I did would still need a crystal ball to see what could happen in the distant future. However the company certainly does actively protect its trademark against more egregious infringements (e.g., counterfeit boards).
What I am saying is that if you base an ambitious project around a name that uses the "Arduino" trademark, you are establishing a slightly shaky foundation for the project. It might be quite disruptive to be forced to change the project name after it had already become well established.
Note that this is only about the project name, not about use of the word "Arduino" in the content of the project, and in descriptions of the project. There is more information on the subject here: