oklm
Dependents: RoboClaw TestMyPathFind Robot2016_2-0_STATIC Stressed ... more
Revision 9:0fc5514faed9, committed 2016-04-28
- Comitter:
- sype
- Date:
- Thu Apr 28 08:22:13 2016 +0000
- Parent:
- 6:ece8a8cdf4b0
- Child:
- 10:f82bc24e3bd4
- Commit message:
- D?claration de l'adresse dans le constructeur, cette fois on est s?r ?a fonctionne (mais faudrait essayer)
Changed in this revision
RoboClaw.cpp | Show annotated file Show diff for this revision Revisions of this file |
RoboClaw.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/RoboClaw.cpp Sat Feb 06 11:55:10 2016 +0000 +++ b/RoboClaw.cpp Thu Apr 28 08:22:13 2016 +0000 @@ -5,8 +5,9 @@ #define SetDWORDval(arg) (uint8_t)(arg>>24),(uint8_t)(arg>>16),(uint8_t)(arg>>8),(uint8_t)arg #define SetWORDval(arg) (uint8_t)(arg>>8),(uint8_t)arg -RoboClaw::RoboClaw(int baudrate, PinName rx, PinName tx) : _roboclaw(rx, tx){ +RoboClaw::RoboClaw(uint8_t adr, int baudrate, PinName rx, PinName tx) : _roboclaw(rx, tx){ _roboclaw.baud(baudrate); + address = adr; } void RoboClaw::crc_clear(){ @@ -46,7 +47,7 @@ //} while(_roboclaw.getc() != 0xFF); } -void RoboClaw::write_(uint8_t address, uint8_t command, uint8_t data, bool reading, bool crcon){ +void RoboClaw::write_(uint8_t command, uint8_t data, bool reading, bool crcon){ _roboclaw.putc(address); _roboclaw.putc(command); @@ -85,35 +86,35 @@ return(_roboclaw.getc()); } -void RoboClaw::ForwardM1(uint8_t address, int speed){ - write_(address,M1FORWARD,speed,false,false); +void RoboClaw::ForwardM1(int speed){ + write_(M1FORWARD,speed,false,false); } -void RoboClaw::BackwardM1(uint8_t address, int speed){ - write_(address,M1BACKWARD,speed,false,false); +void RoboClaw::BackwardM1(int speed){ + write_(M1BACKWARD,speed,false,false); } -void RoboClaw::ForwardM2(uint8_t address, int speed){ - write_(address,M2FORWARD,speed,false,false); +void RoboClaw::ForwardM2(int speed){ + write_(M2FORWARD,speed,false,false); } -void RoboClaw::BackwardM2(uint8_t address, int speed){ - write_(address,M2BACKWARD,speed,false,false); +void RoboClaw::BackwardM2(int speed){ + write_(M2BACKWARD,speed,false,false); } -void RoboClaw::Forward(uint8_t address, int speed){ - write_(address,MIXEDFORWARD,speed,false,false); +void RoboClaw::Forward(int speed){ + write_(MIXEDFORWARD,speed,false,false); } -void RoboClaw::Backward(uint8_t address, int speed){ - write_(address,MIXEDBACKWARD,speed,false,false); +void RoboClaw::Backward(int speed){ + write_(MIXEDBACKWARD,speed,false,false); } -void RoboClaw::ReadFirm(uint8_t address){ - write_(address,GETVERSION,0x00,true,false); +void RoboClaw::ReadFirm(){ + write_(GETVERSION,0x00,true,false); } -int32_t RoboClaw::ReadEncM1(uint8_t address){ +int32_t RoboClaw::ReadEncM1(){ int32_t enc1; uint16_t read_byte[7]; write_n(2,address,GETM1ENC); @@ -134,10 +135,10 @@ return enc1; } -int32_t RoboClaw::ReadEncM2(uint8_t address){ +int32_t RoboClaw::ReadEncM2(){ int32_t enc2; uint16_t read_byte2[7]; - write_(address,GETM2ENC,0x00, true,false); + write_(GETM2ENC,0x00, true,false); read_byte2[0] = (uint16_t)_roboclaw.getc(); read_byte2[1] = (uint16_t)_roboclaw.getc(); @@ -155,7 +156,7 @@ return enc2; } -int32_t RoboClaw::ReadSpeedM1(uint8_t address){ +int32_t RoboClaw::ReadSpeedM1(){ int32_t speed1; uint16_t read_byte[7]; write_n(2,address,GETM1SPEED); @@ -176,7 +177,7 @@ return speed1; } -int32_t RoboClaw::ReadSpeedM2(uint8_t address){ +int32_t RoboClaw::ReadSpeedM2(){ int32_t speed2; uint16_t read_byte2[7]; write_n(2,address,GETM2SPEED); @@ -197,55 +198,55 @@ return speed2; } -void RoboClaw::ResetEnc(uint8_t address){ +void RoboClaw::ResetEnc(){ write_n(2,address,RESETENC); } -void RoboClaw::SpeedM1(uint8_t address, int32_t speed){ +void RoboClaw::SpeedM1(int32_t speed){ write_n(6,address,M1SPEED,SetDWORDval(speed)); } -void RoboClaw::SpeedM2(uint8_t address, int32_t speed){ +void RoboClaw::SpeedM2(int32_t speed){ write_n(6,address,M2SPEED,SetDWORDval(speed)); } -void RoboClaw::SpeedAccelM1(uint8_t address, int32_t accel, int32_t speed){ +void RoboClaw::SpeedAccelM1(int32_t accel, int32_t speed){ write_n(10,address,M1SPEEDACCEL,SetDWORDval(accel),SetDWORDval(speed)); } -void RoboClaw::SpeedAccelM2(uint8_t address, int32_t accel, int32_t speed){ +void RoboClaw::SpeedAccelM2(int32_t accel, int32_t speed){ write_n(10,address,M2SPEEDACCEL,SetDWORDval(accel),SetDWORDval(speed)); } -void RoboClaw::SpeedAccelM1M2(uint8_t address, int32_t accel1, int32_t speed1, int32_t accel2, int32_t speed2){ +void RoboClaw::SpeedAccelM1M2(int32_t accel1, int32_t speed1, int32_t accel2, int32_t speed2){ write_n(10,address,M2SPEEDACCEL,SetDWORDval(accel1),SetDWORDval(speed1),SetDWORDval(accel2),SetDWORDval(speed2)); } -void RoboClaw::SpeedDistanceM1(uint8_t address, int32_t speed, uint32_t distance, uint8_t buffer){ +void RoboClaw::SpeedDistanceM1(int32_t speed, uint32_t distance, uint8_t buffer){ write_n(11,address,M1SPEEDDIST,SetDWORDval(speed),SetDWORDval(distance),buffer); } -void RoboClaw::SpeedDistanceM2(uint8_t address, int32_t speed, uint32_t distance, uint8_t buffer){ +void RoboClaw::SpeedDistanceM2(int32_t speed, uint32_t distance, uint8_t buffer){ write_n(11,address,M2SPEEDDIST,SetDWORDval(speed),SetDWORDval(distance),buffer); } -void RoboClaw::SpeedAccelDistanceM1(uint8_t address, int32_t accel, int32_t speed, uint32_t distance, uint8_t buffer){ +void RoboClaw::SpeedAccelDistanceM1(int32_t accel, int32_t speed, uint32_t distance, uint8_t buffer){ write_n(15,address,M1SPEEDACCELDIST,SetDWORDval(accel),SetDWORDval(speed),SetDWORDval(distance),buffer); } -void RoboClaw::SpeedAccelDistanceM2(uint8_t address, int32_t accel, int32_t speed, uint32_t distance, uint8_t buffer){ +void RoboClaw::SpeedAccelDistanceM2(int32_t accel, int32_t speed, uint32_t distance, uint8_t buffer){ write_n(15,address,M2SPEEDACCELDIST,SetDWORDval(accel),SetDWORDval(speed),SetDWORDval(distance),buffer); } -void RoboClaw::SpeedAccelDeccelPositionM1(uint8_t address, uint32_t accel, int32_t speed, uint32_t deccel, int32_t position, uint8_t flag){ +void RoboClaw::SpeedAccelDeccelPositionM1(uint32_t accel, int32_t speed, uint32_t deccel, int32_t position, uint8_t flag){ write_n(19,address,M1SPEEDACCELDECCELPOS,SetDWORDval(accel),SetDWORDval(speed),SetDWORDval(deccel),SetDWORDval(position),flag); } -void RoboClaw::SpeedAccelDeccelPositionM2(uint8_t address, uint32_t accel, int32_t speed, uint32_t deccel, int32_t position, uint8_t flag){ +void RoboClaw::SpeedAccelDeccelPositionM2(uint32_t accel, int32_t speed, uint32_t deccel, int32_t position, uint8_t flag){ write_n(19,address,M2SPEEDACCELDECCELPOS,SetDWORDval(accel),SetDWORDval(speed),SetDWORDval(deccel),SetDWORDval(position),flag); } -void RoboClaw::SpeedAccelDeccelPositionM1M2(uint8_t address,uint32_t accel1,uint32_t speed1,uint32_t deccel1, int32_t position1,uint32_t accel2,uint32_t speed2,uint32_t deccel2, int32_t position2,uint8_t flag){ +void RoboClaw::SpeedAccelDeccelPositionM1M2(uint32_t accel1,uint32_t speed1,uint32_t deccel1, int32_t position1,uint32_t accel2,uint32_t speed2,uint32_t deccel2, int32_t position2,uint8_t flag){ write_n(35,address,MIXEDSPEEDACCELDECCELPOS,SetDWORDval(accel1),SetDWORDval(speed1),SetDWORDval(deccel1),SetDWORDval(position1),SetDWORDval(accel2),SetDWORDval(speed2),SetDWORDval(deccel2),SetDWORDval(position2),flag); }
--- a/RoboClaw.h Sat Feb 06 11:55:10 2016 +0000 +++ b/RoboClaw.h Thu Apr 28 08:22:13 2016 +0000 @@ -23,45 +23,45 @@ public: /** Create RoboClaw instance */ - RoboClaw(int baudrate, PinName rx, PinName tx); + RoboClaw(uint8_t adr, int baudrate, PinName rx, PinName tx); /** Forward and Backward functions * @param address address of the device * @param speed speed of the motor (between 0 and 127) * @note Forward and Backward functions */ - void ForwardM1(uint8_t address, int speed); - void BackwardM1(uint8_t address, int speed); - void ForwardM2(uint8_t address, int speed); - void BackwardM2(uint8_t address, int speed); + void ForwardM1(int speed); + void BackwardM1(int speed); + void ForwardM2(int speed); + void BackwardM2(int speed); /** Forward and Backward functions * @param address address of the device * @param speed speed of the motor (between 0 and 127) * @note Forward and Backward functions, it turns the two motors */ - void Forward(uint8_t address, int speed); - void Backward(uint8_t address, int speed); + void Forward(int speed); + void Backward(int speed); /** Read the Firmware * @param address address of the device */ - void ReadFirm(uint8_t address); + void ReadFirm(); /** Read encoder and speed of M1 or M2 * @param address address of the device * @note Read encoder in ticks * @note Read speed in ticks per second */ - int32_t ReadEncM1(uint8_t address); - int32_t ReadEncM2(uint8_t address); - int32_t ReadSpeedM1(uint8_t address); - int32_t ReadSpeedM2(uint8_t address); + int32_t ReadEncM1(); + int32_t ReadEncM2(); + int32_t ReadSpeedM1(); + int32_t ReadSpeedM2(); /** Set both encoders to zero * @param address address of the device */ - void ResetEnc(uint8_t address); + void ResetEnc(); /** Set speed of Motor with different parameter (only in ticks) * @param address address of the device @@ -71,28 +71,29 @@ * @note Set the Speed, Accel and Distance * @note Set the Speed, Accel, Decceleration and Position */ - void SpeedM1(uint8_t address, int32_t speed); - void SpeedM2(uint8_t address, int32_t speed); - void SpeedAccelM1(uint8_t address, int32_t accel, int32_t speed); - void SpeedAccelM2(uint8_t address, int32_t accel, int32_t speed); - void SpeedAccelM1M2(uint8_t address, int32_t accel1, int32_t speed1, int32_t accel2, int32_t speed2); - void SpeedDistanceM1(uint8_t address, int32_t speed, uint32_t distance, uint8_t buffer); - void SpeedDistanceM2(uint8_t address, int32_t speed, uint32_t distance, uint8_t buffer); - void SpeedAccelDistanceM1(uint8_t address, int32_t accel, int32_t speed, uint32_t distance, uint8_t buffer); - void SpeedAccelDistanceM2(uint8_t address, int32_t accel, int32_t speed, uint32_t distance, uint8_t buffer); - void SpeedAccelDeccelPositionM1(uint8_t address, uint32_t accel, int32_t speed, uint32_t deccel, int32_t position, uint8_t flag); - void SpeedAccelDeccelPositionM2(uint8_t address, uint32_t accel, int32_t speed, uint32_t deccel, int32_t position, uint8_t flag); - void SpeedAccelDeccelPositionM1M2(uint8_t address,uint32_t accel1,uint32_t speed1,uint32_t deccel1, int32_t position1,uint32_t accel2,uint32_t speed2,uint32_t deccel2, int32_t position2,uint8_t flag); + void SpeedM1(int32_t speed); + void SpeedM2(int32_t speed); + void SpeedAccelM1(int32_t accel, int32_t speed); + void SpeedAccelM2(int32_t accel, int32_t speed); + void SpeedAccelM1M2(int32_t accel1, int32_t speed1, int32_t accel2, int32_t speed2); + void SpeedDistanceM1(int32_t speed, uint32_t distance, uint8_t buffer); + void SpeedDistanceM2(int32_t speed, uint32_t distance, uint8_t buffer); + void SpeedAccelDistanceM1(int32_t accel, int32_t speed, uint32_t distance, uint8_t buffer); + void SpeedAccelDistanceM2(int32_t accel, int32_t speed, uint32_t distance, uint8_t buffer); + void SpeedAccelDeccelPositionM1(uint32_t accel, int32_t speed, uint32_t deccel, int32_t position, uint8_t flag); + void SpeedAccelDeccelPositionM2(uint32_t accel, int32_t speed, uint32_t deccel, int32_t position, uint8_t flag); + void SpeedAccelDeccelPositionM1M2(uint32_t accel1,uint32_t speed1,uint32_t deccel1, int32_t position1,uint32_t accel2,uint32_t speed2,uint32_t deccel2, int32_t position2,uint8_t flag); private: Serial _roboclaw; uint16_t crc; + uint8_t address; void crc_clear(); void crc_update(uint8_t data); uint16_t crc_get(); void write_n(uint8_t cnt, ...); - void write_(uint8_t address, uint8_t command, uint8_t data, bool reading, bool crcon); + void write_(uint8_t command, uint8_t data, bool reading, bool crcon); uint16_t crc16(uint8_t *packet, int nBytes); uint8_t read_(void);