GoPlus.cpp 3.0 KB

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