Download Arduino Robotics Camp Andrew D. Sullivan Summer 2013

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Variable-frequency drive wikipedia , lookup

Current source wikipedia , lookup

Ohm's law wikipedia , lookup

Electrical ballast wikipedia , lookup

Mains electricity wikipedia , lookup

Alternating current wikipedia , lookup

Resistive opto-isolator wikipedia , lookup

Metadyne wikipedia , lookup

Opto-isolator wikipedia , lookup

Transcript
Arduino Robotics Camp
Andrew D. Sullivan
Summer 2013
Table Of Contents
Arduino Robotics Camp
Introduction .................................................................................................................................... 2
Supplies – What You Will Need ...................................................................................................... 3
Getting Started – How to Use the Board ........................................................................................ 4
Your First Program – Blink .............................................................................................................. 6
Getting Moving - Controlling Motors ............................................................................................. 7
Saving Your Work .......................................................................................................................... 10
Simple Circuits and How to Build Them........................................................................................ 11
Light Emitting Diodes - LEDs ..................................................................................................... 13
Which Way Do LEDs Hook Up? ................................................................................................. 14
How to Read Resistor Color Codes ........................................................................................... 15
Sourcing Large Currents from the Arduino ............................................................................... 16
Seeing Your Surrounding – Sensors .............................................................................................. 18
Interfacing the Sensor to the Arduino .......................................................................................... 20
Strategies for Following a Line ...................................................................................................... 21
Make a Rugged Circuit – Soldering ............................................................................................... 22
Competition Day – Rules to Live By .............................................................................................. 23
Resources ...................................................................................................................................... 24
Example Code ............................................................................................................................... 25
Andrew D. Sullivan
MSUB City College
Page 1 of 27
May 14, 2013
Introduction
Arduino Robotics Camp
Welcome to the exciting field of robotics and computer control. Building a robot is easier than
you may have thought, but like anything new, where to start can be a little challenging. That is
what this booklet is for. It is a concise guide to jump start the robotic creation process. It was
developed as part of a Robotics Camp hosted by Montana State University Billings City College. I
wrote this booklet to help people host a similar camp or activity, and to service as my guide and
lesson plan as I deliver the camp. The intent is to minimize book study and maximize hands on
learning while covering a range of topics important for robotics.
I was first introduced to robotics 23 years ago when the tools and information on the subject
were less available. I was fortunate to have taken course 6.270, Autonomous Robot Design
Competition, at MIT in 1990. The description for that year’s completion was “RoboPuck: Three
robots compete at a time to gain control of a hockey puck located at the center of the table.”
We worked in groups of 2 or 3 and built a robot out of Legos. This camp doesn’t rely on Legos,
although it could. A main focus of this camp it to keep costs down and open it to the widest
range of campers possible, so using commonly available materials is a priority. The total cost of
your robot will be about $70 including computer board and motors.
My first robot used a custom computer board built my MIT graduate students that was way
beyond my construction abilities. It was challenging to use because it was programed in low
level assembly language. The evolution of single board computers has created great
opportunity for the do-it-yourself robotic enthusiast. Boards are available for less than $30 that
are easily programed from a PC in higher level languages like Basic, C, and Processing. These
boards facilitate input and output from very low cost sensors and motors. They are perfect for
robotics or any other ideas you may have where you want to control something. In fact, many
of the appliances you are familiar with use similar computers like your microwave, smart
thermostat, or automotive control system like cruise control. These are called embedded
systems, and they are all around us.
This course was built around the Arduino microcontroller. It has advantages of low cost and a
free development environment. It is programmed in the C programming language which is
heavily used in industry, and students are likely to see something similar later in their careers.
There is also a large Arduino community and online resources available.
Andrew D. Sullivan
MSUB City College
Page 2 of 27
May 14, 2013
Arduino Robotics Camp
Supplies – What You Will Need
The following table is a listing of what you will need to host a similar camp. Quantities are
based on 10 campers with a 10% allowance assuming some things will get damaged. Total cost
is about $771.56 or $77 per student.
Per
Studen
t
1
2
-1
--1
1
1
1
1
1
1
1
--1
Total + Description
10%
---------
Andrew D. Sullivan
MSUB City College
11
22
1
11
2
1
11
11
11
11
11
11
11
11
1
1
11
Arduino Leonardo /w Header
Servo - Medium Full Rotation
22 AWG solid hook up wire
9V Battery Holder
Soldering Iron - 30W
Solder Lead Free - 100-gram
NPN Phototransistor
Infrared Emitters
47 ohm 1/2W Resistor
220 ohm 1/2W Resistor
5.6K ohm 1/2W Resistor
2N4401 Transistor
Dual Mini Board 213 Holes
USB Cable - 6ft
6x6x6 Boxes Bundle/25
9 Volt Battery, Pack of 12
Pair 2.5 inch hobby wheels
1
1
1
1
1
1
1
4
1/2" Foam Board
Glue Gun & Glue
Two Sided Foam Tape
2" x 4" x 96" Stud
1/2" 4x8 OSB (Particle Board)
Quart White Paint
Black Electrical Tape
Goggles (for soldering)
Vendor
Item #
SparkFun
SparkFun
SparkFun
SparkFun
SparkFun
SparkFun
Mouser
Mouser
Mouser
Mouser
Mouser
Mouser
RadioShack
Amazon
Amazon
Amazon
Central
Hobbies
Hobby Lobby
Hobby Lobby
Hobby Lobby
Home Depot
Home Depot
Home Depot
Home Depot
Home Depot
DEV-11286
ROB-10189
PRT-11367
PRT-10512
TOL-09507
TOL-09325
782-BPW96B
720-LD274
2CT52R470J
2LCT52R221J
2CT52R562J
610-2N4401
276-148
CHS036W
Price
Each
Total
Price
$22.46
$10.76
$16.95
$2.66
$9.95
$7.95
$0.51
$0.21
$0.08
$0.14
$0.08
$0.38
$2.49
$2.52
$14.86
$17.90
$3.47
$247.06
$236.72
$16.95
$29.26
$19.90
$7.95
$5.61
$2.34
$0.88
$1.54
$0.88
$4.18
$27.39
$27.72
$14.86
$17.90
$38.17
$3.99
$11.98
$5.99
$2.73
$17.97
$15.74
$1.97
$2.97
$3.99
$11.98
$5.99
$2.73
$17.97
$15.74
$1.97
$11.88
$771.56
Page 3 of 27
May 14, 2013
Learning’s from Prior Camps
Arduino Robotics Camp
Following is a list of things learned from conducting the camp that may be helpful for future
camps.
1. Ten students is a practical max for a single instructor. We used a grade 8-12 guideline for
the camp, and some students needed quite a bit of help.
2. Add a little budget for food. Donuts are popular and about $8 per day.
3. Set the camp somewhat later than the camp flyer. We were too close and had to over order
materials because counts were not final.
4. The 9 volt battery didn’t work too well. Voltages would drop and reset the board on some
robots requiring a second battery just for the servos, but then the voltage was 9 vs. 6 volt
limit on the servos. It worked, but was sloppy. A 4-AA battery pack may be better, but the
volts is near the low limit again and needs more testing.
5. A three sensor robot works very well and is worth the few extra components.
6. Computer configuration was challenging even with the pre-work. The board the system was
prototyped with was discontinued and we went to a new board which needed new
configuration. Prototype with the board you will use.
7. The original camp was from 9-12, M-Th for two weeks for a total of 8 classes and 24 hours.
An alternative might be 9-5 M-W to make it easier for parents who work to drop off and
pick up with hours closer to typical working hours. 24 hours for camp seems adequate.
Andrew D. Sullivan
MSUB City College
Page 4 of 27
May 14, 2013
Getting Started – How to Use the Board
Arduino Robotics Camp
We use an Arduino board which is easy to interface to a home computer, and there is a lot of
online documentation. One thing that can get a little more challenging in a camp setting is if the
computers you use are locked down. Academic and commercial settings are forced to limit
computer access to protect their systems. This means that installing software and drivers may
be restricted to computer support specialists. I suggest you get the process started early and
test it well ahead of the camp to avoid surprises. Following is a procedure that worked at
MSUB. Your site will likely require some fine tuning.
1. Get a board that you will use in the camp. This is important to pre-test your facilities
configuration and to complete driver installation. You will also need an appropriate USB
cable.
2. Download the free Arduino software from http://arduino.cc/. If your systems are locked
down, you will need your Information Technology support group to do this for you. It will
normally install to C:\Program Files (x86)\Arduino.
3. Refer to the installation guide at the Arduino site, or http://arduino.cc/en/Guide/Windows.
4. Test the software. At MSUB, the software worked right off on PCs, but it wouldn’t launch on
laptops. We had to right click on the executable file and click “run as administrator”, then it
worked.
5. Plug in your Arduino board and configure the USB driver per the installation guide. This can
take a little experimenting depending on your facilities. We had more than one version of
Windows in use, so there was some variation. If you are lucky, the drivers will load
automatically when you plug in the board. Sometimes it doesn’t work. For the MSUB
configuration, I took the following notes:
a. Use Window’s Explorer to navigate to C:\Program Files (x86)\Arduino\drivers.
b. Right Click on “Old_Arduino_Drivers” which is a .zip file. Click on “Extract All” and
click “Extract” when prompted.
c. Open “Control Panel” then “Device Manager”. On some systems this might be in
“Control Panel” / “System”.
d. Expand the “COM Ports” selection, right click on one of them, and click “Update
Driver”.
e. Browse to the C:\Program Files (x86)\Arduino\drivers\Old_Arduino_Drivers
directory and click OK.
Your software should be ready for use. The next section tests it on a simple program.
Andrew D. Sullivan
MSUB City College
Page 5 of 27
May 14, 2013
Your First Program – Blink
Arduino Robotics Camp
1. Logon to your PC. For the 2013 summer camp at MSUB, students IDs are set as:
Username:
CCA062
Password:
Robotics 2013
2. Open the Arduino IDE (Integrated Development Environment).
3. Open program “Blink” under File/Examples/Basics.
4. Set the board to the one you are using under Tools/Board.
5. Set the COM port to the proper one under Tools/Serial Port. This might take some trial and
error. Start with the highest number. There are normally only 3 choices or so.
6. Test uploading the code to your board. Click the “upload” / right arrow button on the top
left of the window. It looks like a play button.
a. The window will signal
that it is “Compiling
Sketch”.
b. You should then see the
double lights (LEDs) on
the board blink rapidly
for just a moment as the
program / sketch is
uploaded.
c. The other LED should
blink slowly once done.
7. Experiment making the light
blink differently by changing the
“delay(1000);” commands near
the bottom of the sketch. See if
you can figure out what the
sketch is doing. Note that there
are 1000 milliseconds in a
second.
Andrew D. Sullivan
MSUB City College
Page 6 of 27
May 14, 2013
Getting Moving - Controlling Motors
Arduino Robotics Camp
There are many types of motors and many ways to interface them to a microcontroller board. A
microcontroller does not supply enough power on an output pin to run a motor directly. Trying
to do so would burn up the microcontroller! Instead, an interface of some kind is needed to
convert a small signal from a microcontroller into the power needed by a motor.
For example, two small DC motors can be driven with a board such as the “Ardumoto - Motor
Driver Shield” sold by SparkFun for $24.95. Motors run too fast and with too little torque to
connect directly to a robot’s wheels, so a gear motor is needed. They are available from many
retailers and cost in the neighborhood of $12.99. Total cost for the controller and motors would
be close to $50 which is getting a little high.
Stepper motors are a more precise option because the motor rotation can be accurately
controlled. Costs will be more because stepper motors cost more, and they still need to be
geared down to a wheel. A control board is needed, and controlling the steppers is a little more
complicated. We don’t need the accuracy, so steppers are not necessary for this project.
To keep cost and complexity down, we will be using continuous rotation servo motors. The
hobby airplane market has yielded this low cost option that has a controller and gearbox build
into the motors. A medium sized servo is available for about $11 dollars which has plenty of
power for our robot.
The photo on this page shows an
example robot that uses two
continuous servos for locomotion.
Servos can have different wire
color conventions, but in this case:
• red is hot
• black is neutral
• white is signal
The servos in your kit use the
same color convention. the wheels
are simply hot glued onto the
servo "horn" and the servos are
hot glued to a piece of foam board
that forms the body.
Connecting the servo to the Arduino board is pretty easy. If you take a look at your board, you
will notice some pins labeled 5v and GND. The 5v pin is a regulated 5 volt source that the
Andrew D. Sullivan
MSUB City College
Page 7 of 27
May 14, 2013
Arduino Robotics Camp
Arduino regulates down from the supply voltage with an onboard regulator. The red wires from
both servos attach to the 5v pin.
The GND pin on the Arduino is the ground pin or neutral. The black wires from both servos
connect here.
The white wires from each servo are the signal that tells the servo which way to turn, and how
fast. The servos respond to a signal that pulses every 10-20 milliseconds. Recall that a
millisecond is a 1/1,000 of a second, so this is pretty quick. Your Arduino runs at 20 MHz, which
is 20 million cycles per second, so to the Arduino, the servo signal is like watching paint dry.
The length of the pulse tells the servo how fast to go and in which direction. If the pulse is
about 1.5 milliseconds in length, the servo should not turn much in either direction. It is not
likely to be exact, an a little fine tuning will likely be necessary. A shorter pulse will turn the
servo to the left, and a longer pulse will turn it to the right.
Andrew D. Sullivan
MSUB City College
Page 8 of 27
May 14, 2013
Arduino Robotics Camp
The Arduino has a library of code that makes using a servo easy. A library is code that someone
else has written that we can use. We don't even have to know how the code works. We can
make calls with some simple commands, and the library does the rest.
Connect your Arduino and open the example "Sweep". We will go through this at the board.
Try to get your servo working with the Sweep code, then modify it to get two servos working.
Consider how you will use the servos and the Arduino to move your robot.
There is great online help for the Arduino under the Help menu if you have questions or want
to dig deeper.
Be careful not to hook the wrong pins up. You might damage or destroy your board. Best to ask
the camp leader to check out your circuit before plugging in power until you are comfortable
with the board and
circuits.
Andrew D. Sullivan
MSUB City College
Page 9 of 27
May 14, 2013
Saving Your Work
Arduino Robotics Camp
Be aware that worked saved on a C:\ drive is likely to get lost. Shared computers, like those at
MSUB, are frequently set up to maintain fixed starting configuration. That means that anything
saved on the C:\ drive will be erased if the computer restarts for any reason.
Here are a few choices on how to save your work:
Use a Flash Drive. This might be the best option if you have access to a drive or can borrow
one. Low cost drives are routinely given away as promotions, so you might have a stack around
home. They are a little costly to buy in bulk; about $6, so I didn't by a bunch of them just to
have them end up unused in a draw. I will make a common drive available to the class and will
back it up at night.
Writable CD. The school computers can write to a CD, and they are cheap storage. The
technology is a little clunky, and you will have to copy to the C:\ drive to edit, but it will work.
Let me know if you would like to use this option, and I will bring in some blanks.
The Cloud. This is a good option, and it is free. Suggest using your personal Email to set up a
Google Drive account to store files. Suggest using Mozilla on the MSUB computers that still
have Windows XP installed. The older version of Internet Explorer doesn't seem to work with
Google Drive.
If needed, I have set up Google Drive account that the camp can use. Anyone can delete stuff,
so please be courteous.
Username:
Password:
Andrew D. Sullivan
MSUB City College
[email protected]
Robotics 2013
Page 10 of 27
May 14, 2013
Arduino Robotics Camp
Simple Circuits and How to Build Them
We mentioned before that the Arduino can't run a motor
directly from a pin. This is because each pin can only
supply (or sink) so much current. Imagine the tiny
circuitry inside the chip, and you can imagine why a pin
can't handle too much current. Each I/O pin on the
Arduino can handle only 50 ma, or 50 milliamps. A
milliamp is 1/1,000 of an amp.
But how do we limit current? It depends on what you are
doing, so we will look at a few examples. First, we will
look at a simple LED, or Light Emitting Diode.
An LED is rated for a current that ranges based on its
power output. A small surface mount LED might use only
5 ma. Larger LEDs like the one on a TV remote control
might use 100 ma.
A Surface Mount Resistor Network. There are
several 1 kohm resistors in the component
labeled 102.
An LED takes about 1.3 volts to turn on. If you hook an LED to a 5 volt source, too much current
would flow through the device and it would burn up.
To limit flow, we use a resistor. A resistor is an electrical
component that "resists" electrical flow. That is, electricity flow
is restricted through the device. Voltage also drops through the
device. If you look closely at your Arduino board, you will see
the LEDs are wired to small surface mount resistors, or resistor
networks as shown here. We will use through hole resistors
that are easier to work with because they are not as small.
A Through Hole Resistor
A resistor's ability to slow electrical flow is measured in units of ohms. Current, voltage, and
resistance are related with the equation:
I=V/R
Where:
I = Current in amps
V = Volts across the resistor
R = Resistance in ohms
Ohms is sometimes represented by the Ω symbol.
Andrew D. Sullivan
MSUB City College
Page 11 of 27
May 14, 2013
Arduino Robotics Camp
As an example, lets calculate the current through a 1 kohm resistor with 5 volts across it. 1
kohm, or 1kΩ, is 1,000 ohms.
(5 volts) / (1,000 ohms) = 0.005 amps = 5 ma
As another example, consider the following schematic. A 5 volts supply is used to power an LED,
and a resistor is used to limit current. Because an LED takes about 1.3 volts of voltage drop, the
voltage downstream of the LED is 3.7 volts. The resistor sees 3.7 volts, and is 220 ohms. Using
our equation, we come up with 17 milliamps of current (3.7/220=0.017).
Important: We will use resistors to protect our Arduino boards from over-current and damage.
Andrew D. Sullivan
MSUB City College
Page 12 of 27
May 14, 2013
Light Emitting Diodes - LEDs
Arduino Robotics Camp
There are 2 interesting things about Light Emitting Diodes that are a lot different than light
bulbs. First is that they emit light at a specific frequency. This might be outside the spectrum
that you can see. Consider two examples:
1. Your TV remote control. Who can tell me how it works. Light or radio waves? Use a
digital camera to demonstrate it is light, IR, that you can't see.
2. Bring in a UV or black light LED flashlight. Be careful with it as it can burn eyes without
knowing. Use it in the dark to see the interesting effect of UV light causing material to
Fluoresce.
The other interesting thing about LEDs is that they let electricity pass in only one direction.
Hook them up backward, and they don't light or pass current. Consider the last schematic with
a battery, LED, and resistor in series. If the LED was hooked up the other way, it would stop the
flow of electricity and would not light.
Andrew D. Sullivan
MSUB City College
Page 13 of 27
May 14, 2013
Which Way Do LEDs Hook Up?
Arduino Robotics Camp
LEDs are constructed with a longer lead and a plastic case that sometimes has a flat side. The
LED hooks into a circuit such that current flows from the positive potential, into the LED on the
longer leg, and out the LED to the negative potential on the shorter leg with the flat side as
shown below.
The longer leg is sometimes referred to as the anode, and the shorter leg is the cathode.
Andrew D. Sullivan
MSUB City College
Page 14 of 27
May 14, 2013
How to Read Resistor Color Codes
Arduino Robotics Camp
Read a resistor's value using the color codes. Start with the bands opposite the gold or silver
band. Write down the number corresponding to the bands. In this case, brown = 1 and green =
5, for a 15. Next read off the multiplier. In this case a 1. Fifteen times one is fifteen, so this is a
fifteen ohm resistor.
What is the resistance of the following resistor?
Andrew D. Sullivan
MSUB City College
Page 15 of 27
May 14, 2013
Sourcing Large Currents from the Arduino
Arduino Robotics Camp
We have reviewed that the Arduino can only source 50 ma from a pin, and discussed how we
can us resistors to limit the current flows to acceptable levels. What if we need more current
than the Arduino can supply? Say for a high powered LED that might take 150 ma?
We will us a transistor to control larger currents with the Arduino. A transistor is an electronic
switch that we can use to control larger currents with a smaller current. Transistors are
everywhere, and are the backbone of the information age. The Central Processing Unit (CPU) in
your computer might contain 1 billion transistors that form its logic system. Your computer's
memory contains more transistors.
Consider the diagram to the right. The
reed relay is a mechanical device that
uses a magnet to close a mechanical
switch. The switch can control a large
supply of power such as house current.
The control current is much smaller, but
still more than the Arduino can supply. In
this case, 12 volts and 130 ma. 12 volts
would burn up an Arduino and it can't
supply that voltage. If a pin was hooked
straight to the coil, it would draw too
much power and damage the pin.
To address the situation, transistor Q1 is
used. This is an NPN transistor. There are
other types, but we will stick to NPN in
this discussion.
There are three leads from the transistor. The main load flows from the Collector (C) to the
Emitter (E). Current won't flow until a small current is supplied to the Base (B). The main flow is
proportional to the base flow, and can be used to control current. We don't need proportional
control, and will be using the transistor as a switch (ON or OFF).
Andrew D. Sullivan
MSUB City College
Page 16 of 27
May 14, 2013
Arduino Robotics Camp
Resistor R1 limits current to the Base at a reasonable level. 5 volts / 220 ohms = 23 ma which is
within the Arduino pin supply capability.
The pins for the NPN transistor are as
labeled to the right.
Andrew D. Sullivan
MSUB City College
Page 17 of 27
May 14, 2013
Seeing Your Surrounding – Sensors
Arduino Robotics Camp
To detect the line under our robots, we will us a combination IR emitter and detector. The IR
emitter is an LED. It works like an ordinary LED, but the light it emits is beyond red in the visible
spectrum. That is the wavelengths of light are longer than the longest we can see.
Warning: You can't see IR light, so your eyes won't contract if the LED shines in your eyes.
These LEDs have enough power to damage your eyes, so don't look into them.
The IR emitter is rated for 150 ma. It takes about 1.3 volts of drop, so there is a remaining 3.7
volts of potential. 3.7 volts / 47 ohms = 79 ma which is well within limits. If we needed more
light, we could decrease the resistance in that circuit.
Line detection will be implemented by shining the IR light down on the floor, and detecting how
much light reflects back. More light indicates a reflective surface, and less light indicates an
Andrew D. Sullivan
MSUB City College
Page 18 of 27
May 14, 2013
Arduino Robotics Camp
absorbing surface. Black absorbs and white reflects visible light. This is also true for our IR light,
but note that objects don't always absorb other light frequencies like they would visible light.
A phototransistor will be used to detect the reflected IR light. It works just like the NPN
transistor discussed previously, but the Base control current is replaced by a light signal. Note
that the current flows from the short lead to the long lead as shown in the photo.
The sensor circuit works by measuring the voltage between the IR detector and the 5.6 kΩ
resistor. In a dark situation, very little current flows through the detector and the voltage is
near 0 volts. As light intensity increases, current will flow through the detector. The 5.6 kΩ
resistor causes a voltage drop proportional to the current flow. At "ON" conditions, voltage at
the signal line will increase to closer to 5 volts.
Andrew D. Sullivan
MSUB City College
Page 19 of 27
May 14, 2013
Interfacing the Sensor to the Arduino
Arduino Robotics Camp
In the last section we explored how to use an IR emitter and detector to determine if a sensor is
over a light or dark object. The technique used a simple circuit that would produce a signal
closer to 5 volts over a light object and closer to 0 volts over a dark object. In this section we
will use that circuit to feed data to our Arduino.
The 0-5 volt signal voltage is read into the Arduino using the analogRead command. Clicking the
"Help" / "Reference" menu from the Arduino IDE gives background on the command. The
command returns an integer value from 0-1023 that is proportional to the voltage. 0 volts
yields a value of 0, and 5 volts yields 1023. A sample program is included that provides details
on how to use the command. The reference resource also provides help.
But what voltage corresponds to seeing the line? That is a question for testing. I suggest testing
your circuit with a volt meter to get it working about right, then write a little program similar to
the example to test what signal you get for a light vs. dark response. I took 5 readings and
added the values together to smooth noise a little. I used a variable named "threshold" set at
4250 to differentiate between light and dark. That is 4250/5 = 850 per read. That is if the
reading is less than 4.2 volts (4.2=5/1023*850), it sees a dark line.
Your values may be different. Results will depend on how close your sensor and emitter are to
the surface, and particulars of your circuit. A great way to test is to use the Serial.Println()
command and the "Tools" / "Serial Monitor" to print a reading while moving a paper with black
tape under your sensor.
Andrew D. Sullivan
MSUB City College
Page 20 of 27
May 14, 2013
Strategies for Following a Line
Arduino Robotics Camp
There are different line following algorithms you can use, and you are encouraged to do some
research on the Internet to optimize your strategy. To get you started, you can use the sample
code at the end of this document. It uses a modified "Follow the Gray" strategy where the
robot attempts to follow the left edge of the tape (between black and white = gray).
In the sample algorithm, the robot turns left until it doesn't see the tape. Then it turns right
until it sees the tape. It knows it is at the edge of the tape, goes forward a small amount, then
repeats.
The algorithm isn't very efficient because it stops to move back and forth checking for the line
all the time. This strategy slows the machine down, but the advantage is simplicity. You could
do better with a more advanced strategy, and/or using more sensors.
Andrew D. Sullivan
MSUB City College
Page 21 of 27
May 14, 2013
Make a Rugged Circuit – Soldering
Arduino Robotics Camp
Sparkfun.com has made a freely distributable guide on soldering that will be handed out and
reviewed with camp. It is an a comic book format titled "Soldering is easy here's how to do it,"
by Mitch Altman. It is available at the following link:
https://learn.sparkfun.com/curriculum/42
Andrew D. Sullivan
MSUB City College
Page 22 of 27
May 14, 2013
Competition Day – Rules to Live By
Arduino Robotics Camp
Just for fun, we will have a little friendly competition to see which design strategy was most
successful.
Competitions can sometimes be disappointing because a machine won't work its best when
needed. This is Murphy's law and has happened to me plenty of times. Luck can be a big part in
a competition.
Sometimes ideas don't work. That is not a failure, but a learning. We wouldn't get far as a
culture if we didn't take chances. Fortunes are made with gambles that worked out, but many
smart people have gamble and lost. If your device doesn't perform like you hoped, remember
Thomas Edison's quote: "I have not failed. I've just found 10,000 ways that won't work." Edison
gave us much, but one failure of his is that he was a strong supporter of DC transmission
systems. Tesla favored AC transmission which ultimately took acceptance.
1. All robots must fit within a cube 6 inches on a side. The box your kit came in is a 6 inch
cube.
2. Your robot many use parts other than kit parts. Keep track if your robot uses only stock
parts, or if you have used customized parts. We will compete in both categories.
3. Once you start your robot, it must complete the course without being touched.
Interventions will be counted as a non-completion.
4. If we have the judges, we will take 3 time readings and use the middle score. If we have
only 2 readings, we take the average. The judge's ruling is final.
5. Sportsmanship is important in life. We will try to time accurately, but this can be tricky
and sometimes can be debated.
Andrew D. Sullivan
MSUB City College
Page 23 of 27
May 14, 2013
Resources
Arduino Robotics Camp
Following are some websites I like. They either sell neat electronics, offer educational materials,
or both.
https://www.sparkfun.com/
http://www.parallax.com/
http://www.mouser.com/
Getting Started with Arduino by Massimo Banzi. $12.99.
The C Programming Language by Dennis Ritchie. More details than you need for Arduino, but
handy if you start more sophisticated Arduino programming projects.
Andrew D. Sullivan
MSUB City College
Page 24 of 27
May 14, 2013
Example Code
Arduino Robotics Camp
Following is an example program to drive a line following robot. It works well, but there is room
for great improvements.
Andrew D. Sullivan
MSUB City College
Page 25 of 27
May 14, 2013
Arduino Robotics Camp
Andrew D. Sullivan
MSUB City College
Page 26 of 27
May 14, 2013