i2c driver for PiBorg PicoBorgReverse
Dependents: TheBubbleWorks_MicroBorg
PicoBorgReverse.cpp@8:021bfdc07443, 2016-02-09 (annotated)
- Committer:
- waynek
- Date:
- Tue Feb 09 16:14:46 2016 +0000
- Revision:
- 8:021bfdc07443
- Parent:
- 2:cecfacbc2048
remove warnings
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
waynek | 0:f8a6d1cc7fa8 | 1 | /************************************/ |
waynek | 0:f8a6d1cc7fa8 | 2 | /***** PicoBorg Reverse Library *****/ |
waynek | 0:f8a6d1cc7fa8 | 3 | /************************************/ |
waynek | 0:f8a6d1cc7fa8 | 4 | |
waynek | 0:f8a6d1cc7fa8 | 5 | // Includes |
waynek | 0:f8a6d1cc7fa8 | 6 | #include "PicoBorgReverse.h" // The PicoBorg Reverse library constants |
waynek | 0:f8a6d1cc7fa8 | 7 | |
waynek | 0:f8a6d1cc7fa8 | 8 | |
waynek | 0:f8a6d1cc7fa8 | 9 | bool PicoBorgReverse::checkId(void) |
waynek | 0:f8a6d1cc7fa8 | 10 | { |
waynek | 0:f8a6d1cc7fa8 | 11 | i2c_write(PBR_COMMAND_GET_ID); |
waynek | 0:f8a6d1cc7fa8 | 12 | char readBuf[PBR_I2C_MAX_LEN] = {0}; |
waynek | 2:cecfacbc2048 | 13 | int readStatus = i2c_read(readBuf, PBR_I2C_MAX_LEN); |
waynek | 0:f8a6d1cc7fa8 | 14 | return readBuf[1] == PBR_I2C_ID_PICOBORG_REV; |
waynek | 0:f8a6d1cc7fa8 | 15 | } |
waynek | 0:f8a6d1cc7fa8 | 16 | |
waynek | 0:f8a6d1cc7fa8 | 17 | |
waynek | 0:f8a6d1cc7fa8 | 18 | void PicoBorgReverse::resetEpo(void) |
waynek | 0:f8a6d1cc7fa8 | 19 | { |
waynek | 0:f8a6d1cc7fa8 | 20 | i2c_write(PBR_COMMAND_RESET_EPO); |
waynek | 0:f8a6d1cc7fa8 | 21 | } |
waynek | 0:f8a6d1cc7fa8 | 22 | |
waynek | 0:f8a6d1cc7fa8 | 23 | bool PicoBorgReverse::getEpo(void) { |
waynek | 2:cecfacbc2048 | 24 | i2c_write(PBR_COMMAND_GET_EPO); |
waynek | 0:f8a6d1cc7fa8 | 25 | |
waynek | 0:f8a6d1cc7fa8 | 26 | char readBuf[PBR_I2C_MAX_LEN] = {0}; |
waynek | 2:cecfacbc2048 | 27 | int readStatus = i2c_read(readBuf, PBR_I2C_MAX_LEN); |
waynek | 0:f8a6d1cc7fa8 | 28 | |
waynek | 0:f8a6d1cc7fa8 | 29 | return readBuf[1] == PBR_COMMAND_VALUE_ON; |
waynek | 0:f8a6d1cc7fa8 | 30 | } |
waynek | 0:f8a6d1cc7fa8 | 31 | |
waynek | 0:f8a6d1cc7fa8 | 32 | // Sets the system to ignore or use the EPO latch, set to false if you have an EPO switch, true if you do not |
waynek | 0:f8a6d1cc7fa8 | 33 | void PicoBorgReverse::setEpoIgnore(bool state) { |
waynek | 0:f8a6d1cc7fa8 | 34 | i2c_write(PBR_COMMAND_SET_EPO_IGNORE, state ? PBR_COMMAND_VALUE_ON : PBR_COMMAND_VALUE_OFF); |
waynek | 0:f8a6d1cc7fa8 | 35 | } |
waynek | 0:f8a6d1cc7fa8 | 36 | |
waynek | 0:f8a6d1cc7fa8 | 37 | // Reads the system EPO ignore state, False for using the EPO latch, True for ignoring the EPO latch |
waynek | 0:f8a6d1cc7fa8 | 38 | bool PicoBorgReverse::getEpoIgnore(void) { |
waynek | 0:f8a6d1cc7fa8 | 39 | |
waynek | 0:f8a6d1cc7fa8 | 40 | i2c_write(PBR_COMMAND_GET_EPO_IGNORE); |
waynek | 0:f8a6d1cc7fa8 | 41 | |
waynek | 0:f8a6d1cc7fa8 | 42 | char readBuf[PBR_I2C_MAX_LEN] = {0}; |
waynek | 2:cecfacbc2048 | 43 | int readStatus = i2c_read(readBuf, PBR_I2C_MAX_LEN); |
waynek | 0:f8a6d1cc7fa8 | 44 | |
waynek | 0:f8a6d1cc7fa8 | 45 | return readBuf[1] == PBR_COMMAND_VALUE_ON; |
waynek | 0:f8a6d1cc7fa8 | 46 | |
waynek | 0:f8a6d1cc7fa8 | 47 | } |
waynek | 0:f8a6d1cc7fa8 | 48 | |
waynek | 0:f8a6d1cc7fa8 | 49 | |
waynek | 0:f8a6d1cc7fa8 | 50 | bool PicoBorgReverse::getCommsFailsafe(void) |
waynek | 0:f8a6d1cc7fa8 | 51 | { |
waynek | 0:f8a6d1cc7fa8 | 52 | i2c_write(PBR_COMMAND_GET_FAILSAFE); |
waynek | 0:f8a6d1cc7fa8 | 53 | |
waynek | 0:f8a6d1cc7fa8 | 54 | char readBuf[PBR_I2C_MAX_LEN] = {0}; |
waynek | 2:cecfacbc2048 | 55 | int readStatus = i2c_read(readBuf, PBR_I2C_MAX_LEN); |
waynek | 0:f8a6d1cc7fa8 | 56 | |
waynek | 0:f8a6d1cc7fa8 | 57 | return readBuf[1] == PBR_COMMAND_VALUE_ON; |
waynek | 0:f8a6d1cc7fa8 | 58 | } |
waynek | 0:f8a6d1cc7fa8 | 59 | |
waynek | 0:f8a6d1cc7fa8 | 60 | void PicoBorgReverse::setCommsFailsafe(bool state) |
waynek | 0:f8a6d1cc7fa8 | 61 | { |
waynek | 0:f8a6d1cc7fa8 | 62 | i2c_write(PBR_COMMAND_SET_FAILSAFE, state ? PBR_COMMAND_VALUE_ON : PBR_COMMAND_VALUE_OFF); |
waynek | 0:f8a6d1cc7fa8 | 63 | } |
waynek | 0:f8a6d1cc7fa8 | 64 | |
waynek | 0:f8a6d1cc7fa8 | 65 | bool PicoBorgReverse::getDriveFault(void) { |
waynek | 0:f8a6d1cc7fa8 | 66 | i2c_write(PBR_COMMAND_GET_DRIVE_FAULT); |
waynek | 0:f8a6d1cc7fa8 | 67 | |
waynek | 0:f8a6d1cc7fa8 | 68 | char readBuf[PBR_I2C_MAX_LEN] = {0}; |
waynek | 2:cecfacbc2048 | 69 | int readStatus = i2c_read(readBuf, PBR_I2C_MAX_LEN); |
waynek | 0:f8a6d1cc7fa8 | 70 | |
waynek | 0:f8a6d1cc7fa8 | 71 | return readBuf[1] == PBR_COMMAND_VALUE_ON; |
waynek | 0:f8a6d1cc7fa8 | 72 | } |
waynek | 0:f8a6d1cc7fa8 | 73 | |
waynek | 0:f8a6d1cc7fa8 | 74 | |
waynek | 0:f8a6d1cc7fa8 | 75 | |
waynek | 0:f8a6d1cc7fa8 | 76 | // Motor functions |
waynek | 0:f8a6d1cc7fa8 | 77 | |
waynek | 0:f8a6d1cc7fa8 | 78 | void PicoBorgReverse::setMotor1(int power) |
waynek | 0:f8a6d1cc7fa8 | 79 | { |
waynek | 0:f8a6d1cc7fa8 | 80 | char cmd = power < 0 ? PBR_COMMAND_SET_B_REV : PBR_COMMAND_SET_B_FWD; |
waynek | 0:f8a6d1cc7fa8 | 81 | power = power > PBR_PWM_MAX ? PBR_PWM_MAX : abs(power); |
waynek | 0:f8a6d1cc7fa8 | 82 | i2c_write(cmd, (char) power); |
waynek | 0:f8a6d1cc7fa8 | 83 | } |
waynek | 0:f8a6d1cc7fa8 | 84 | |
waynek | 0:f8a6d1cc7fa8 | 85 | void PicoBorgReverse::setMotor2(int power) |
waynek | 0:f8a6d1cc7fa8 | 86 | { |
waynek | 0:f8a6d1cc7fa8 | 87 | char cmd = power < 0 ? PBR_COMMAND_SET_A_REV : PBR_COMMAND_SET_A_FWD; |
waynek | 0:f8a6d1cc7fa8 | 88 | power = power > PBR_PWM_MAX ? PBR_PWM_MAX : abs(power); |
waynek | 0:f8a6d1cc7fa8 | 89 | i2c_write(cmd, (char) power); |
waynek | 0:f8a6d1cc7fa8 | 90 | } |
waynek | 0:f8a6d1cc7fa8 | 91 | |
waynek | 0:f8a6d1cc7fa8 | 92 | |
waynek | 0:f8a6d1cc7fa8 | 93 | void PicoBorgReverse::setLed(bool state) { |
waynek | 0:f8a6d1cc7fa8 | 94 | i2c_write(PBR_COMMAND_SET_LED, state ? PBR_COMMAND_VALUE_ON : PBR_COMMAND_VALUE_OFF); |
waynek | 0:f8a6d1cc7fa8 | 95 | } |
waynek | 0:f8a6d1cc7fa8 | 96 | |
waynek | 0:f8a6d1cc7fa8 | 97 |