Nico De Witte
/
i2c_mbed_trex_emulator
TRex motor controller emulator for Vives students
TRex.h@1:a525356bd830, 2014-11-06 (annotated)
- Committer:
- dwini
- Date:
- Thu Nov 06 10:58:59 2014 +0000
- Revision:
- 1:a525356bd830
- Parent:
- 0:17670db9a782
Add basic status readout of the slave. Also add automatic battery voltage decreasing in time.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dwini | 0:17670db9a782 | 1 | #ifndef TREX_HEADER |
dwini | 0:17670db9a782 | 2 | #define TREX_HEADER |
dwini | 0:17670db9a782 | 3 | |
dwini | 1:a525356bd830 | 4 | enum StatusDataPacketFields { |
dwini | 1:a525356bd830 | 5 | STATUS_START = 0, |
dwini | 1:a525356bd830 | 6 | STATUS_ERROR = 1, |
dwini | 1:a525356bd830 | 7 | STATUS_BATTERY_MSB = 2, |
dwini | 1:a525356bd830 | 8 | STATUS_BATTERY_LSB = 3, |
dwini | 1:a525356bd830 | 9 | STATUS_LEFT_MOTOR_CURRENT_MSB = 4, |
dwini | 1:a525356bd830 | 10 | STATUS_LEFT_MOTOR_CURRENT_LSB = 5, |
dwini | 1:a525356bd830 | 11 | STATUS_LEFT_ENCODER_COUNT_MSB = 6, |
dwini | 1:a525356bd830 | 12 | STATUS_LEFT_ENCODER_COUNT_LSB = 7, |
dwini | 1:a525356bd830 | 13 | STATUS_RIGHT_MOTOR_CURRENT_MSB = 8, |
dwini | 1:a525356bd830 | 14 | STATUS_RIGHT_MOTOR_CURRENT_LSB = 9, |
dwini | 1:a525356bd830 | 15 | STATUS_RIGHT_ENCODER_COUNT_MSB = 10, |
dwini | 1:a525356bd830 | 16 | STATUS_RIGHT_ENCODER_COUNT_LSB = 11, |
dwini | 1:a525356bd830 | 17 | STATUS_ACCELEROMETER_X_MSB = 12, |
dwini | 1:a525356bd830 | 18 | STATUS_ACCELEROMETER_X_LSB = 13, |
dwini | 1:a525356bd830 | 19 | STATUS_ACCELEROMETER_Y_MSB = 14, |
dwini | 1:a525356bd830 | 20 | STATUS_ACCELEROMETER_Y_LSB = 15, |
dwini | 1:a525356bd830 | 21 | STATUS_ACCELEROMETER_Z_MSB = 16, |
dwini | 1:a525356bd830 | 22 | STATUS_ACCELEROMETER_Z_LSB = 17, |
dwini | 1:a525356bd830 | 23 | STATUS_IMPACT_X_MSB = 18, |
dwini | 1:a525356bd830 | 24 | STATUS_IMPACT_X_LSB = 19, |
dwini | 1:a525356bd830 | 25 | STATUS_IMPACT_Y_MSB = 20, |
dwini | 1:a525356bd830 | 26 | STATUS_IMPACT_Y_LSB = 21, |
dwini | 1:a525356bd830 | 27 | STATUS_IMPACT_Z_MSB = 22, |
dwini | 1:a525356bd830 | 28 | STATUS_IMPACT_Z_LSB = 23 |
dwini | 1:a525356bd830 | 29 | }; |
dwini | 1:a525356bd830 | 30 | |
dwini | 1:a525356bd830 | 31 | enum ErrorFlag { |
dwini | 1:a525356bd830 | 32 | CLEAR = 0, |
dwini | 1:a525356bd830 | 33 | START_BYTE = 1, |
dwini | 1:a525356bd830 | 34 | PWM_FREQ = 2, |
dwini | 1:a525356bd830 | 35 | SPEED = 4, |
dwini | 1:a525356bd830 | 36 | SERVO = 8, |
dwini | 1:a525356bd830 | 37 | IMPACT = 16, |
dwini | 1:a525356bd830 | 38 | BATTERY = 32, |
dwini | 1:a525356bd830 | 39 | I2C_ADDRESS = 64, |
dwini | 1:a525356bd830 | 40 | I2C_SPEED = 128 |
dwini | 1:a525356bd830 | 41 | }; |
dwini | 1:a525356bd830 | 42 | |
dwini | 0:17670db9a782 | 43 | class TRex { |
dwini | 1:a525356bd830 | 44 | public: |
dwini | 1:a525356bd830 | 45 | unsigned char startbyte; |
dwini | 1:a525356bd830 | 46 | unsigned char errorflags; |
dwini | 1:a525356bd830 | 47 | unsigned short batteryvoltage; |
dwini | 1:a525356bd830 | 48 | unsigned short leftmotorcurrent; |
dwini | 1:a525356bd830 | 49 | unsigned short rightmotorcurrent; |
dwini | 1:a525356bd830 | 50 | unsigned short leftencodercount; |
dwini | 1:a525356bd830 | 51 | unsigned short rightencodercount; |
dwini | 1:a525356bd830 | 52 | unsigned short accelero_x; |
dwini | 1:a525356bd830 | 53 | unsigned short accelero_y; |
dwini | 1:a525356bd830 | 54 | unsigned short accelero_z; |
dwini | 1:a525356bd830 | 55 | unsigned short impact_x; |
dwini | 1:a525356bd830 | 56 | unsigned short impact_y; |
dwini | 1:a525356bd830 | 57 | unsigned short impact_z; |
dwini | 1:a525356bd830 | 58 | |
dwini | 1:a525356bd830 | 59 | /* Number of bytes in the TREX byte array representation */ |
dwini | 1:a525356bd830 | 60 | const static int SIZE_TREX_DATA_PACKET = 24; |
dwini | 0:17670db9a782 | 61 | public: |
dwini | 0:17670db9a782 | 62 | /* Constructor */ |
dwini | 0:17670db9a782 | 63 | TRex(); |
dwini | 1:a525356bd830 | 64 | void getStatusDataPacket(char * buffer); |
dwini | 1:a525356bd830 | 65 | void determineBatteryVoltage(void); |
dwini | 1:a525356bd830 | 66 | |
dwini | 1:a525356bd830 | 67 | private: |
dwini | 1:a525356bd830 | 68 | void toBigEndianByteArray(char * bytes, unsigned short value); |
dwini | 0:17670db9a782 | 69 | }; |
dwini | 0:17670db9a782 | 70 | |
dwini | 0:17670db9a782 | 71 | |
dwini | 0:17670db9a782 | 72 | #endif |