Pages: [1]   Go Down
Author Topic: What is the best way for intermediate arduino users to raise our skill level?  (Read 8400 times)
0 Members and 1 Guest are viewing this topic.
Los Angeles
Offline Offline
Full Member
***
Karma: 1
Posts: 148
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.


Any ideas, links, etc would be extremely appreciated!!!
Logged

Global Moderator
Offline Offline
Brattain Member
*****
Karma: 484
Posts: 18767
Lua rocks!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

My advice is to tackle lots of small projects, learning one thing at a time. That's how I did it. Then subsequent projects can build on what you learned before.

You don't have to look inside libraries initially. After a while they will seem easier to understand.
Logged


Offline Offline
Sr. Member
****
Karma: 6
Posts: 429
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Maybe this?
http://www.amazon.co.uk/Programming-Arduino-Next-Steps-Sketches/dp/0071830251
Logged

New Jersey
Offline Offline
Faraday Member
**
Karma: 67
Posts: 3693
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Learning by doing works well as Nick observes. Indeed, you can augment it with education, but it's where the rubber meets the road.

Doing some C/C++ tutorials and reading a book or two on the subject, preferably without an Arduino focus, would likely help.

Read something on coding or software engineering - I like Steve McConnell's 'Code Complete'.

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 ;-)
Logged

Los Angeles
Offline Offline
Full Member
***
Karma: 1
Posts: 148
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ill post some sample code tomorrow from work.
I'm very open to all kinds if criticism as long as its for the better good...
If I can learn from you guys bring it on!
Logged

Alamos, Sonora, Mexico
Offline Offline
Full Member
***
Karma: 5
Posts: 133
learning never stops.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Lakes,
Thanks for the reference. I just pre-ordered that book.

I'm a bit like MechFX..... the curse of being an enabler that has much expected of him...

Peter
Logged

Quiero una vida simple en Mexico...nada mas.

Grand Blanc, MI, USA
Offline Offline
Faraday Member
**
Karma: 95
Posts: 4084
CODE is a mass noun and should not be used in the plural or with an indefinite article.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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!
Logged

MCP79411/12 RTC ... "One Million Ohms" ATtiny kit ... available at http://www.tindie.com/stores/JChristensen/

Offline Offline
God Member
*****
Karma: 32
Posts: 830
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

 The datasheet is huge and overwhelming.  

FWIW, I think the Atmel datasheets are amongst the most user-friendly of any of uC architecture I've worked with -- Intel, Motorola, MIPs (and most recently) ARM(!)

Motorola actually wasn't bad, quite good really, but Atmel is nicer. All IMHO, of course.

The ARM datasheets are simply mind-numbing by comparison. Much, much more going on, of course, but still...

Logged

WiFi shields/Yun too expensive? Embeddedcoolness.com is now selling the RFXduino nRF24L01+ <-> TCP/IP Linux gateway: Simpler, more affordable, and even more powerful wireless Internet connectivity for *all* your Arduino projects! (nRF24L01+ shield and dev board kits available too.)

Topsham, Vermont USA
Offline Offline
Edison Member
*
Karma: 33
Posts: 1906
... in The Woods In Vermont
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Maybe start looking at data sheets of simpler stuff, and then work up.

I like this data sheet site: http://www.datasheets.com/search/  You need to sign up but they don't bug you.

Type in LS595 for example.  Look at the Arduino ShiftOut page:
 http://arduino.cc/en/Tutorial/ShiftOut  Hook one or two of those up while referring to the real data sheet.

My favorite set of 20 cent chips is  HERE:
..and the data sheets are linked there...

Logged

Regards, Terry King terry@yourduino.com  - Check great prices, devices and Arduino-related boards at http://YourDuino.com
HOW-TO: http://ArduinoInfo.Info

Pages: [1]   Go Up
Jump to: