Bionic Arduino – Introduction to Microcontrollers with Arduino

Bionic Arduino

Bionic Arduino is a set of four 3-hour classes in November 2007 hosted by Machine Project and taught by Tod E. Kurt. It is an introduction to microcontroller programming and interfacing with the real world using the Arduino physical computing platform. It focuses on building new physical senses and making motion with the building blocks of robotics, using Arduino as a platform.

In the class, participants are shown and experiment with the Arduino’s capabilities and learn the basics of common microcontroller interfacing, such as: digital output to control lights and LEDs, digital input to read switches and buttons, analog output to control motor position or LED brightness, and analog input to read sensor inputs.

The class assumes no previous electronics knowledge, though it does assume a little programming knowledge. No soldering is needed during the class, as all circuits are built with solderless breadboards.

Class Notes

Arduino Sketches Used in Class

Processing Sketches Used in Class

Parts Suppliers, New

  • SparkFun — Arudino board and shield, and many other neat gizmos.
  • Jameco — General electronic parts, easy-to-use, also has computer parts.
  • Digikey — Exhaustive parts supplier. Cheaper than Jameco usually, has more variation, more hard-to-find parts.

Parts Suppliers, Surplus

112 Replies to “Bionic Arduino – Introduction to Microcontrollers with Arduino”

  1. Hi Tod,

    Just a quick note to say thank you! Great Arduino classes :)

    Cheers from Holland,

  2. You mean send the single byte with value 197 and not the three characters “1”,”9″,”7″? In the serial monitor, I don’t think so. But there are many other programs to talk to serial ports. I create a really simple one in C, but perhaps easier would be ones written in Python, Ruby, or similar.

  3. Little Question:
    Is it possible to send an integer from the serial monitor of the enviroment to the arduino ? (something similar to for example “197,DEC”)
    Max from Germany

  4. If you’re controlling servos or stepper motors, there are a few examples on the Arduino Tutorial page, showing how to use the Servo and Stepper libraries.

    In the Arduino playground section on Interfacing with Hardware (linked from the tutorial page) there are several examples of controlling many kinds of motors.

    Finally, in the class notes linked above and which this page is about, there is code and discussion on how to control servos and DC motors. For DC motors, the SerialMotorSpeed.pde sketch shows how to control a the speed of a DC motor hooked to any PWM pin. (which is how most motor shields will be hooked up)

    If you’re not getting responses from the shield authors, post on the Arduino forum. There are many more people who read it than my blog and you’ll probably run into someone who had the same problem as you and has solutions.

  5. here i am again
    thanks for pointing this out

    a further question: how could i let the shield work?
    imagine i have a dc motor to attach to it, where do i get code to run it from the shield’s pins?

    apropos, i wrote emails to those mentioned above but none answered ;)

    sorry for disturbing

    thank you


  6. If you’re controlling standard servos, you don’t need a shield at all, just a breadboard, as is discussed in the class notes linked above. Servos have built in electronics to do all the hard work for you. And you can connect a servo to any digital pin, not just pins 9 & 10. The Servo.attach() method lets you pick which pin to use.

    You can also drive motors with a simple circuit consisting of a transistor and a few extra parts (also described in the notes above)

    The reason why many people use a motor shield is to have a more complex circuit called an H-bridge that lets you control the direction and speed of a motor. A motor shield might also have a provision for sensors (“encoders”) to determine how much the motor has turned.

  7. I bought it from;
    The name written on the pcb is David Cuartielles(as quoted in the forum) and the url points to the site.

    I looked at forums but, avoiding the soldering details, nothing leads me to connections instructions.
    From further reading (, i only know i can connect servos to pin 9 or 10 on the Arduino board itself and i guess i could do the same on the shield.
    But i wonder: what do i need a shield to drive motors for?
    As you can easily guess i’m quite a newbie in electronics and i sure need a deeper reading on all arduino stuff but i can only find little news on few things.
    What would you suggest? Go fishing? ;)


  8. thanx for quick reply, todd.
    i regret i didn’t get that one ’cause i found several info on it.
    till now i could say i unfortunately bought the ‘original’ arduino shield, the one pictured on the main .cc site.
    the problem is that the version i have (v3.0) is newer than the one showed there and i cannot find any info(still searching) on it.
    furthermore i have those switches and the third chip, only designed on the pcb (not present in the picture).
    i know it’s extremely powerful but as far as i can look for info, i still can’t find any.
    thanx again

  9. hi todd, great and neat tutorials!
    but after my arduino set has arrived and after a bit of soldering on the motor shield, i’m still stuck :(
    i don’t know how and where to connect servo motors to!
    i’m wandering the internet searching for instructions on how to use the shield properly.
    could you give me hints on it?
    thanks a lot for your tutorials 1st and for any suggestions you could give ;)

  10. I am having a problem with the Nuchuck sample I found here:

    When I have connected the Nunchuck, there is no response at all. I mean, when I open the serial monitor, no data is displayed.

    When I disconnect the Nunchuck and run the sketch it does run. It shows the columns that are printed nicely, but of course all values are zero.

    I have checked if the Nuchuck is working correctly by connecting it to the Wiimote and do some boxing, it works.

    I am using a Wiichuck from to connect the Nunchuck to Arduino:

    If I am correct, that is product designed by you.

    According to that site, analog pins 2 (gnd) and 3 (pwr) should provide power to this little adapter. My multimeter doesn’t show any power though. Shouldn’t the sketch contain some code that sets pin 3 high? Also with no Nunchuck and no adapter, I have no power on Analog pin 3.

    I am stuck…

    Any idea’s?

    Thanks in advance!

  11. hye there.. i am new her.. i want to know the microcontroller program for the ‘SMS through Telephone (AT89S8252)’.. if you dont mind.. could you please send the program to my email..

  12. Hi,
    I’ve tested many different IC2 speeds and
    I used 3,3V signals. But the Logic 3 Wireless nunchuck and the wireless adaptor for nunchuck from “Bigben Interactive” do not work. There is a connection, but the signals do not change, when the nunchuck is moved. Always the same series of data is arriving. Both wireless nunchucks behave in the same way.

  13. I’ve also tried the Nyko Cord-free wireless nunchuck adapter and it also does not work. I’ve not looked too deeply into why these devices are not working.

    Some potential reasons why that come to mind:
    – I2C speed differences (100k vs 400k, Arduino is at 100k),
    – need true 3.3V compliant signals (wired nunchucks operate at 3.3V but are 5V tolerant), or
    – something to do with the “att” signal (pin 3) of the expansion port connector (Nunchucks don’t require this signal, but perhaps these wireless versions do)

  14. Hi Matt,
    I also tried the wireless adaptor for nunchuck from “Bigben Interactive” which is
    connected to the original wired nunchuck of nitendo and is wired to the arduino. It does not work. I initialed then the nunchuck when it was wired to the arduino and connected clock and data to the adapter without disconnecting ground and power. But this also does not work. I do not understand this. It would be great, if you
    could analyze the initialization process of
    the Logic 3 Wireless nunchuck.
    I’ve looked for a solution long time in the internet. But I did not succeed. I don’t know, if a solution is known.
    Good luck!
    Max Manfred from Germany

  15. Hi,

    I’m having the same problems with the Logic 3 Wireless nunchuck. I have written my own code for the PIC to talk to the wired nunchuck, which works fine, bu the wireless nunchuck does not. I can tell you this, you have to initialize the wireless nunchuck after the data connect line goes high, however, I think the initialization process is different from a wired device. I hope to borrow a Wii soon so I can analyse the signal.

Leave a Reply

Your email address will not be published. Required fields are marked *