Topic: What is the best way for intermediate arduino users to raise our skill level? (Read 20462 times)previous topic - next topic

Hi,I've been programming Arduino and Processing for a few years now.I am self taught (with lots of help from this forum of course).I started doing simple RGB light control which I introduced to my work and it quickly evolved into some pretty complex stuff involving GUI's, servo control, Sound generating, R/C control of parameters and sequences, Wireless communication, etc

The more I do the more that is expected so I feel its time to actually learn how to do it right.

Up until now I havent done any planning. I design in my head and code as I go.

My code is very simplistic but the end product is very complex so I am starting to feel the hardware limitations probably because my code is not as efficient as it should be.

Also I have no experience outside of the main arduino environment so looking inside a library is like trying to read a foreign language. anything involving HEX or binary is also very foreign to me.

I feel that its time to take a step backwards and learn fundamentals in my spare time but am not sure what te best way to go about it is.

Online tutorials and books have been a great source of information, but if they discuss subjects that are foreign to me, its very hard to fill in the blanks.

What I feel I need is a live course, tutoring, or maybe an online course where the basics are covered, such as base structuring, as well as advanced subjects such as non linear programming, working outside of the arduino toolsets, etc

In order to keep developing my skills at the pace my job requires, I have focused my attention specifically on learning things that apply specifically to the tasks I need to perform, but I feel I've missed some Key fundamental steps along the way.

After reading the above, go back to some of your earlier projects and examine your code. Hopefully, what you see will make you cringe. As an exercise, see if you can improve it, no need to actually deploy it of course.

In my opinion though, since most arduino projects have to be pretty small because of memory limitations, you can get away with a multitude of sins regarding software methodology. Using it makes things easier and clearer, but you can still just as well hack stuff together and get it to work. So maybe don't worry so much about the big picture - learn some better techniques bottom up and add them to your projects as you go - sneak up on superior coding.

It may be worth posting some of your existing code for review; just be sure you're ready for some hard truths, perhaps expressed unsympathetically ;-)

Also I have no experience outside of the main arduino environment so looking inside a library is like trying to read a foreign language. anything involving HEX or binary is also very foreign to me.

I would encourage you to continue looking at libraries. Different libraries are written at different levels. Indeed, some will be more difficult to understand. Put those aside for now and spend time with the smaller and simpler ones. Write one of your own. Make it so simple it seems stupid. An LED library or something.

Learn the C and C++ languages.

Understanding hexadecimal and binary is fairly important to any computer-oriented discipline. Microcontrollers are, first and foremost, complete small computers. At the lowest level, computers only deal in binary. So if you understand binary, you begin to understand computers.

Get the datasheet for the microcontroller on the board(s) you use. For example, the ATmega328P for an Arduino Uno. The datasheet is huge and overwhelming. Don't worry about the details right away, just look through it, get the lay of the land.

Play with connecting other devices to the Arduino. Simple things like shift registers, real time clocks or other things that interest you. Read their datasheets too. Try to understand how they communicate.

Take chances, get messy, break things, have fun! A little "magic smoke" is a good thing!

Terry has designed broadcast stations, recording studios, broadcast equipment, intelligent machines and special computer languages for IBM, and has worked as a broadcast journalist covering elections, fires, riots and Woodstock.
He has taught electronics