GoPlus2.cpp 4.8 KB

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