Introducing ArduinoMap!

Hey everyone!

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.

2 Likes

Are you familiar with the Arduino Cookbook? I think that is a better beginner's resource than this.

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.

1 Like

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.

Thank you so much for the feedback!

That’s totally my mistake - there will most probably be many more similar typos and errors to be corrected. That’s why I made it open source!

It would be great if you could open an issue on the GitHub repo with this; gaining some contributors would be much appreciated. :slight_smile:

I contribue here - there would be too many places to log on otherwise.. :slight_smile:

Understood! Thanks for the suggestion, I will be sure to rectify it :slight_smile:

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.

Ah, that makes sense. I will explore that.

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:

https://www.arduino.cc/en/trademark/

1 Like

Mhm, I understand where you’re coming from. I was thinking the same thing but it only struck me once I configured the domain!

I will definitely explore the option though. Thanks

Would it be okay to crosspost this in the Education tab too? I’d like to ask there if anyone is willing to help and look for some contributors :slight_smile:

Cross-posting is not allowed, but I moved the existing topic to the Community > Education category as requested.

Carry on.

1 Like

Would anyone like to work on any of the existing issues on the repo? Any input will be much appreciated.

Ya sure

I guess you are from india me too

I’ll assign you to one of the good first issues, just drop a message on the GitHu issue of your choice