It has been quite a learning experience showing students how to build robots from scratch. They are engaged and feel empowered. One of my goals is to show my students that with a bare minimum of specifically needed components, like an Arduino board and a couple of continuous servos, you can create a robot with things around your house. As long as you can keep track of where all the wires go you don't even need the breadboard. One could just twist all the wires together, tape four double AA batteries together and there you have it, a robot.
Everything you need to learn is online. One great place to look is on http://www.instructables.com/ where there are a variety of technology projects others share with the world. This is where I learned how to wire our Arduino robots and to program it to move around. This site provided the diagrams, video, and code. What I did was use this knowledge and modified it to accommodate for use in my classroom. There are many other examples that will help me add to the basic robot construct.
One such addition is building a sensor from scratch. They are whiskers placed in front of the robot, like bumpers. They trigger the robot to move in a different direction when bumping into an obstacle. During class we used a wire hanger to make the bumpers and it worked. However, this was not the ideal material. It turns out that twisted wire, five strands of hardware wire, works the best. For some reason this tends to be easier to work with while also having the consistency of keeping its shape. The bumper was attached to the front of the robot and two posts were mounted to the front as contacts. As the whisker bumps into an obstacle it makes contact with one of the posts therefore completing a circuit that sends a message to the Arduino board which in turn tells the servos which direction to turn. This could be a random or a specific direction.
I could go into more detail, but I think it would be much better for those who are interested to go right to the source. Here it is:
I did find an error in the code however. So, i made the correction and attached the .ino file to this discussion.