Champaign-Urbana Community Fab Lab
Champaign-Urbana Community Fab Lab

Locomoting Pom-Pom bots

Locomoting Pom Pom Bots

We continued on working with Arduinos, and the goal for this week was to make a pom-pom bot that moves from point A to point B.


Initial Design: Inchworm

In lab, I made an inchworm that moved like an inchworm, but didn’t traverse across a surface. So, I thought I could expand on the design, and make an actual inchworm robot. I planned to have a sticky end (dried hot glue) that would cling onto the surface so that each time the bot contracted, the non-sticky part would follow. I created the initial prototype, which did not work very well, and was flimsy. I thought that the sticky part was not heavy enough, so for the second prototype, I added additional weights to the sticky end. Sadly, that did not work out well either. Therefore, I decided to change the design altogether


New Design: Skiing

The new design I chose mimicked a cross-country skier. It would stand on two flat boards, and move by pushing itself forward. I planned to make one side of the stick have more friction than the other side, thinking that pushing on the side with less friction would not move the bot as far. The first design worked quite well, but it could only move back and forth, as pushing on the side with more friction had the same effect as pushing on the side with less friction.

I updated the skier to lift up the poles when moving the poles back to the starting point. It required adding two more servo motors to the bot, and hooking up together so that they did not interfere with each other. Also, I gave the bot a wider base so that it was more stable. Thankfully, the new designed worked very well, and the bot was able to move about.

I changed the poles to resemble a person holding a ski pole, and decorated the pom pom bot.



I think the final product worked very well, but I’m a little bit disappointed that my initial idea did not work quite well.

Continue Reading


I began by sketching & brainstorming types of movement. Waddling seemed possible. So I added that to the fact that my nephew loves dinosaurs & the recent discussions my family has had about Nessie to create a dinosaur that waddles.

At first, I couldn’t get the servos to go opposite ways so I designed version 1 in way that would facilitate having them move the same direction…. I put one servo upside down so they moved in opposite ways despite the code.


I was very proud of the way I attached the flippers to the motors by untwisting the pipe cleaner. It made for a stable, but removable, flipper.

Version 1 didn’t get enough traction because the motors were raised so high above the surface. For version 2, I determined to set them right on the surface. This meant fixing my code. 

Thankfully, Emilie taught me that to make them move opposite ways at the same time I simply had to give 1 set of instructions for the placement & movement within a loop then put both servos into the loop with 1 catch. 1 servo was – 180. This made them go opposite ways!

(I lost my code, or else I’d show you)

As I created version 2 I’d add a bit then test it, add a bit then test it. It only barely moved so I was paranoid about it getting too heavy.

To reduce weight I undid my first hump made of fabric & redid it in puffballs.

He took his sweet time, but he got from point A to point B & even moved enough to fall off the table.

It didn’t even occur to me until later that I could’ve put the arduino & bread box inside. That could’ve either made it too heavy, or prevented them from holding back the movement.

Continue Reading

Pom-Pom Bee Bot

For this Assignment I started off by drawing an initial concept/design on paper. In this initial design I wanted to have the motors held together with a rubber band and have the motor attachments act as feet which was inspired by the way penguins walk. My goal with this design was to use jerking motions to make it move from point A to B. Then I attached the foam and pom outfit of the bot on the outside with arms made of pipe cleaners. 


 This design resulted in this little prototype bot to the left. However, the way the feet moved made the bot fall over a lot while moving. As shown in the video here: IMG_3553

I tried to stabilize the bot with a popsicle stick that was hot glued to the back. This helped but it still would eventually fall over. Making the bot shorter could’ve helped this too but since the movement of the motors wasn’t letting it remain balanced and move far I tried to come at it from a different approach with wheels for the second iteration to improve the movement. I also decided to change the pom pom bot costume to look like a bee and used hot glue to make the costume more stable instead of tape and rubber bands.


For the 2nd prototype I used a hot glue gun and yellow foam to make the wheels. Inside the wheels I used pipe cleaners to attach the motor feet to the inside of the wheels which looked similar to a bike wheel hub with axels and a rim. I again stabilized the motor’s together using a rubber band but this time with the motors in different positions. The costume was made with poms, black foam, and fabric. Although I fixed the falling over problem, the wheels were too small to have the Bee move much and the motors we have only go 180 degrees which made coding them as normal wheels impossible. Although I knew to begin with that it could only go 180 degree’s, I didn’t realize that you couldn’t continuously make it go 180 degrees and that the motor would have to go back to it’s initial starting point every time. 

Video: IMG_3581


For my final design I decided to have the bee lay on it’s belly, made the wheels bigger, and programmed the code so that the wheels would move as close to wheels as I could get them for maximum movement. This required coding them to go forward very fast and then backwards slowly. Although it might take the bee a while to get anywhere since it does move back and forth it can still move about 2 inches after going through a couple cycles of the code. Here is a video which shows how the bee bot moves: IMG_3587.1

This final design ended up looking very different from the first prototype. I improved upon the first design by adding wheels, changing the costume, changing the placement of the motors, and changing the coding to work with the wheels. The costume part went well and I enjoyed it because I used to make a lot of pom pom creatures when I was a kid but the design with wheels would have worked a lot better with motors that had 360 degree motion. 

Continue Reading

Craig Santo – Arduino 2

Prototype 1:

Sadly this one didn’t make it much past the conceptual stage. After working with the logistics of it, I quickly realized that making the robot walk with stability, in addition to dragging the arduino/breadboard, would take a lot of work. I’d maybe like to work on an alternative version of this design (more akin to a gorilla, or something that drags itself using its front legs, keeping its back legs on the ground) for the iteration assignment?

Prototype 2:

More of a proof-of-concept for the final version. I decided to go with something more snake-like (with this video kicking around in the back of my mind:

The first attempt at using paperclips to attach the paper towel roll to the motor was unsuccessful due to the inability – but I was able to prove the movement was possible.


My second iteration on this idea used more reinforcement to keep the tubes bound to the motors – threading them through, using more tape, etc. I strung together two motors and spent a lot of time playing with their velocities, starting positions, and directions until I found something that would work. I discovered during my testing that surface traction was very important for my bot’s movement, which is fitting, given that this happens for actual snakes.

I also modified my code to be able to specify separate forward/backward velocities for each motor (instead of just a single velocity for each)

I was fairly surprised by how complicated it was to attach things to the motor and build a comprehensive motor – there were more “physical” logistics than I expected – how to get around wires, boards, etc – how to actually attach things to the motors in a stable way that would eschew movement, etc.

Final demo: I believe I’ll be able to show it live during section!

Pastebin for final code:

Continue Reading

Locomoting Pom Pom Bots

This week we worked on our second part of the Arduino project: locomoting pom pom bots. Using Arduino hardware and software, we built multiple iterations of our bot to make it move forward using at least 2 servo motors.

My original plan was to do it all at home, so I wrote up a little plan that fell apart completely as my creative pre-work. Here it is:



This is my original idea at home… lol. Total failure and needed to go back to lab.

In my second iteration, I found inspiration from someone’s snake they had sitting on a shelf. I used to servo motors connected to popsicle sticks with a square base. In this iteration, I had my hardware all set and the actual bot was created, but I needed to figure out how to write the code to make the snake move correctly. This was a frustrating process because I’m not the best with writing code, and I actually wrote all of the code instead of taking it from online and hacking it. Each time I changed the amount a motor would rotate, I would mess with different delays and rotation amounts to get the snake to move. At this point, I had the general motion right, but it didn’t move as smoothly as I would have liked.


This is a one-headed snake. It had balance issues, and the angle of the two popsicle sticks that made up the head made it hard to move. 


Here’s a video of it failing in this stage:


In my final iteration, I had to fix some issues with the Arduino software and my snake creation because I had a lot of trouble keeping it balanced and keeping it from breaking. So, in my second iteration, I got the correct rhythm and movement, but I saw my snake fall over and move in ways that made it look fragile. I ended up adding some felt to the front and foam to the back so I could change the amount of grip that each touch point has. This allowed me to make the snake move forward in a better way. Also, I added a popsicle stick on the left side (when looking from the back), and that helped me balance it out.

Here’s a working video:


In conclusion, if I were to go back to this project, I’d love to make my snake more sturdy so I would bring it around. Making it out of a plastic or metal device would make it pretty cool. Also, I would have liked to be able to place the arduino and bread board on the back on the snake so it could slither around without being connected to the computer. Not sure if that possible, but it would be really cool! Overall, I’m glad this project challenged me and showed me how to code with Arduino and work with circuits. It was very informational and exciting to have a final project. After working on last weeks project for 3.5 hours, this took me about 2.5 because I was more focused and comfortable with the software.

Continue Reading

Assignment 7

This week we continued our exploration of Arduino with the focus of creating Pom Bots, which utilize Servos that can rotate 180 degrees. I had done three different bots, with the last one being the final bot.

My first design prototype was the PenguinBot. However, due to lack of the specific colors of material I needed, it ended up looking more like a duck. This used one Servo and didn’t move. Instead, it shuffles (or waddles).

My second prototype was a RacecarBot. I used fluff balls as wheels and popsicles for the main structure. After tinkering with the Arduino code I still could not get it to move. However, I liked the sleek design.

The third prototype was a grass hopper (BotHopper). However, it was very frustrating to get it to move. I shifted pieces around and changed limb sizes to try to find the ideal angles and lengths. After a while I discovered that if I turned it upside down it could move slightly. I considered this a success.

It no longer looked like a grass hopper, so the initial redesign I devised was some sort of monster with pom pom hands. I wrapped a yellow felt around the two Servos and named it MonstaBot. It moves, a little.

Overall the assignment was tough. Linear movement was very conceptually difficult for me to understand (much harder than I thought) and it was a challenge to do that using the Servos, which cannot move in a full circle. If I were to redo this project I would probably try to find a better mechanism so that it moves more fluidly.

Movement code:

  for (pos = 45; pos <= 90; pos += 1) { // goes from 0 degrees to 180 degrees
    // in steps of 1 degree
    myservo1.write(pos);              // tell servo to go to position in variable ‘pos’
    // myservo2.write(pos);
    if (pos < 67)
    delay(10);                       // waits 15ms for the servo to reach the position
  for (pos = 90; pos >= 45; pos -= 1) { // goes from 180 degrees to 0 degrees
    // myservo1.write(pos);              // tell servo to go to position in variable ‘pos’
    if (pos > 67)
    delay(10);                       // waits 15ms for the servo to reach the position
  for (pos = 90; pos >= 45; pos -= 1) { // goes from 180 degrees to 0 degrees
    myservo1.write(pos);              // tell servo to go to position in variable ‘pos’
    // myservo2.write(pos);
    if (pos > 67)
    delay(10);                       // waits 15ms for the servo to reach the position
  for (pos = 45; pos <= 90; pos += 1) { // goes from 0 degrees to 180 degrees
    // in steps of 1 degree
    // myservo1.write(pos);              // tell servo to go to position in variable ‘pos’
    if (pos < 67)
    delay(10);                       // waits 15ms for the servo to reach the position
Continue Reading

Assignment 7: Locomoting Bots

For our second assignment involving Arduinos we were tasked with making a robot capable of moving using two or more 180 degree servos. We started in lab by making a sketch of how we wanted our robot to move.

My initial idea was to have a platform with wheels that had a two segmented arm attached. The arm would have a high friction material on the end that would be used to pull the platform forward by expanding and contracting. I then built the first iteration of my robot in class. I focused on getting the arm right because I figured the wheels would be helpful but not crucial to making the robot move.

I used popsicle sticks to make the frame and the arm. Pipe-cleaners were used on the bottom to decrease friction on the platform and a pencil eraser was used on the end of the arm to increase friction when pushing. I then tackled programming the arm. I found that moving both segments of the arm at the same time was quite complex so I decided to move one section and then the other in both the “expand” and “contract” phases. A video of this prototype can be seen here.

Ultimately this prototype did not move very well, but it did help influence my ideas for the second prototype. If you notice in the video the first iteration did move slightly, just in the opposite direction of what I intended. This led me to the idea of using the arm to push the robot instead of pulling it for the second iteration. I also added a wider section to the end of the arm in order to help it push and used felt instead of pipe-cleaners to reduce friction.

Once I had finished constructing the second prototype I began coding it. I started off by trying to move the upper arm segment through each angle in a range like we had done in lab but I found that setting the position to the end of the range and then waiting made the arm move much quicker and moved the robot a further distance each step. A video of this second prototype can be seen here.

As you can see in the video this method kind of makes my robot “hop” instead of pushing itself but I found it to work pretty reliably. After completing this project I realized how difficult it is to get a robot to move using only 180 degree servos from both a physical and software perspective. If we had used 360 degree servos we could have made a wheel of some sort. That being said it was a fun and challenging engineering problem to only use 180 degree servos. If I were to build a third prototype of this robot I think I would spend a bit more time working on the exact values used for the arm position in order to reduce the rocking that happens when the arm fully extends. I would also look into using some sort of battery instead of the usb cable because I noticed that the cable acted like a leash and didn’t let the robot move freely. 


Continue Reading

Pom bots – Youngheon Lee

For the 2nd week of Arduino assignment, we got to create a pom bot! Our main goal was to make it move forward using 2 or more servos that rotate 180 degrees. During class time, we used codes to make the servos rotate in different pace and see how the delay time can change the motor movement. I searched youtube videos to create a forward moving engine with 180 degree rotation and started to sketch how I want my robot to be. In high school, I was a part of our school’s crew team. So, building upon that experience I designed a one-man canoe that ‘pulls the water’ with two oars. Below is the sketch I made:

I used a gluegun to make the boat and used pom-poms to make a character who’s rowing. I placed the motors on each side between the boat and the pom person. In order to utilize 180 degree servoes, I first attempted to add another motor that will help the boat fly when the oars return, so they don’t drag the boat backwards. However, I couldn’t get the timing through coding and the boat didn’t float nicely enough to stay straight while the oars were getting dragged back. So, I changed my plan to change the angle of the oar and not make it push 180 degrees, but to push only 90 degrees so, it won’t drag the boat backwards when reloading. The plan worked but I had to code two oars differently to make it push the same way. I had to make one servo start from 0 and the other from 180 degrees. From a little help from Duncan, I finished coding. The code is as follows:
/* Sweep
 This example code is in the public domain.
 modified 8 Nov 2013
 by Scott Fitzgerald
Servo myservo1;
Servo myservo2;
int pos1 = 0;  
int pos2 = 180;
void setup() {
void loop() {
  for (pos1 = 0, pos2 = 180; pos1 <= 180, pos2 >= 0; pos1 += 1, pos2 -= 1) {
  for (pos1 = 180, pos2 = 0; pos1 >= 0, pos2 <= 180; pos1 -= 1, pos2 +=1) {
Although the boat didn’t move as smooth as I expected, it moved forward and I think it has it’s own characteristic. I decorated the oars with pipe wire and put eyes on the person! Two servos were wired through to get more support and the pipe is tied in between. I made the wire long enough to circle around the boat because I wanted the boat to move smoother. I could’ve added some more support but I didn’t wanted to glue the servos to my boat. The servos held in well and the robot moved! I really had much fun with this project because it felt like I was solving a riddle (using the 180 degree engine to make the robots move forward). I’m satisfied with my robot and here are the pictures and video of it moving:
Link for the video:
This is before setting the oars straight. These two pictures are right before I plugged the Arduino in the computer to make it move forward.
Continue Reading

Assignment 7: Locomoting Bots

For this week’s assignment, we learned how to use servo on Arduino. The aim of the assignment is to make a moving robot that can move from point A to point B. 

For my first design, I decided to make a dancing man. My motivation in making this robot is to make a robot that can “hype” up any song that’s playing in the background. While the assignment calls for a robot that can move from one point to another, this robot is just waving his hands up in the air. 

Initial design of dancing man

This is fairly easy as the basic cade for the servo is already listed in the example of the Arduino Uno application. I did tinkered with it to make the swerving motion to be between certain angles instead of 180 degrees. I also changed the delay and the degree that changes to change the speed of the motion. By doing this, I will be able to make the robot dance to a certain rhythm. 

Here’s a link to the dancing robot.

For the second part of the assignment, I wanted to make a robot that moves. My inspiration was a snake/worm that moves by contracting and expanding.

I tinkered with the code that I had earlier in the first assignment and tried to make the motor be the joint that allows the popsicle sticks to expand and contracts. I initially had a hard time figuring out how to locate the servo and set the degree of movement on the motor. However, after some frustration and numerous attempts, I finally managed to find an angle that works. I also had to attach a large area of popsicle at the end of my robot to stablize it so that it can stand on its own. 

Robot Snake before decoration

At this stage, the robot moved, but not like how I would like it to move. Instead of moving forward, it is moving at an angle so that it’s moving at an angle (circle). I figured out that some wheels would make the snake move forward, but I did not have them in hand. Thus, I decided to move on with the project. 

Final design

Interestingly, after I decorate my model, my robot is no longer moving in circles. However, it is just rocking back and forth without actually moving anywhere. 

Robot Snake after decoration

Through this project, I realised how hard it is to make the robot move forward without a motor that in 360 degrees or wheels. If I were to reiterate on this project, I would try to find a way to remove the base of the model and make sure that it’s still able to stand on its own. I would probably need another servo to make sure that the snake moves. 

Continue Reading

Arduino Introduction – Grant Johnson

Build Process

The storyboard for my Arduino invention!

For this week, we began working with Arduino’s and attachments, to make cool stuff and little robots. For my invention, I decided to create a fan that turns on when a certain temperature threshold is met, and turns off when that temperature goes back down. You may be thinking, “Wow, this sounds a lot like an A/C unit”. I would agree, but in some buildings and situations, I think it would be convenient to have a more personalizable, small-scale fan to keep the

The hand that would turn on or turn off switches on the extension cord.

area around you cool. I

also think this is something that could help out people that aren’t entirely mobile or have difficulty being mobile by allowing them to cool themselves off without the extra strain of having to get up.

Having some familiarity with Arduino’s definitely made this week’s lessons much easier to follow and understand and allowed me to be aware of the limitations and accessories that come with them. I started out by drawing a storyboard showing how my product would function and the problems it would solve — allowing people to stay cool without having to get up. To make this possible I essentially decided to attach some servos to some ‘hands’ (in my prototype, popsicle sticks), these hands are then connected to the Arduino, which is reading the local temperature on a digital thermometer. When the

temperature threshold is met then the hands move to turn on the extension cord that the fan would be plugged into. When the temperature gets low enough again then it will turn the fan off. The only real challenge I experienced with this project was getting three different accessories to run off the Arduino at the same time. To solve this I simply took the wires and ran them through a breadboard to act as a type of ‘splitter’ for the wires

An excerpt of my code!

running into the power and grounding inputs on the Arduino. I then took the code for sweep and changed it some to work with two different servos running when different actions happen. I also created some simple loops for LEDs connected to Arduino’s during this week, which you can see in the attached video:



This project was a lot of fun and really gave me a lot of room to make a huge variety of

different prototypes that could do any number of things. A lot of what we learned in class really helped me know how to proceed, but it also helped that I had previous knowledge of how to work with Arduino’s (I’ve made a locomating little car). I feel like this assignment definitely helped me think of how to take my previous knowledge and expand it in a really creative way. I also really enjoyed seeing all the examples from Sara on different ways that Arduino’s could be integrated into things such as art experiences.

I really was excited to see the arms of my prototype move when different temperatures

The set-up for my thermometer and Arduino board.

were read from the thermometer, that was a really fun and cool part of the project. It was also interesting seeing all the different things that could be connected to Arduino’s that could be used in future projects! I can see myself coming back to Arduino/buying a kit for myself soon so I can make some more awesome stuff.


Continue Reading

Pom Bots – Grant Johnson

Build Process

A sketch of ideas for motion in my bot!

For this project, we were tasked with something that seemed somewhat monumental at first – making a moving robot using Arduino. Having had some experience with  Arduino in the past, I knew that this was surely possible, but I had actually used wheels attached to 360 degree servos in the past, so using no wheels was a new challenge. This assignment started on the drawing board, thinking about ways that I could create simple and effective movement using a couple motors and some simple objects such as popsicle sticks and tape.

My first ideas for motion kind of both resembled the ways that bugs move in nature — one idea involving a crawling sort of motion and one idea involving a motion of the bot sort of tumbling over itself. When I started to test out ideas in lab this week I realized how much time could be spent trying to tweak different speeds of servo movement and adjusting how things sit. Balance was definitely something that was vital in designing a prototype that wouldn’t simply topple over. Coding movement and adjusting it using the Arduino is fairly simple and easy, so that part didn’t take too much effort beyond modifying the sweep prompt from the Arduino IDE. This kind of movement immediately made sense for this project when I saw how the servos reacted:

Some of my code to make my final robot walk

I started by looking at my idea for a crawling-like motion first, as I figured that might be the easier idea to execute off of.  After putting everything together I quickly realized that I was having a hard time getting the arm to actually pull along all the servos and wiring that was being held on the tail  end of the bot. I also realized that with only one arm making movement for the bot, it made stuff pretty off balance whenever it would rise up, making the whole thing dump over and not be able to move. After seeing this poor performance I decided to look more at things with bipedal (or even more legs) movement. I figured this would be easier to balance and not have the problems that a crawling or spinning motion would have when designed the ways I had initially designed them.

Final Reflection

One thing that really was disappointing with my final design was that I don’t have a way of setting it free from the computer. If I had a small power source to plug it into I would love to see what it could do when introduced into larger environments. I realized through this project that working with movement was a very precise sort of thing — it took a lot of tweaking to get the exact types of movements I was looking for out of my robot. At first, my robot moved incredibly slow, but was actually working so I was excited with that.

I ended up making my robot look somewhat dog-like so I decided I would make it run really fast and kind of skitter like a small dog does. It was crazy how much that personified my robot and made it look  like a chihuahua (to me). After seeing that I decided to make it fully into a chihuahua by adding a cutout picture of my girlfriend’s chihuahua to the face and adding a (small) pipe cleaner as a tail. I really  enjoyed working with Arduino’s again and this and last week’s lessons really helped me expand my ideas of electronics projects I could work on for different specialty things.

One part of this project that was definitely a ton of fun was iterating different ways of moving an object around using the servos and popsicle sticks. There seems to be endless ways of making your robot walk, run, crawl, wiggle, spaz out in different ways and it was really fun and interesting watching that happen each time I uploaded new code. I think I picked a final design that is fairly simple to execute, but works how I wanted it to, so I was happy with that. Getting the chance to design a source of movement that is inspired by something more tangible and real also definitely was a good place of inspiration for this project and I’m glad we took the time to do that in section.

Continue Reading

Arduino 2 : Locomoting Bots

This week, we learned how to use the Servo motors to create simple movement. I really enjoyed the learning experience (although it was quite hard since I am a business student). I initially made a chicken that is flapping its wings. My design was to put one motor on each wing and put the chicken on a popsicle stick for support. The initial sculpting was easy, however dealing with the coding was quite tedious. It was hard for me to make sure that the wings (foam attached to the motor) are moving in different directions to mimic a chicken flapping its wings. After various trials and errors on the code (and a very insightful help from Emillie), I made it work. Below are the finished product and the mechanisms behind the wing.

Here is the link to the video: Flapping Chicken

This reiteration is not correlated to the first prototype because the first robot I made does not really move from place A to B. So I decided to make a new one. My PomPom bot is based on a fish.

I wanted to make this fish

I decided to put the motor on the back to imitate the fish’s tail. I used two popsicle sticks for the structure and attach the two servo motors in the back like depicted in the picture below.

I used three popsicle sticks as the base and attached the servo motors at the back

At first, it was quite difficult to get the right velocity to make sure that it moves. However, after several times of tweaking the code, I finally got it to move as desired. Here is the video link if you want to see how it moves: The Skeleton of the Robot

After getting it to move, I decided to use the craft foam as the fish’s body and add googly eyes to make it more lifelike. The fish is as depicted below:


Used the yellow foam to mimic the fish’s body

I initially used these materials to make the body as light as possible (minimize the strain on the motors). After putting on the foam body and googly eyes, I decided to test to make sure that the robot still runs. Unfortunately, the exterior body seemed too much of a strain for the two motors. Hence the robot just moved in place due to the weight imposed on it. Which made me quite sad 🙁

Here is the video to the finished reiteration: Arduino Fish

If I were to reiterate this project again:

  1. I would add more Servo Motors to use the current designs, or try to minimize the materials used to make the robot lighter
  2. Try to use materials that are lighter such as felt cloth to use as the body



Continue Reading