My 2DOF Hexapod

I built a 2DOF Hexapod similar to 2DOF Mini Hex. The body is made using aluminum “U” channel and “C” brackets. I have SSC-32, BASIC Stamp Board of Education, and Arduino UNO boards. Should I use BASIC Stamp or Arduino board with SSC-32?

The choice is yours really - if you want to write code in Basic or Arduino. The 12 Dof SCC-32 has a built-in hexapod sequencer which handles most of the work. There is sample code for each.

Will the BASIC code written for Bot Board II work on BASIC Stamp Board of Education?

It’s written in the same language - just check the pinout. Note that the BoE does not have the same 3-pin output (signal / V / GND) whereas the Bot Board is made specifically with servos in mind.

I connected Arduino Esplora to SSC-32 board. I can use the thumbstick to move my robot. I think that there’s a problem with the Arduino code. If I comment out the else parts of the code, the robot walks correctly. If I don’t comment out the else parts of the code, there is a slight pause in the walking movement. How can I fix the problem?

#include <Esplora.h>
void setup() 
{
  Serial1.begin(9600);
  robotstand01();
}
void loop() 
{
  if(Esplora.readButton(JOYSTICK_UP)==LOW)
  {
    robotwalk01();
    delay(1000);
    robotwalk02();
    delay(1000);
    robotwalk03();
    delay(1000);
    robotwalk04();
    delay(1000);
    robotwalk05();
    delay(1000);
    robotwalk06();
    delay(1000);
  }  
  //else
  //{
  //  robotstand01();
  //  delay(1000);
  //}
  //delay(50);
  if(Esplora.readButton(JOYSTICK_DOWN)==LOW)
  {
    robotwalk01();
    delay(1000);
    robotwalk02();
    delay(1000);
    robotwalk03();
    delay(1000);
    robotwalk04();
    delay(1000);
    robotwalk05();
    delay(1000);
    robotwalk06();
    delay(1000);
  }  
  //else
  //{
  //  robotstand01();
  //  delay(1000);
  //}
  //delay(50);
  if(Esplora.readButton(JOYSTICK_UP)==LOW || Esplora.readButton(JOYSTICK_DOWN)==LOW)
  {
    robotstand01();
    delay(1000);
  }
}
void move(int servo, int position, int time) 
{
  Serial1.print("#");
  Serial1.print(servo);
  Serial1.print(" P");
  Serial1.print(position);
  Serial1.print(" T");
  Serial1.println(time);
}
void robotstand01()
{
  move(0,1500,1000);
  move(1,1500,1000);
  move(2,1500,1000);
  move(3,1500,1000);
  move(4,1500,1000);
  move(5,1500,1000);
  move(16,1500,1000);
  move(17,1500,1000);
  move(18,1500,1000);
  move(19,1500,1000);
  move(20,1500,1000);
  move(21,1500,1000);
}
void robotwalk01()
{
  move(0,1167,1000);
  move(1,1667,1000);
  move(2,1833,1000);
  move(3,1500,1000);
  move(4,1167,1000);
  move(5,1667,1000);
  move(16,1167,1000);
  move(17,1500,1000);
  move(18,1833,1000);
  move(19,1667,1000);
  move(20,1167,1000);
  move(21,1500,1000);
}
void robotwalk02()
{
  move(0,1167,1000);
  move(1,1500,1000);
  move(2,1833,1000);
  move(3,1500,1000);
  move(4,1167,1000);
  move(5,1500,1000);
  move(16,1167,1000);
  move(17,1500,1000);
  move(18,1833,1000);
  move(19,1500,1000);
  move(20,1167,1000);
  move(21,1500,1000);
}
void robotwalk03()
{
  move(0,1167,1000);
  move(1,1500,1000);
  move(2,1833,1000);
  move(3,1667,1000);
  move(4,1167,1000);
  move(5,1500,1000);
  move(16,1167,1000);
  move(17,1667,1000);
  move(18,1833,1000);
  move(19,1500,1000);
  move(20,1167,1000);
  move(21,1667,1000);
}
void robotwalk04()
{
  move(0,1833,1000);
  move(1,1500,1000);
  move(2,1167,1000);
  move(3,1667,1000);
  move(4,1833,1000);
  move(5,1500,1000);
  move(16,1833,1000);
  move(17,1667,1000);
  move(18,1167,1000);
  move(19,1500,1000);
  move(20,1833,1000);
  move(21,1667,1000);
}
void robotwalk05()
{
  move(0,1833,1000);
  move(1,1500,1000);
  move(2,1167,1000);
  move(3,1500,1000);
  move(4,1833,1000);
  move(5,1500,1000);
  move(16,1833,1000);
  move(17,1500,1000);
  move(18,1167,1000);
  move(19,1500,1000);
  move(20,1833,1000);
  move(21,1500,1000);
}
void robotwalk06()
{
  move(0,1833,1000);
  move(1,1667,1000);
  move(2,1167,1000);
  move(3,1500,1000);
  move(4,1833,1000);
  move(5,1667,1000);
  move(16,1833,1000);
  move(17,1500,1000);
  move(18,1167,1000);
  move(19,1667,1000);
  move(20,1833,1000);
  move(21,1500,1000);
}

It seems a lot of the code you commented has the program run subroutines - check that the software you are using can access these properly or if the format needs to change. You can always integrate those lines of code into the program rather than calling subroutines and seeing what happens.

I tried to use BASIC Stamp Board of Education but the BS2 module doesn’t have enough memory. I’m not sure about buying new BASIC Stamp module with more memory or ARC-32 board. I think that the arduino.cc website is down again. I tried to find tutorials on Arduino programming but I can’t find any tutorials that would teach me how to write Arduino code so that subroutines run once instead of in a loop.

I already have 14 Tower Hobbies TS-70 and 10 Futaba S3003 Servos. The TS-70 Servos have output torque of 133 oz-in and the Futaba S3003 Servos have output torque of 57 oz-in. I wish to make 6 3DOF legs like the one in lynxmotion.com/images/html/build82b.htm. Which servo can be used in which joint of the 3DOF leg?

My guess is that if you can use the Futaba servos, you might be able to use them for the Coxa joint (Hip Horizontal). I would try using the Tower Hobby servos in the other joints.

Kurt

Maybe. They’re not that strong. Use 6V.

Alan KM6VV

I think that the Futaba servos aren’t strong enough.