3 Simple Ways to
Share What You Make

With Instructables you can share what you make with the world — and tap into an ever-growing community of creative experts.

PhotosPhotos

Share one or more photos of a project, recipe, or whatever you've made, quickly and easily.

Step by StepStep-By-Step

Share your step-by-step photos with text instructions of what you made so others can do it too!

VideoVideo

Share your how-to video. You'll need your embed code from a video site such as YouTube.

Make a Web Connected Robot (for about $500) (using an Arduino and Netbook)

Step 3Software - (Arduino)

Software - (Arduino)
For those new to Arduino check out the great getting started guide at Arduino.cc

First off the software running on the Arduino. It is a very simple program, what the Arduino does is monitor its serial port for data.

What it is looking for is a conversation 5 bytes long.
  • Byte 1-3 (Check bytes "AAA")
  • Byte 4 Command (Tells the arduino what to do) (Supported commands 'F' - Forward, 'B' - Backward, 'L' - Left, 'R' - Right, 'S' - Speed, 'X' - SetSpeedLeft, 'Y' - SetSpeedRight, 'C' - Stop)
  • Byte 5 Parameter - For the move commands this is interpretted as a time interval (Parameter * 100 ms), and for the speed commands a percentage from 0-100

The code is commented thoroughly and given this framework adding additional commands should be easy.

To Download:
  • Download the attached zip file. (05-WEBB-Arduino Code.zip)
  • Unzip to your Arduino Sketch directory. (default: My Documents\Arduino\)
  • Open your arduino development enviroment and upload to your Arduino.

To Copy and Paste
  • Copy the code from below.
  • Paste into the Arduino development environment.
  • Upload to your Arduino.

Appendix: The Arduino Program
/* * Arduino Controlled Web Connected Robot (WEBB) - Serial Host * For more details visit: http://www.oomlout.com/serb  *  * Behaviour: The Arduino listens to its Serial port for a command *            in format 254, 88, 88, (COMMAND), (TIME) *            Supported Commands - 'F' - 70 - Forward *                                 'B' - 66 - Backward *                                 'L' - 76 - Left *                                 'R' - 82 - Right *                                 'S' - 83 - Speed *                                 'X' - 88 - SetSpeedLeft *                                 'Y' - 89 - SetSpeedRight  *                                 'C' - 67 - Stop  *            Supported Times - 0 - 255 (0 to 25.5 Seconds) value * 100 milliseconds  *sp * Wiring: Right Servo Signal - pin 9 *         Left Servo Signal - pin 10  * * License: This work is licenced under the Creative Commons  *          Attribution-Share Alike 3.0 Unported License. To  *          view a copy of this licence, visit  *          http://creativecommons.org/licenses/by-sa/3.0/  *          or send a letter to Creative Commons, 171 Second  *          Street, Suite 300, San Francisco, California 94105,  *          USA. *         */  //-------------------------------------------------------------------------//START OF ARDUINO SERIAL SERVER PREAMBLE//Defining constants corresponding to each command (also the ascii code number) #define FORWARD 70       //F#define BACKWARD 66      //B#define LEFT 76          //L#define RIGHT 82         //R#define SETSPEED 83         //S#define STOP 67          //C#define SETSPEEDLEFT 88  //X#define SETSPEEDRIGHT 89 //Y/*The three check bytes (used to keep the robot from responding to random serial *data) currently "AAA" */#define checkByte1 65   // "A"#define checkByte2 65   // "A"#define checkByte3 65   // "A" //--------------------------------------------------------------------------// START OF ARDUINO CONTROLLED SERVO ROBOT (SERB) PREAMBLE#include <Servo.h>#define LEFTSERVOPIN  10    //The pin the left servo is connected to#define RIGHTSERVOPIN  9    //The pin the right servo is connected toServo leftServo;           Servo rightServo; int leftSpeed = 50;   //holds the speed of the robots leftServo                       //a percentage between 0 and 100int rightSpeed = 100;  //holds the speed of the robots rightServo                        //a percentage between 0 and 100// END OF ARDUINO CONTROLLED SERVO ROBOT (SERB) PREAMBLE//--------------------------------------------------------------------------//Gets everything up and runningvoid setup()                  {  Serial.begin(9600);                //Starts the serial port  serbSetup();                       //sets the state of all neccesary                                      //pins and adds servos to your sketch}//The main program loopvoid loop()                     {  serbPollSerialPort();             //continuously looks to the serial port                                    //if there is data it processes it}//-----------------------------------------------------------------------//START OF ARDUINO SERIAL SERVER ROUTINES/* * Processes commands delivered to the arduino's serial port */void serbPollSerialPort(){  int dta;                              //variable to hold the serial  byte  if ( Serial.available() >= 5) {       //if 5 bytes are in the buffer (length pf a full request)    dta = Serial.read();     if ( dta = checkByte1){                        //Checks for first check byte        dta = Serial.read();        if ( dta = checkByte2){                    //Checks for second check byte          dta = Serial.read();            if ( dta = checkByte3){                //Checks for third check byte               int command = Serial.read();        //Fourth byte is the command               int param1 = Serial.read();         //Fifth byte is param1               interpretCommand(command, param1);  //sends the parsed request to it's handler            }        }      }    }}/* * Takes the command and parameter and passes it to the robot */void interpretCommand(int command, int param1){if       (command == FORWARD){goForward(); delay(param1 * 100); goStop();}   //if forward   else if(command == BACKWARD){goBackward(); delay(param1 * 100); goStop();} //if backwards  else if(command == LEFT){goLeft(); delay(param1 * 100); goStop();}         //if left  else if(command == RIGHT){goRight(); delay(param1 * 100); goStop();}       //if right  else if(command == SETSPEED){setSpeed(param1);}                 //if setting speed  else if(command == STOP){goStop();}                               //if stop  else if(command == SETSPEEDLEFT){setSpeedLeft(param1);}           //if setting left speed  else if(command == SETSPEEDRIGHT){setSpeedRight(param1);}         //if setting right speed  else{                            //if unrecognized command do a little shimmey    goLeft(); delay(150); goRight(); delay(150); goStop();  }}//------------------------------------------------------------------------//START OF ARDUINO CONTROLLED SERVO ROBOT (SERB) ROUTINES/* * sets up your arduino to address your SERB using the included routines*/void serbSetup(){  setSpeed(leftSpeed);  pinMode(LEFTSERVOPIN, OUTPUT);     //sets the left servo signal pin                                      //to output  pinMode(RIGHTSERVOPIN, OUTPUT);    //sets the right servo signal pin                                      //to output  leftServo.attach(LEFTSERVOPIN);    //attaches left servo  rightServo.attach(RIGHTSERVOPIN);  //attaches right servo  goStop();}/* * sets the speed of the robot between 0-(stopped) and 100-(full speed) * NOTE: speed will not change the current speed you must change speed  * then call one of the go methods before changes occur.*/ void setSpeed(int newSpeed){  setSpeedLeft(newSpeed);                 //sets left speed  setSpeedRight(newSpeed);                //sets right speed}/* * Sets the speed of the left wheel */void setSpeedLeft(int newSpeed){  if(newSpeed >= 100) {newSpeed = 100;}     //if speed is greater than 100                                             //make it 100  if(newSpeed <= 0) {newSpeed = 0;}         //if speed is less than 0 make                                             //it 0   leftSpeed = newSpeed * 0.9;               //between 0 and 90}/* * Sets the speed of the right wheel */void setSpeedRight(int newSpeed){    if(newSpeed >= 100) {newSpeed = 100;}     //if speed is greater than 100                                             //make it 100  if(newSpeed <= 0) {newSpeed = 0;}         //if speed is less than 0 make                                             //it 0   rightSpeed = newSpeed * 0.9;               //scales the speed to be }/* * sends the robot forwards */void goForward(){ leftServo.write(90 + leftSpeed);  rightServo.write(90 - rightSpeed);}  /* * sends the robot backwards */void goBackward(){ leftServo.write(90 - leftSpeed); rightServo.write(90 + rightSpeed);}  /* * sends the robot right */void goRight(){ leftServo.write(90 + leftSpeed); rightServo.write(90 + rightSpeed);}/* * sends the robot left */void goLeft(){ leftServo.write(90 - leftSpeed); rightServo.write(90 - rightSpeed);}/* * stops the robot */void goStop(){ leftServo.write(90); rightServo.write(90);}//END OF ARDUINO CONTROLLED SERVO ROBOT (SERB) ROUTINES//---------------------------------------------------------------------------

« Previous StepDownload PDFView All StepsNext Step »
8 comments
Aug 11, 2010. 3:32 AMcrxksa says:
can you give me the code plz i am tring for 2 month still no progress crx.ksa@gmail.com
Sep 8, 2010. 3:36 PMD5quar3 says:
try using http://www.instructables.com/id/how-to-build-MACKRA-a-serb-variant/step7/the-software-arduino/
Mar 30, 2010. 2:32 PMDingleNutZ says:
(removed by author or community request)
Aug 10, 2010. 1:55 AMcrxksa says:
can you give me the code plz i am tring for 2 month still no progress crx.ksa@gmail.com
Jul 26, 2010. 5:39 AMzmaster4 says:
really good tutorial :)
Jun 1, 2010. 11:59 AMameggs says:
 Can someone post the arduino code in an easier form so us NOOBS and use it. I really love this idea and Im already building the chassis now... just need the software.
Feb 14, 2010. 10:05 AMrobotmaker says:
nice job tooo but missing 05-webb arduino.zip
Dec 27, 2009. 2:54 AMnanni78 says:
hello missing file 05-WEBB-Arduino Code.zip? good job

Pro

Get More Out of Instructables

Already have an Account?

close

All Steps Viewing
View all steps of an Instructable on the same page when you're a Pro Member.

Upgrade to Pro today!
408
Followers
14
Author:oomlout