Bionic Arduino – Introduction to Microcontrollers with Arduino

**********************************************************
This class is full Please email machine at machine project dot com to be on the list for a second session, date TBA

**********************************************************

Taught by Tod Kurt

Sundays Nov 11 & 18, 1-4pm
Tuesdays Nov 13 & 20, 7:30-10pm

What is Arduino?

Arduino is an open-source physical computing platform based on a simple i/o board, and a development environment for writing Arduino software. The Arduino programming language is an implementation of Wiring itself built on Processing.

Arduino can be used to develop interactive objects, taking inputs from a variety of switches or sensors, and controlling a variety of lights, motors, and other outputs. Arduino projects can be stand-alone, or they can be communicate with software running on your computer (e.g. Flash, Processing, MaxMSP) The boards can be assembled by hand or purchased preassembled; the open-source IDE can be downloaded for free.

This class will focus on building new physical senses and making motion with the building blocks of robotics, using Arduino as a platform

Who is Tod Kurt?

Tod E. Kurt has engineered the hardware and software for robotic camera systems that went to Mars. He was a founding developer and systems architect of Overture Systems, originally GoTo.com, later sold to Yahoo. Now as co-creator of ThingM.com, he’s designing sketchable hardware and networked smart objects. He has degrees in Electrical Engineering from Caltech and Physics from Occidental College. He started robotics hacking at the age twelve when he took apart his BigTrak, RC car, and chemistry set to make an upright programmable robot.

Requirements

- Laptop (Mac OS X or Windows. Linux if you’re willing to work at it)
- Some programming experience
- Some hardware experience useful for last half

Good To Have/Bring

- Basic knowledge of electric circuits
- Multimeter
- Wire cutters / strippers

Class outline

————-
Class 1a: Intro
- Welcome & Handouts
- PDFs the class notes
- Collection of the code we’ll use
- Introducing Arduino
- Arduino the concept (vs Basic Stamp)
- The boards: Arduino & Boarduino, and BareBones, and…
- Arduino the software
- Getting the Arduino IDE, and running it
- Installing USB drivers
- Hooking up the hardware
- Interesting areas of the board
- Your first Arduino sketch: “Blinky”
- Blinky as “hello world” for microcontrollers
- Building and coding an LED blinker
- Boarduino/Arduino has built-in LED for this
- Using digitalWrite()
- Safety Considerations
- Lead on parts (electronics can hurt you)
- Static sensitivity of parts (you can hurt electronics)

Class 1b: How it works, More LEDs & Battery Power
- Okay, what’s really going on?
- Arduino sketch structure
- Two functions: setup() and loop()
- C code, but easy
- Quick overview of build process
- Sketch structure
- Arduino lifecycle
- Varying LED brightness
- Using analogWrite() (uses PWM, more later)
- Arduino sketch “Throb”
- Stand-alone operation
- Wall wart
- Adding 9V battery
- Be careful of polarity and shorts
- Wiring diagrams & schematics
- Wiring diagrams
- Breadboard layout
- Schematics (a picture language for circuits)
- How to breadboard
- Adding a Button
- Wiring diagram & schematic
- Using digitalRead()
- Arduino sketch: “ThrobAndBlink”
- Going Further / Ideas for home
- Make your own buttons out of Al foil, etc.
- Make a hide-a-light: blinkblinkblink, wait…., blink.
- Morse code player
- Make a POV light

Class 2a: Talking to the Computer & RGB color
- Quick Review
- Make a Color Fading Mood Light
- Adding multiple LEDs
- Wiring diagram & schematic
- Arduino sketch: “MoodLight”
- Controlling Arduino from the computer
- Arduino sketch: “SerialLight”
- What is ‘serial’?
- Adding a Knob to Arduino
- Hooking up a potentiometer
- Wiring diagram & schematic
- Using analogRead()
- Ardino sketch: “SendPot”
- Arduino sketch: “VaryBlinky” & “VaryMoodLight”
- Going Further / Ideas for home
- Use Processing to display information on your Mood Light
- Make a pocket any-color flashlight

Class 3a: Making Motion with Motors
- About Pulse Width Modulation
- PWM as digital-to-analog voltage converter
- PWM as analog time (percentage on vs off)
- About transistors has high-power switches
- Use whenever you need more power
- Can drive relays to switch AC loads
- Make a Dancing Arduino
- Attaching a motor
- Wiring diagram & schematic
- Arduino sketch: “MotorDance”
- Things to note about motors
- Have a start/stop lag time, unlike LEDs
- Draw a lot of power when stalled

Class 3b: Sensing Motion and Making Sound
- About the Wii Nunchuck
- 3D accelerometers
- Lots of buttons
- I2C control
- Arduino library does the hard work for you
- Adding a Wii Nunchuck to Arduino
- Wiring diagram & schematic
- Arduino sketch: “NunchuckPrint”
- Controlling Motors and Lights with the Nunchuck
- Arduino sketch: “NunchuckMotor”
- Making Sound with a Piezo buzzer
- Basics of sound generation
- Converting notes to frequency
- Wiring diagram & schematic
- Arduino sketch: “MusicBox”
- Make a Theremin with the Nunchuck & Piezo
- Arduino sketch: “NunchuckTheremin”
- Going Further / Ideas for home
- Build your own RC car or robot
- Turn on/off lights in your home
- Building extra robotic arms to help out around the house
- Make a MIDI synth

Class 4a: More Senses
- Quick Review
- Sensing Light (or Dark)
- Using Light-sensitive Resistors (LSR)
- Similar to a potentiometer
- Wiring diagram & schematic
- Arduino sketch: “DarkDetector”
- Sensing Pressure with Piezos
- Piezos make voltage as well as use it
- Wiring diagram & schematic of piezo as input
- Adding “knock sensor” to previous projects
- Arduino sketch: “KnockPrint”
- Arduino sketch: “MotorDanceKnock”
- Other types of Sensing
- Rotary encoders
- Infrared detectors
- Other Types of Motion Makers
- Servos
- Muscle Wire
- Advanced Programming Concepts (if time)
- Interrupts
- Libraries