Open ‘er Up
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
1 pcs x for Arduino UNO board
1 pcs x Development expansion board
1 pcs x Breadboard
5 pcs x LED kit (red / blue / yellow)
1 pcs x 74hc595
2 pcs x Buzzers
1 pcs x Seven-segment display (1-digit)
1 pcs x Seven-segment display (4-digit)
~10 pcs x Push button switches
3 pcs x Light dependent resistors
5 pcs x 10K resistors
5 pcs x 1K resistors
~8 pcs x 220R resistors
1 pcs x Adjustable resistor
1 pcs x LM35 temperature sensor
1 pcs x 1602 LCD display
1pcs x PS2 joystick
1 pcs x Stepping motor
1 pcs x Stepping motor driver board
1 pcs x Steering engine (servo)
1 pcs x RGB LED module
~30 pcs x Breadboard cables
~10 pcs x Dupont lines
1 pcs x 2.54mm pin header
2 pcs x Mercury switches
1 pcs x Flame sensor
1 pcs x Infrared receiver
1 pcs x USB cable (80cm)
1 pcs x Remote control
1 pcs x Battery case
Err . . most of it should be there.
The Official Arduino Robot
> $300
Or you can build
your own for less
Do a Google search for ‘Sumobot’.
Installing Arduino DE
• On Windows 7
• Installs to C:Program Files (x86)Arduino
• Your programs are in C:UsersuseridDocumentsArduino
• ‘Tools | Board’ should say ‘Arduino UNO’
• In Device Manager, see ‘Ports (COM & LPT)’
• Device drivers in C:Program Files (x86)ArduinodriversFTDI
USB Drivers
You running 32 bit or 64 bit?
Touring the IDE
• ‘File | Examples’ includes lots of examples
• ‘File | Upload’ is how we compile and upload our program to
the Arduino
• ‘Help | Reference’ includes a local copy of the Language
Reference
Simple Layout
1) Connect the power bus first.
2) Add the LED and resistor.
3) Connect them to the power bus.
Ohm’s Law
Current = Volts / Resistance
or
I=E/R
If we have a 5 volt battery and a 200 ohm resistor.
5 volts / 200 ohms = .025 amps
The higher the resistance, the lower the current.
Don’t Blow It Up
•
•
•
•
An LED needs about 1.4 volts to light up.
An LED should run at around .02 amps.
If you put 5V into an LED, it could burn out.
We’ll need a resistor to reduce the voltage and
ensure adequate current.
5V - 1.4V = 3.6V
I = E / R is the same as R = E / I
R = 3.6 / .02 = 180 ohms
Button Code
/* Button
*/
const int buttonPin = 2;
const int ledPin = 13;
// the number of the pushbutton pin
// the number of the LED pin
int buttonState = 0;
// variable for reading the pushbutton status
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
}
void loop() {
buttonState = digitalRead(buttonPin);
// read the state of the pushbutton value
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH);
}
else {
digitalWrite(ledPin, LOW);
}
}
You can make this code a lot shorter!
Fade Code
/* Fade
*/
int led = 9;
int brightness = 0;
int fadeAmount = 5;
// the pin that the LED is attached to
// how bright the LED is
// how many points to fade the LED by
void setup() {
pinMode(led, OUTPUT);
}
// declare pin 9 to be an output
void loop() {
analogWrite(led, brightness);
// set the brightness of pin 9 (it’s not really analog)
brightness = brightness + fadeAmount;
if (brightness == 0 || brightness == 255) {
fadeAmount = -fadeAmount ;
}
// reverse the direction of the fading at the ends of the fade
delay(30);
}
// change the brightness for next time through the loop
// wait for 30 milliseconds to see the dimming effect
Analog Read Code
/* Analog Read
*/
void setup() {
Serial.begin(9600);
}
// initialize console output at 9600 bits per second
// Press ctrl-shift-m to bring up the console
void loop() {
int sensorValue = analogRead(A0);
Serial.println(sensorValue);
delay(10);
}
// read the input on analog pin 0
// print out the value you read
// delay in between reads for stability
The potentiometer is logarithmic while the joystick is linear.
Potentiometer Fader
• The joystick provides values between 0 – 1023
• The LED takes values between 0 – 255
• We need to scale to fit
ledValue = map(joystickValue, 0, 1023, 0, 255);
Either divide the sensor value by 4
OR
Use the ‘map’ command
Potentiometer Fader Code
/* Potentiometer Fader
*/
const int analogInPin = A0;
const int analogOutPin = 9;
// Analog input pin that the potentiometer is attached to
// Analog output pin that the LED is attached to
int sensorValue = 0;
int outputValue = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
sensorValue = analogRead(analogInPin);
outputValue = map(sensorValue, 0, 1023, 0, 255);
analogWrite(analogOutPin, outputValue);
Serial.println(outputValue);
delay(2);
}
You could also use the joystick to change the frequency of the fade!
Fader Variations
• Hook up the RGB LED (common cathode)
• Use the x/y of the joystick to control
brightness and fade speed
• Use the button to change colours
• Adjust the map ranges
• Create a colour cycling fader
Light and Sound Code
/* Light and Sound
*/
void setup() {
Serial.begin(9600);
}
void loop() {
int sensorReading = analogRead(A0);
Serial.println(sensorReading);
// map the analog input range (in this case, ~80 - 310 from the photo resistor)
// to the output pitch range (100 - 1000Hz)
int thisPitch = map(sensorReading, 80, 310, 100, 1000);
tone(9, thisPitch);
delay(1);
// play the pitch on pin 9
// delay in between reads for stability
}
Not quite the same value resistors as on the web site – so fudge it!
More Cool Parts and Kits
•
•
•
•
•
•
•
•
Ultrasonic Sensor
Motor driver board
Robot chassis
LED Strips
8x8 LED display
Color organ board
Electroluminescent wire
Ardupilot
You’ve still got to program it!