If you've ever created a bigger program for your Arduino, controlling multiple connected devices and handling multiple input/output flows, you've probably found yourself in a world of hurt when you tried putting everything into one .ino file.
And in my opinion that is a good thing...
Since devices physically are separate entities, why not compartmentalize the logic controlling them into separate classes? If you want to keep your program maintainable and if you want to speed up your development the only solution is to take an Object-Oriented approach.
If you are completely new to Object-Oriented Programming I recommend you to do some self-education with this 8 minute video on YouTube. It will help you understand the basics of OOP.
A lot of community created sources for Arduino are very straight forward and are not created with an Object-Oriented mindset. Leaving you with the choice to either create spaghetti code, or to spend a lot of time rewriting the code the right way.
I've made it my quest to create classes that allow you to control Arduino devices as objects and that work on a more event driven fashion. In the next couple of months I will release my work here which will hopefully help you heaps creating more structured, better maintainable programs with less effort to create them. Since I had a large learning curve to make sure I wouldn't turn my devices into black smoke, by short-circuiting them by accident, I'll also add connection schemes for every class I release to help beginning Arduino developers.
So if you are a beginning (OOP) developer, or if you are new to Arduino and not really sure how to connect your devices or write code for them, or if you just want to have well documented logic that works as you expect: keep this blog on your radar! I will release all my sources to an open GIT repository, feel free to download, contribute and help me with my quest! More will follow as soon as possible.