/************************************** * Arduino example code for MD49 * * * * By James Henderson, 2010. * **************************************/ #define CMD 0x00 #define GET_VER 0x29 #define GET_ENC1 0x23 #define GET_ENC2 0x24 #define GET_VI 0x2c #define GET_ERROR 0x2d #define SET_ACCEL 0x33 #define SET_SPEED1 0x31 #define SET_SPEED2 0x32 byte enc1a, enc1b, enc1c, enc1d = 0; byte enc2a, enc2b, enc2c, enc2d = 0; byte bat_volt, mot1_cur, mot2_cur = 0; byte ver = 0; byte error = 0; void setup() { Serial.begin(38400); } void loop() { Serial.write(CMD); // command byte Serial.write(SET_ACCEL); Serial.write(5); // Set accelleration to 5 Serial.write(CMD); Serial.write(SET_SPEED1); Serial.write(140); // Set motor 1 speed Serial.write(CMD); Serial.write(SET_SPEED2); Serial.write(140); // Set motor 2 speed Serial.write(CMD); Serial.write(GET_VER); // Recieve version back delay(50); if(Serial.available() > 0) { ver = Serial.read(); } Serial.write(CMD); Serial.write(GET_ERROR); // Recieve error byte back delay(50); if(Serial.available() > 0) { error = Serial.read(); } Serial.write(CMD); Serial.write(GET_VI); // Recieve battery volts and both motor currents back delay(50); if(Serial.available() > 2) { bat_volt = Serial.read(); mot1_cur = Serial.read(); mot2_cur = Serial.read(); } Serial.write(CMD); Serial.write(GET_ENC1); // Recieve encoder 1 value delay(50); if(Serial.available() > 3) { enc1a = Serial.read(); enc1b = Serial.read(); enc1c = Serial.read(); enc1d = Serial.read(); } Serial.write(CMD); Serial.write(GET_ENC2); // Recieve encoder 2 value delay(50); if(Serial.available() > 3) { enc2a = Serial.read(); enc2b = Serial.read(); enc2c = Serial.read(); enc2d = Serial.read(); } Serial.println(""); // Display all data to the arduino serial monitor Serial.println(""); Serial.print("Version = "); Serial.println(ver,DEC); Serial.print("Battery = "); Serial.println(bat_volt,DEC); Serial.print("Motor 1 current = "); Serial.println(mot1_cur,DEC); Serial.print("Motor 2 current = "); Serial.println(mot2_cur,DEC); Serial.print("Error byte = "); Serial.println(error,HEX); Serial.print("Encoder 1 = "); Serial.print(enc1a,HEX); Serial.print(enc1b,HEX); Serial.print(enc1c,HEX); Serial.println(enc1d,HEX); Serial.print("Encoder 2 = "); Serial.print(enc2a,HEX); Serial.print(enc2b,HEX); Serial.print(enc2c,HEX); Serial.println(enc2d,HEX); Serial.println(""); Serial.println(""); }