27 #include <mraa/i2c.hpp>    33 #define    SmartDrive_Motor_ID_1     0x01    34 #define    SmartDrive_Motor_ID_2     0x02    35 #define    SmartDrive_Motor_ID_BOTH  0x03    37 #define    SmartDrive_Dir_Reverse  0x00    38 #define    SmartDrive_Dir_Forward  0x01    40 #define    SmartDrive_Action_Float      0x00  //stop and let the motor coast.    41 #define    SmartDrive_Action_Brake      0x01  //apply brakes, and resist change to tachometer    42 #define    SmartDrive_Action_BrakeHold  0x02  //apply brakes, and restore externally forced change to tachometer    45 #define    SmartDrive_Completion_Wait_For   0x01    46 #define    SmartDrive_Completion_Dont_Wait  0x00    48 #define    SmartDrive_DefaultAddress      0x1b    49 #define    SmartDrive_VOLTAGE_MULTIPLIER  212.7    53 #define    SmartDrive_Speed_Full    90    54 #define    SmartDrive_Speed_Medium  60    55 #define    SmartDrive_Speed_Slow    25    58 #define    SmartDrive_CONTROL_SPEED    0x01    59 #define    SmartDrive_CONTROL_RAMP     0x02    60 #define    SmartDrive_CONTROL_RELATIVE 0x04    61 #define    SmartDrive_CONTROL_TACHO    0x08    62 #define    SmartDrive_CONTROL_BRK      0x10    63 #define    SmartDrive_CONTROL_ON       0x20    64 #define    SmartDrive_CONTROL_TIME     0x40    65 #define    SmartDrive_CONTROL_GO       0x80    67 #define    SmartDrive_COMMAND          0x41    68 #define    SmartDrive_SETPT_M1         0x42    69 #define    SmartDrive_SPEED_M1         0x46    70 #define    SmartDrive_TIME_M1          0x47    71 #define    SmartDrive_CMD_B_M1         0x48    72 #define    SmartDrive_CMD_A_M1         0x49    74 #define    SmartDrive_SETPT_M2         0x4A    75 #define    SmartDrive_SPEED_M2         0x4E    76 #define    SmartDrive_TIME_M2          0x4F    77 #define    SmartDrive_CMD_B_M2         0x50    78 #define    SmartDrive_CMD_A_M2         0x51    81 #define    SmartDrive_POSITION_M1      0x52    82 #define    SmartDrive_POSITION_M2      0x56    83 #define    SmartDrive_STATUS_M1        0x5A    84 #define    SmartDrive_STATUS_M2        0x5B    85 #define    SmartDrive_TASKS_M1         0x5C    86 #define    SmartDrive_TASKS_M2         0x5D    89 #define    SmartDrive_P_Kp             0x5E   //proportional gain-position    90 #define    SmartDrive_P_Ki             0x60   //integral gain-position    91 #define    SmartDrive_P_Kd             0x62   //derivative gain-position    92 #define    SmartDrive_S_Kp             0x64   //proportional gain-speed    93 #define    SmartDrive_S_Ki             0x66   //integral gain-speed    94 #define    SmartDrive_S_Kd             0x68   //derivative gain-speed    95 #define    SmartDrive_PASSCOUNT        0x6A    96 #define    SmartDrive_PASSTOLERANCE    0x6B    98 #define    SmartDrive_CHKSUM    0x6C   101 #define    SmartDrive_BATT_VOLTAGE   0x6E   102 #define    SmartDrive_RESETSTATUS    0x6F   103 #define    SmartDrive_CURRENT_M1     0x70   104 #define    SmartDrive_CURRENT_M2     0x72   117 #define SmartDrive_MOTOR_CONTROL_ON        0x1   118 #define SmartDrive_MOTOR_IS_RAMPING        0x2   119 #define SmartDrive_MOTOR_IS_POWERED        0x4   120 #define SmartDrive_MOTOR_POS_CTRL_ON       0x8   121 #define SmartDrive_MOTOR_IN_BRAKE_MODE     0x10   122 #define SmartDrive_MOTOR_OVERLOADED        0x20   123 #define SmartDrive_MOTOR_IN_TIME_MODE      0x40   124 #define SmartDrive_MOTOR_IS_STALLED        0x80   160     SmartDrive(
int i2c_bus, 
int address = SmartDrive_DefaultAddress);
   185     void Run_Unlimited(
int motor_id, 
int direction, uint8_t speed);
   192     void StopMotor(
int motor_id, 
int next_action );
   203     void Run_Seconds(
int motor_id, 
int direction, uint8_t speed, uint8_t duration, 
bool wait_for_completion, 
int next_action );
   226     void Run_Degrees(
int motor_id, 
int direction, uint8_t speed, uint32_t degrees, 
bool wait_for_completion, 
int next_action);
   237     void Run_Rotations(
int motor_id, 
int direction, uint8_t speed, uint32_t rotations, 
bool wait_for_completion, 
int next_action);
   247     void Run_Tacho(
int motor_id, uint8_t speed, uint32_t tacho_count, 
bool wait_for_completion, 
int next_action);
   270     void SetPerformanceParameters( uint16_t Kp_tacho, uint16_t Ki_tacho, uint16_t Kd_tacho, uint16_t Kp_speed, uint16_t Ki_speed, uint16_t Kd_speed, uint8_t passcount, uint8_t tolerance);
   290     void writeByte(uint8_t addr, uint8_t value);
   291     void writeArray(uint8_t* array, uint8_t len);
   292     uint8_t readByte(uint8_t addr);
   293     uint16_t readInteger(uint8_t addr);
   294     uint32_t readLongSigned(uint8_t addr);
   297     int m_smartdrive_control_address;
   298     mraa::I2c m_i2c_smartdrive_control;
 void Run_Unlimited(int motor_id, int direction, uint8_t speed)
Definition: smartdrive.cxx:134
 
void Run_Rotations(int motor_id, int direction, uint8_t speed, uint32_t rotations, bool wait_for_completion, int next_action)
Definition: smartdrive.cxx:259
 
void Run_Tacho(int motor_id, uint8_t speed, uint32_t tacho_count, bool wait_for_completion, int next_action)
Definition: smartdrive.cxx:300
 
float GetBattVoltage()
Definition: smartdrive.cxx:107
 
SmartDrive(int i2c_bus, int address=SmartDrive_DefaultAddress)
Definition: smartdrive.cxx:37
 
API for the SmartDrive advanced motor controller from OpenElectronis. 
Definition: smartdrive.hpp:152
 
void Run_Degrees(int motor_id, int direction, uint8_t speed, uint32_t degrees, bool wait_for_completion, int next_action)
Definition: smartdrive.cxx:218
 
C++ API wrapper for the bh1749 driver. 
Definition: a110x.hpp:29
 
void SetPerformanceParameters(uint16_t Kp_tacho, uint16_t Ki_tacho, uint16_t Kd_tacho, uint16_t Kp_speed, uint16_t Ki_speed, uint16_t Kd_speed, uint8_t passcount, uint8_t tolerance)
Definition: smartdrive.cxx:357
 
void StopMotor(int motor_id, int next_action)
Definition: smartdrive.cxx:159
 
void Run_Seconds(int motor_id, int direction, uint8_t speed, uint8_t duration, bool wait_for_completion, int next_action)
Definition: smartdrive.cxx:167
 
uint32_t ReadTachometerPosition(int motor_id)
Definition: smartdrive.cxx:120
 
void WaitUntilTimeDone(int motor_id)
Definition: smartdrive.cxx:200
 
void WaitUntilTachoDone(int motor_id)
Definition: smartdrive.cxx:337
 
bool IsTachoDone(int motor_id)
Definition: smartdrive.cxx:344
 
void ReadPerformanceParameters()
Definition: smartdrive.cxx:377
 
bool IsTimeDone(int motor_id)
Definition: smartdrive.cxx:207
 
uint8_t GetMotorStatus(int motor_id)
Definition: smartdrive.cxx:393
 
void PrintMotorStatus(int motor_id)
Definition: smartdrive.cxx:406
 
void command(uint8_t cmd)
Definition: smartdrive.cxx:100