Maker Challenge: Do the Robot! Programming a RedBot to Dance

Contributed by: SparkFun Education

A photograph shows a two-wheeled robot with a two-level red plastic platform covered in oblong holes, on which a circuit board, wires and four batteries are attached to the top level.
Can you program a SparkFun RedBot to dance?
copyright
Copyright © 2014 SparkFun Education CC BY-SA 4.0 https://learn.sparkfun.com/tutorials/redbot-assembly-guide

Maker Challenge Recap

Students program the drive motors of a SparkFun RedBot with a multistep control sequence—a “dance.” Doing this is a great introduction to robotics and improves overall technical literacy by helping students understand that we use programs to control the motion and function of robots, and without the correct programming, robots do not operate as intended and are unable to complete simple tasks that we count on them to perform. Students are given the basic code and then time to experiment, alter and evolve it on their own. As time permits, students may also want to construct and decorate frames and chassis for their robots using found/recycled materials such as cardboard boxes.

More Curriculum Like This

What Is a Program?

Students are introduced to the basic concepts of computer programs, algorithms and programming. Using a few blindfolds and a simple taped floor maze exercise, students come to understand that computers rely completely upon instructions given in programs and thus programs must be comprehensive and th...

Elementary Lesson
How Do You Make Loops and Switches?

Students learn how to program using loops and switches. Using the LEGO® MINDSTORMS® robots, sensors and software, student pairs perform three mini programming activities using loops and switches individually, and then combined.

How Do You Make a Program Wait?

Building on the programming basics learned so far in the unit, students next learn how to program using sensors rather than by specifying exact durations. They start with an examination of algorithms and move to an understanding of conditional commands (until, then), which require the use of wait bl...

All about Linear Programming

Students learn about linear programming (also called linear optimization) to solve engineering design problems. They apply this information to solve two practice engineering design problems related to optimizing materials and cost by graphing inequalities, determining coordinates and equations from ...

High School Lesson

Maker Materials & Supplies

Kickoff

We use robots for so many purposes! From assembling cars in a factory to performing the most difficult medical procedures, robots impact our lives every day. How do robots work? How do we give them instructions? And, what makes them “listen” to us?

Engineers are often the people behind-the-scenes who control the function and movements of robots. They do this by generating codes, or writing sets of instructions, that tell the robot’s system what to do. These codes direct the electrical signals that control the robot’s hardware.

Understanding programming enables engineers to control robots and machines, which makes them useful tools to help people perform difficult and tedious tasks. If you had the ability to control a robot using code, what would you tell it to do? Today, you will use the Arduino IDE program to control a real robot, and program it to dance!

Resources

Maker Time

Have students take out their RedBot kits, batteries and jumper wires. Have students begin by connecting the external battery pack to the mainboard. Then attach the motors to the mainboard as shown in Figure 1 These steps—and more—are outlined in the SparkFun RedBot Assembly Guide.

A photograph shows a SparkFun RedBot mainboard with notations at the three locations to connect the left motor, right motor and battery pack.
Figure 1. The RedBot circuit diagram.
copyright
Copyright © 2014 SparkFun Education CC BY-NC-SA 3.0; added notations 2017 Aaron Lamplugh, ITL Program, College of Engineering, University of Colorado Boulder https://www.sparkfun.com/products/12097
Once motors are connected, use a standard USB cable to connect the mainboard to a computer with the Arduino IDE software installed.

See Figure 2 for the base code used in this maker challenge. When run, this code causes the RedBot motors to spin for two seconds. Copy this code into an Arduino IDE sketch and save it.

A screen capture shows 14 lines of code with the commented title: RedBot Test Code. This is the basic code for controlling the RedBot drive motors.
Figure 2. The RedBot motor base code.
copyright
Copyright © 2014 SparkFun Education CC BY-SA 4.0 https://cdn.sparkfun.com/assets/a/5/c/1/c/01RobotDance-GetnGoingISTE.pdf

Understanding the Code

The provided base code (see Figure 2) consists of just a few lines. Explanation by line:

  • Line 2: (#include <RedBot.h>)—Calls a reference library RedBot.h, which contains prewritten code commands for the RedBot.
  • Line 4: (RedBotMotors motors;)—Declares the RedBot object known as motors, which enables us to control the motors.
  • Line 8: (motors.drive(255);)—Issues the commands that drive the motors. The value 255 in the motors.drive() function is the drive power. This value may range from -255 to 255. Switching from a positive to negative integer causes the motor to spin in the opposite direction.
  • Line 9: (delay(2000);)—Specifies the length of time that the drive command runs. The unit is milliseconds, so the length of time specified in the code is two seconds (2000 ms/1000 ms * s-1).
  • Line 10: (motors.brake();)—Tells the motors to brake abruptly after the drive command is completed.
  • Lines 6 and 12: (void setup() and void loop())—Begin and end the program loop.

Testing

Once the RedBots are linked to computers, have students execute the code. If the motors are oriented as shown in Figure 3, then the right motor spins clockwise and the left motor spins counter-clockwise.

A diagram shows the motor setup and spin direction that matches the provided base code (Figure 2).
Figure 3. A schematic of the motor setup.
copyright
Copyright © 2014 SparkFun Education CC BY-SA 4.0 https://cdn.sparkfun.com/assets/a/5/c/1/c/01RobotDance-GetnGoingISTE.pdf

If the RedBot does not work as expected, check the following:

  • Check the code for syntax errors. Pay careful attention to punctuation, spelling, spacing and capitalization!
  • Check that the POWER is set to ON.
  • Make sure that the XBEE_HW_SERIAL switch is in the down position pointed toward XBEE SW SERIAL; this is for advanced wireless control that we use later.
  • Verify that the motors are plugged into the correct ports.
  • Check that the MOTOR switch is set to RUN.

Chassis Design and Construction

Have students design and build their own chassis. Encourage creativity in their designs. While the robot chassis can be made from a number of materials, it works well if it follows the general form shown in Figure 4.

A rectangular diagram shows the RedBot motors on the top and bottom of the left side with an arrow indicating the forward direction (pointing left). On the right center of the rectangle, a circle is labeled “skid caster.”
Figure 4. A basic template to make a RedBot chassis.
copyright
Copyright © 2014 SparkFun Education CC BY-SA 4.0 https://cdn.sparkfun.com/assets/a/5/c/1/c/01RobotDance-GetnGoingISTE.pdf

Possible materials are cardboard, cereal boxes and plastic containers. Fasteners to attach the hardware to the chassis might include tape, zip ties and hot glue. Make sure students are careful while attaching hardware so as not to damage components and render them unusable.

Experimentation and Dance Off

Now that students understand how the code works, have them experiment with the code to make the RedBot “dance.” They can do this by:

  • Changing the drive power (try positive AND negative values)
  • Changing the delay time
  • Copying and pasting lines 8-10 inside of the loop, and then changing the drive power and delay time to create a series of movements—making a more complex “dance”
  • Controlling each motor separately using the following code with varying drive power values

motors.leftMotor(255);

motors.rightMotor(255);

Journaling for Documentation and Reflection

Suggest that students keep track of their code changes and results in a notebook or journal, which is a good engineering and research practice to cultivate. Provide some example starter sentences to assist students in documenting their code development. Examples:

  • The slowest speed setting for my motors is…
  • When I set this speed, we observed that…
  • Next, we tried changing… because we thought...
  • When we used a negative number for the speed setting...

Careful note taking pays off later when students refer to their notes to help them create faster and more precise code generation.

(Optional) Videos

It is fun, entertaining and more engaging if students make quick video clips of their dancing robots and then set them to music as a way to record their accomplishments and show them to others later.

Wrap Up

Have students reflect on their projects, either verbally as a class or in writing with their groups. If students recorded their robot dances, have them show their videos to the rest of the class. Reflection questions:

  • What sort of design process did you employ?
  • What worked well, and what did not?
  • What challenges did you face?
  • Did you complete and test your robot, and did the robot function as intended?
  • How might your code be applied to completing other tasks, other than dancing?
  • What other types of robots would you be interested in programming?

Contributors

Brian Huang; Aaron Lamplugh

Copyright

© 2017 by Regents of the University of Colorado; original © 2014 SparkFun Education

Supporting Program

SparkFun Education

Acknowledgements

This maker challenge was adapted from SparkFun’s “Get’n Going - Recycled STEM Robots” activity at https://cdn.sparkfun.com/assets/a/5/c/1/c/01RobotDance-GetnGoingISTE.pdf.

Last modified: May 4, 2017

Comments