Friday, January 14, 2011

Why "Beginning Arduino?"

I have a rather large collection of URL links stored in an Arduino-tagged folder... printed out, it'd probably fill a couple notebooks. The problem with all this information is one we've all encountered when it comes to the Web - too many sources, too many dead pages, and too much to sift through. That's why I still heavily rely on books when I wish to learn something new.

My Arduino book collection is rather small. I own the following:

1. Getting Started with Arduino - okay, but extremely simplified and short.
2. Practical Arduino - daunting and pure information overload - really written for an Arduino expert, IMO... or at least someone very familiar with both electronics and Arduino programming.
3. Beginning Arduino - only read 1/2 so far, but this is definitely the book!

Update: A quick look at Amazon shows they only have 4 copies left as of 11:40EDT Jan 14th. Get your order in quick as it sometimes takes weeks for reprints to arrive.

Update: A quick look at Amazon shows they only have 2 copies left as of 4:30EDT Jan 14th. Get your order in quick as it sometimes takes weeks for reprints to arrive.

No insult to the first 2 books, but they're not what I'm looking for when it comes to hands-on learning. The number of books available on Arduino seems to be growing fast, but I just don't see anything else available that appears to meet my needs. O'Reilly has some books on the programming side, but my experiences with their books leads me to believe they're more likely to be good reference books and not teach-yourself material.

If anyone knows of any other Arduino books that might make good references, let me know... I'd rather spend my money now on components and acccessories, but if there's a book I'm missing that will make this experience more enjoyable (or at least successful), I might consider purchasing it.

One Disclaimer: I write tech books for a living, so I have relationships with many book publishers that allow me to sometimes get a Reviewer Copy of different titles. My digital and print copies of the "Beginning Arduino" book came courtesy of Apress (print copy, however, seems to be caught up somewhere in the USPS labyrinth), a great publisher for whom I've written quite a few books over the years. That said, my intention is to provide an un-biased review of the book, including feedback, positive or negative, about my experiences.

7 comments:

  1. Look forward to your review of my book :)

    Mike

    ReplyDelete
  2. I'm now into Chapter 5 and I have about decided that there is really no reason to buy any other book. I have Making Things Talk, Programming Interactivity, Practical Arduino and Getting Started With Arduino on the shelf, but with the exception of the Getting Started book, the other titles should be used as a follow up to this one.

    Getting Started is more of a "jump start" for people who already have a pretty good understanding of electronics and MCUs. I had fun, and no problem completing the projects, but it didn't leave me feeling ready to strike out on my own in the way that Beginning Arduino already does.

    I'm also working through Programming: Principles and Practice Using C++ by Bjarne Stroustrup which provides some insight into the particulars of the Arduino/Wiring/Processing code, but it's certainly not a required reference.

    One of the great things about Mr. McRobert's book is the way that he explains the code rather than just treating it like a magic incantation as other books seem to do, so there is not much need to go to outside references...at least not to understand the code or the electronics.

    Out of my own curiosity, I ended up consulting my old Trig text several times to have a better understanding of the sine function that he uses to for the pulsating lamp in Project 7, but doing so was not necessary to understand how the function is used to set the PWM signal.

    One of the additions that I have been making to some of the examples, is setting up serial communications (add the statement Serial.begin(9600); to the Setup function) and then sprinkling Serial.print commands wherever there are variables that are changing. This allows me to monitor the changing values of PWM signals, and then put a multimeter on the output pins of the Arduino. It's kind of cool to see how they relate and helped me understand how the code was working for several of the projects.

    ReplyDelete
  3. Mike - glad to hear you approve of the blog!

    ctdahle - glad to hear from someone else working through the book - thanks for sharing that Serial.begin(9600) command - may have to try that!

    Jim

    ReplyDelete
  4. Jim - Here is the code as I modified it for project 8, using the Serial monitor window to compare the PWM values for the LEDs to their brightness.

    /* BA8_MoodLamp
    Based on McRoberts
    Written on 010911
    Last Modified 010911

    Randomly shifts PWM values for Red, Green, and Blue LEDs
    from 0-255 on pins 11, 10, and 9.*/

    float RGB1[3];
    float RGB2[3];
    float INC[3];

    int red, green, blue;

    int RedPin = 11;
    int GreenPin = 10;
    int BluePin = 9;

    void setup()
    {
    randomSeed(analogRead(0));

    RGB1[0] =0;
    RGB1[1] =0;
    RGB1[2] =0;

    RGB2[0] = random(256);
    RGB2[1] = random(256);
    RGB2[2] = random(256);
    Serial.begin(9600);
    }

    void loop()
    {
    randomSeed(analogRead(0));

    for (int x=0; x<3; x++) {
    INC[x] = (RGB1[x] - RGB2[x]) / 256; }

    for (int x=0; x<256; x++) {
    red = int(RGB1[0]);
    green = int(RGB1[1]);
    blue = int(RGB1[2]);

    analogWrite (RedPin, red);
    analogWrite (GreenPin, green);
    analogWrite (BluePin, blue);
    delay(100);
    Serial.print(red);
    Serial.print(" ");
    Serial.print(green);
    Serial.print(" ");
    Serial.println(blue);

    RGB1[0] -= INC[0];
    RGB1[1] -= INC[1];
    RGB1[2] -= INC[2];
    }

    for (int x=0; x<3; x++) {
    RGB2[x] = random(556)-300;
    RGB2[x] = constrain(RGB2[x], 0,
    255);
    delay(1000);
    }
    }

    I just finished project 13 and note that Mr. McRoberts' illustration seems to leave out a protecting resistor on the indicator diode. I used 1K between the cathode and ground. See what you think when you get there.

    In other news, my eight year old and I started cutting up MDF for our CNC machine yesterday. You and Mr. Hood-Daniel did a great job.

    Chris

    ReplyDelete
  5. Thanks, Chris... will try to remember this bit when I get to 8.

    Good luck with the CNC... and let me know if you have any questions or concerns.

    ReplyDelete
  6. Where do I find the electronic version of Beginning Arduino?

    Great job.

    ReplyDelete
  7. Rob,

    You can get a PDF or ePub version of the book directly from www.oreilly.com - the best part is that you'll get an email when updates are posted to the book (fixes to errors, etc)and can download the new version for free.

    ReplyDelete