Braccio Troubleshooting

I recently purchased an Arduino Braccio for a research project. For those who don’t know, it is a robotic arm kit that Arduino sells on their website. It includes its own shield to control the 6 servos as well as a power adapter for said shield.

After building the robot, wiring all the motors, powering the shield, and connecting the shield to an Arduino Uno, I loaded an example code from the Braccio library and…nothing happened. The robot didn’t move. The IDE is recognizing the board and is connected to the right COM port. I even went as far as to uninstall the Arduino IDE but nothing changed.

Does anyone have any idea what could be causing this issue and what I can do to fix it? I’m happy to provide more details if necessary.

Why not just provide the details right from the get-go?

Could you post your code, formatted and in code tags, so that someone might go "AhHa!" or not?

I didn’t add it because it is the example that comes with the Braccio library. I included it below.

/*
testBraccio90.ino

testBraccio90 is a setup sketch to check the alignment of all the servo motors
This is the first sketch you need to run on Braccio
When you start this sketch Braccio will be positioned perpendicular to the base
If you can’t see the Braccio in this exact position you need to reallign the servo motors position

Created on 18 Nov 2015
by Andrea Martino

This example is in the public domain.
*/

#include <Braccio.h>
#include <Servo.h>

Servo base;
Servo shoulder;
Servo elbow;
Servo wrist_rot;
Servo wrist_ver;
Servo gripper;

void setup() {
//Initialization functions and set up the initial position for Braccio
//All the servo motors will be positioned in the “safety” position:
//Base (M1):90 degrees
//Shoulder (M2): 45 degrees
//Elbow (M3): 180 degrees
//Wrist vertical (M4): 180 degrees
//Wrist rotation (M5): 90 degrees
//gripper (M6): 10 degrees
Braccio.begin();
}

void loop() {
/*
Step Delay: a milliseconds delay between the movement of each servo. Allowed values from 10 to 30 msec.
M1=base degrees. Allowed values from 0 to 180 degrees
M2=shoulder degrees. Allowed values from 15 to 165 degrees
M3=elbow degrees. Allowed values from 0 to 180 degrees
M4=wrist vertical degrees. Allowed values from 0 to 180 degrees
M5=wrist rotation degrees. Allowed values from 0 to 180 degrees
M6=gripper degrees. Allowed values from 10 to 73 degrees. 10: the toungue is open, 73: the gripper is closed.
*/

// the arm is aligned upwards and the gripper is closed
//(step delay, M1, M2, M3, M4, M5, M6);
Braccio.ServoMovement(20, 90, 90, 90, 90, 90, 73);

}

#include <Braccio.h>
#include <Servo.h>


Servo base;
Servo shoulder;
Servo elbow;
Servo wrist_rot;
Servo wrist_ver;
Servo gripper;

void setup() { 
Serial.begin( Thesamebuadrate as theserialmonitor);
  //Initialization functions and set up the initial position for Braccio
  //All the servo motors will be positioned in the "safety" position:
  //Base (M1):90 degrees
  //Shoulder (M2): 45 degrees
  //Elbow (M3): 180 degrees
  //Wrist vertical (M4): 180 degrees
  //Wrist rotation (M5): 90 degrees
  //gripper (M6): 10 degrees
  Braccio.begin();
Serial.println( "woot woot );


}

void loop() {
  /*
   Step Delay: a milliseconds delay between the movement of each servo.  Allowed values from 10 to 30 msec.
   M1=base degrees. Allowed values from 0 to 180 degrees
   M2=shoulder degrees. Allowed values from 15 to 165 degrees
   M3=elbow degrees. Allowed values from 0 to 180 degrees
   M4=wrist vertical degrees. Allowed values from 0 to 180 degrees
   M5=wrist rotation degrees. Allowed values from 0 to 180 degrees
   M6=gripper degrees. Allowed values from 10 to 73 degrees. 10: the toungue is open, 73: the gripper is closed.
  */
 
  // the arm is aligned upwards  and the gripper is closed
                     //(step delay, M1, M2, M3, M4, M5, M6);
Serial.println( "ackerrbingzing");
  Braccio.ServoMovement(20,         90, 90, 90, 90, 90,  73);
serial.Println( "gleebaplolowheels"); 
   
}

Why not add in a few serial prints to see what’s going on; like I did?

I tried using the serial prints like you suggested. They show up in the serial monitor, but the robot still doesn't respond at all. So I have a bit more confidence that the code is working properly.

What do you have powering the shield?