GoPlus2.cpp 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. #include "GoPlus2.h"
  2. GoPlus2::GoPlus2() {}
  3. void GoPlus2::begin() { Wire.begin(); }
  4. void GoPlus2::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 GoPlus2::Servo_write_plusewidth(uint8_t number, uint16_t width) {
  11. Wire.beginTransmission(GOPLUS_ADDR);
  12. Wire.write(PLUSE_ADDR | number);
  13. uint8_t buff_out[2];
  14. buff_out[0] = width >> 8;
  15. buff_out[1] = width & 0xff;
  16. Wire.write(buff_out[0]);
  17. Wire.write(buff_out[1]);
  18. Wire.endTransmission();
  19. }
  20. void GoPlus2::Motor_write_speed(uint8_t number, int motor_speed) {
  21. Wire.beginTransmission(GOPLUS_ADDR);
  22. Wire.write(MOTOR_ADDR | number);
  23. Wire.write(motor_speed);
  24. Wire.endTransmission();
  25. }
  26. uint16_t GoPlus2::hub1_d_read_value(uint8_t reg) {
  27. Wire.beginTransmission(GOPLUS_ADDR);
  28. Wire.write(HUB_READ_DIGITAL | reg);
  29. Wire.endTransmission();
  30. uint8_t RegValue_L;
  31. Wire.requestFrom(GOPLUS_ADDR, 1);
  32. while (Wire.available()) {
  33. RegValue_L = Wire.read();
  34. }
  35. return RegValue_L;
  36. }
  37. uint16_t GoPlus2::hub1_a_read_value(uint8_t reg) {
  38. Wire.beginTransmission(GOPLUS_ADDR);
  39. Wire.write(HUB_READ_ANALOG | reg);
  40. Wire.endTransmission();
  41. uint8_t RegValue_L, RegValue_H;
  42. Wire.requestFrom(GOPLUS_ADDR, 2);
  43. while (Wire.available()) {
  44. RegValue_H = Wire.read();
  45. RegValue_L = Wire.read();
  46. }
  47. return (RegValue_H << 8) | RegValue_L;
  48. }
  49. uint16_t GoPlus2::hub2_a_read_value(uint8_t reg) {
  50. Wire.beginTransmission(GOPLUS_ADDR);
  51. Wire.write(HUB_READ_ANALOG | reg);
  52. Wire.endTransmission();
  53. uint8_t RegValue_L, RegValue_H;
  54. Wire.requestFrom(GOPLUS_ADDR, 2);
  55. while (Wire.available()) {
  56. RegValue_H = Wire.read();
  57. RegValue_L = Wire.read();
  58. }
  59. return (RegValue_H << 8) | RegValue_L;
  60. }
  61. uint16_t GoPlus2::hub2_d_read_value(uint8_t reg) {
  62. Wire.beginTransmission(GOPLUS_ADDR);
  63. Wire.write(HUB_READ_DIGITAL | reg);
  64. Wire.endTransmission();
  65. uint8_t RegValue_L;
  66. Wire.requestFrom(GOPLUS_ADDR, 1);
  67. while (Wire.available()) {
  68. RegValue_L = Wire.read();
  69. }
  70. return RegValue_L;
  71. }
  72. uint16_t GoPlus2::hub3_a_read_value(uint8_t reg) {
  73. Wire.beginTransmission(GOPLUS_ADDR);
  74. Wire.write(HUB_READ_ANALOG | reg);
  75. Wire.endTransmission();
  76. uint8_t RegValue_L, RegValue_H;
  77. Wire.requestFrom(GOPLUS_ADDR, 2);
  78. while (Wire.available()) {
  79. RegValue_H = Wire.read();
  80. RegValue_L = Wire.read();
  81. }
  82. return (RegValue_H << 8) | RegValue_L;
  83. }
  84. uint16_t GoPlus2::hub3_d_read_value(uint8_t reg) {
  85. Wire.beginTransmission(GOPLUS_ADDR);
  86. Wire.write(HUB_READ_DIGITAL | reg);
  87. Wire.endTransmission();
  88. uint8_t RegValue_L;
  89. Wire.requestFrom(GOPLUS_ADDR, 1);
  90. while (Wire.available()) {
  91. RegValue_L = Wire.read();
  92. }
  93. return RegValue_L;
  94. }
  95. void GoPlus2::hub1_wire_value(uint8_t reg, uint8_t value) {
  96. Wire.beginTransmission(GOPLUS_ADDR);
  97. Wire.write(HUB_WIRE | reg);
  98. Wire.write(value & 0xff);
  99. Wire.endTransmission();
  100. }
  101. void GoPlus2::hub2_wire_value(uint8_t reg, uint8_t value) {
  102. Wire.beginTransmission(GOPLUS_ADDR);
  103. Wire.write(HUB_WIRE | reg);
  104. Wire.write(value & 0xff);
  105. Wire.endTransmission();
  106. }
  107. void GoPlus2::hub3_wire_value(uint8_t reg, uint8_t value) {
  108. Wire.beginTransmission(GOPLUS_ADDR);
  109. Wire.write(HUB_WIRE | reg);
  110. Wire.write(value & 0xff);
  111. Wire.endTransmission();
  112. }
  113. void GoPlus2::hub1_set_io(uint8_t reg, uint8_t value) {
  114. Wire.beginTransmission(GOPLUS_ADDR);
  115. Wire.write(HUB_IO_SET | reg);
  116. Wire.write(value & 0xff);
  117. Wire.endTransmission();
  118. }
  119. void GoPlus2::hub2_set_io(uint8_t reg, uint8_t value) {
  120. Wire.beginTransmission(GOPLUS_ADDR);
  121. Wire.write(HUB_IO_SET | reg);
  122. Wire.write(value & 0xff);
  123. Wire.endTransmission();
  124. }
  125. void GoPlus2::hub3_set_io(uint8_t reg, uint8_t value) {
  126. Wire.beginTransmission(GOPLUS_ADDR);
  127. Wire.write(HUB_IO_SET | reg);
  128. Wire.write(value & 0xff);
  129. Wire.endTransmission();
  130. }
  131. uint8_t GoPlus2::hub1_d_o_read_value(uint8_t reg) {
  132. Wire.beginTransmission(GOPLUS_ADDR);
  133. Wire.write(HUB_READ_O_DIGITAL | reg);
  134. Wire.endTransmission();
  135. uint8_t RegValue;
  136. Wire.requestFrom(GOPLUS_ADDR, 1);
  137. while (Wire.available()) {
  138. RegValue = Wire.read();
  139. }
  140. return RegValue;
  141. }
  142. uint8_t GoPlus2::hub2_d_o_read_value(uint8_t reg) {
  143. Wire.beginTransmission(GOPLUS_ADDR);
  144. Wire.write(HUB_READ_O_DIGITAL | reg);
  145. Wire.endTransmission();
  146. uint8_t RegValue;
  147. Wire.requestFrom(GOPLUS_ADDR, 1);
  148. while (Wire.available()) {
  149. RegValue = Wire.read();
  150. }
  151. return RegValue;
  152. }
  153. uint8_t GoPlus2::hub3_d_o_read_value(uint8_t reg) {
  154. Wire.beginTransmission(GOPLUS_ADDR);
  155. Wire.write(HUB_READ_O_DIGITAL | reg);
  156. Wire.endTransmission();
  157. uint8_t RegValue;
  158. Wire.requestFrom(GOPLUS_ADDR, 1);
  159. while (Wire.available()) {
  160. RegValue = Wire.read();
  161. }
  162. return RegValue;
  163. }