oklm

Dependents:   RoboClaw TestMyPathFind Robot2016_2-0_STATIC Stressed ... more

Files at this revision

API Documentation at this revision

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);