
Flourish 2012
Arduino 101: A hands-on workshop presented at Flourish 2012 by Pumping Station: One (pumpingstationone.org) at the University of Illinois at Chicago, Room 430 Student Center East, 750 S. Halsted, 1:00pm
Instructor: Ed Bennett
The purpose of the Flourish Conference is to promote the use and adoption of Free Libre Open Source Software (FLOSS) by demonstrating the practical applications of FLOSS in the business and academic world.
Outline:
What's a microcontroller (MCU)?
embedded controller
hardware i/o interface
program memory (flash)
RAM
built-in peripherals
Arduino UNO's MCU: Atmel Atmega328p
8-bits (avr-gcc uses 16-bit int's)
20 MHz (16 MHz in Arduino)
32K of flash
2K of RAM
1K of eeprom
What's Arduino? (a registered trademark, open source software/hardware, a defacto standard, a community, avr-gcc, libraries, bootloader)

image is CC BY-NC-SA 3.0 (sparkfun.com)
Installing the Arduino environment
A brief word on the Arduino environment 0.xx to 1.xx transition (new reference design)
changes in the IDE
change in the USB interface
changes in libraries
Various components on the Arduino board
What does a minimal Arduino consist of

Tour of the board connectors
5.0 volts
3.3 volts
ground
analog in
analog out
digital in/out
bits/bytes
serial ports
uart
i2c
spi
Launching and running
tour of the IDE
pick your board (Uno)
find your serial port (ttyUSB0 or ttyACM0 or comX)
find/set your sketches folder
how projects/files are named
external editor
save-as from the examples folder
code beautifier
Location of the examples and reference
Why is blinking an LED important?
toolchain test
universal on-off output method
“hello world” of microcontrollers
Basic structure of the language; Simplifed mix of C and C++
if
while
for
functions
Buy it or build it? “Hardware is hard”. What is a shield?
Sources of stuff to hook up to the board
sparkfun
adafruit
Always get libraries/examples before buying hardware
Contents of the Sparkfun “Flex” kit
How to use a breadboard
run an LED
Logic levels on input or output pins
1, TRUE, high, +5 volts, ON
0, FALSE, low, ground (0 volts), OFF
Running basic built-in examples with i/o
digital output
blink
digital input
fake pushbutton (pullup w/ a with wires)
analog input
voltage divider / pot (a ratio w/ one unknown value)
voltage divider / photocells
analog output (PWM)
Regular LED
RGB LED
data (intelligent) i/o
serial monitor
Some possible future directions of the Arduino hardware development