GoPlus2.h 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #ifndef __GOPLUS2_H__
  2. #define __GOPLUS2_H__
  3. #include <Wire.h>
  4. #define GOPLUS_ADDR 0x38 // I2C ADDR
  5. #define SERVO_ADDR 0x00 // SERVO angle register
  6. #define PLUSE_ADDR 0x10 // SERVO pluse width register
  7. #define SERVO_NUM0 0x00
  8. #define SERVO_NUM1 0x01
  9. #define SERVO_NUM2 0x02
  10. #define SERVO_NUM3 0x03
  11. #define SERVO_NUM0_PW 0x00
  12. #define SERVO_NUM1_PW 0x02
  13. #define SERVO_NUM2_PW 0x04
  14. #define SERVO_NUM3_PW 0x06
  15. #define MOTOR_ADDR 0x30 // MOTOR register
  16. #define MOTOR_NUM0 0x00
  17. #define MOTOR_NUM1 0x01
  18. #define HUB1_R_ADDR 0x00
  19. #define HUB2_R_ADDR 0x02
  20. #define HUB3_R_ADDR 0x04
  21. #define HUB1_W_ADDR 0x00
  22. #define HUB2_W_ADDR 0x01
  23. #define HUB3_W_ADDR 0x02
  24. #define HUB_READ_ANALOG 0x40 // HUB ANALOG_INPUT register
  25. #define HUB_READ_DIGITAL 0x50 // HUB DIGITAL_INPUT register
  26. #define HUB_WIRE 0x60 // HUB DIGITAL_OUTPUT register
  27. #define HUB_READ_O_DIGITAL \
  28. 0x70 // HUB DIGITAL_INPUT2(the 'O' pin) register,pull_up
  29. #define HUB1_R_O_ADDR 0x00
  30. #define HUB2_R_O_ADDR 0x01
  31. #define HUB3_R_O_ADDR 0x02
  32. #define HUB_IO_SET \
  33. 0x80 // HUB SET INPUT(1) OR OUTPUT(0) mode (OUTPUT by default)
  34. class GoPlus2 {
  35. public:
  36. GoPlus2();
  37. void begin();
  38. void Servo_write_angle(uint8_t number, uint8_t angle);
  39. void Servo_write_plusewidth(uint8_t number, uint16_t width);
  40. void Motor_write_speed(uint8_t number, int motor_speed);
  41. uint16_t hub1_a_read_value(uint8_t reg);
  42. uint16_t hub1_d_read_value(uint8_t reg);
  43. uint16_t hub2_d_read_value(uint8_t reg);
  44. uint16_t hub3_d_read_value(uint8_t reg);
  45. uint16_t hub2_a_read_value(uint8_t reg);
  46. uint16_t hub3_a_read_value(uint8_t reg);
  47. void hub1_wire_value(uint8_t reg, uint8_t value);
  48. void hub2_wire_value(uint8_t reg, uint8_t value);
  49. void hub3_wire_value(uint8_t reg, uint8_t value);
  50. void hub1_set_io(uint8_t reg, uint8_t value);
  51. void hub2_set_io(uint8_t reg, uint8_t value);
  52. void hub3_set_io(uint8_t reg, uint8_t value);
  53. uint8_t hub1_d_o_read_value(uint8_t reg);
  54. uint8_t hub2_d_o_read_value(uint8_t reg);
  55. uint8_t hub3_d_o_read_value(uint8_t reg);
  56. };
  57. #endif