GoPlus.cpp 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. #include "GoPlus.h"
  2. GoPlus::GoPlus() {}
  3. void GoPlus::begin() { Wire.begin(); }
  4. void GoPlus::Servo_write_angle(uint8_t number, uint8_t angle) {
  5. Wire.beginTransmission(GOPLUS_ADDR);
  6. Wire.write(SERVO_ADDR | number);
  7. Wire.write(angle);
  8. Wire.endTransmission();
  9. }
  10. void GoPlus::Motor_write_speed(uint8_t number, uint8_t trun,
  11. uint8_t motor_speed) {
  12. Wire.beginTransmission(GOPLUS_ADDR);
  13. Wire.write(MOTOR_ADDR | number);
  14. Wire.write(trun);
  15. Wire.write(motor_speed);
  16. Wire.endTransmission();
  17. }
  18. uint16_t GoPlus::hub1_a_read_value(uint8_t reg) {
  19. Wire.beginTransmission(GOPLUS_ADDR);
  20. Wire.write(HUB1_ADDR | reg);
  21. Wire.endTransmission();
  22. uint8_t RegValue_L, RegValue_H;
  23. Wire.requestFrom(GOPLUS_ADDR, 1);
  24. while (Wire.available()) {
  25. RegValue_L = Wire.read();
  26. }
  27. return RegValue_L;
  28. }
  29. uint16_t GoPlus::hub1_d_read_value(uint8_t reg) {
  30. Wire.beginTransmission(GOPLUS_ADDR);
  31. Wire.write(HUB1_ADDR | reg);
  32. Wire.endTransmission();
  33. uint8_t RegValue_L, RegValue_H;
  34. Wire.requestFrom(GOPLUS_ADDR, 2);
  35. while (Wire.available()) {
  36. RegValue_L = Wire.read();
  37. RegValue_H = Wire.read();
  38. }
  39. return (RegValue_H << 8) | RegValue_L;
  40. }
  41. uint16_t GoPlus::hub2_d_read_value(uint8_t reg) {
  42. Wire.beginTransmission(GOPLUS_ADDR);
  43. Wire.write(HUB2_ADDR | reg);
  44. Wire.endTransmission();
  45. uint8_t RegValue_L, RegValue_H;
  46. Wire.requestFrom(GOPLUS_ADDR, 2);
  47. while (Wire.available()) {
  48. RegValue_L = Wire.read();
  49. RegValue_H = Wire.read();
  50. }
  51. return (RegValue_H << 8) | RegValue_L;
  52. }
  53. uint16_t GoPlus::hub2_a_read_value(uint8_t reg) {
  54. Wire.beginTransmission(GOPLUS_ADDR);
  55. Wire.write(HUB2_ADDR | reg);
  56. Wire.endTransmission();
  57. uint8_t RegValue_L, RegValue_H;
  58. Wire.requestFrom(GOPLUS_ADDR, 1);
  59. while (Wire.available()) {
  60. RegValue_L = Wire.read();
  61. }
  62. return RegValue_L;
  63. }
  64. uint16_t GoPlus::hub3_d_read_value(uint8_t reg) {
  65. Wire.beginTransmission(GOPLUS_ADDR);
  66. Wire.write(HUB3_ADDR | reg);
  67. Wire.endTransmission();
  68. uint8_t RegValue_L, RegValue_H;
  69. Wire.requestFrom(GOPLUS_ADDR, 2);
  70. while (Wire.available()) {
  71. RegValue_L = Wire.read();
  72. RegValue_H = Wire.read();
  73. }
  74. return (RegValue_H << 8) | RegValue_L;
  75. }
  76. uint16_t GoPlus::hub3_a_read_value(uint8_t reg) {
  77. Wire.beginTransmission(GOPLUS_ADDR);
  78. Wire.write(HUB3_ADDR | reg);
  79. Wire.endTransmission();
  80. uint8_t RegValue_L, RegValue_H;
  81. Wire.requestFrom(GOPLUS_ADDR, 1);
  82. while (Wire.available()) {
  83. RegValue_L = Wire.read();
  84. }
  85. return RegValue_L;
  86. }
  87. void GoPlus::hub1_wire_value(uint8_t reg, uint16_t value) {
  88. Wire.beginTransmission(GOPLUS_ADDR);
  89. Wire.write(HUB1_ADDR | reg);
  90. Wire.write(value & 0xff);
  91. Wire.endTransmission();
  92. }
  93. void GoPlus::hub2_wire_value(uint8_t reg, uint16_t value) {
  94. Wire.beginTransmission(GOPLUS_ADDR);
  95. Wire.write(HUB2_ADDR | reg);
  96. Wire.write(value & 0xff);
  97. Wire.endTransmission();
  98. }
  99. void GoPlus::hub3_wire_value(uint8_t reg, uint16_t value) {
  100. Wire.beginTransmission(GOPLUS_ADDR);
  101. Wire.write(HUB3_ADDR | reg);
  102. Wire.write(value & 0xff);
  103. Wire.endTransmission();
  104. }