2020-10-16 14:39:55 +08:00
|
|
|
#include "GoPlus2.h"
|
|
|
|
|
|
2022-08-11 17:01:46 +08:00
|
|
|
GoPlus2::GoPlus2() {
|
|
|
|
|
}
|
2020-10-16 14:39:55 +08:00
|
|
|
|
2022-08-11 17:01:46 +08:00
|
|
|
void GoPlus2::begin() {
|
|
|
|
|
Wire.begin();
|
|
|
|
|
}
|
2020-10-16 14:39:55 +08:00
|
|
|
|
|
|
|
|
void GoPlus2::Servo_write_angle(uint8_t number, uint8_t angle) {
|
|
|
|
|
Wire.beginTransmission(GOPLUS_ADDR);
|
|
|
|
|
Wire.write(SERVO_ADDR | number);
|
|
|
|
|
Wire.write(angle);
|
|
|
|
|
Wire.endTransmission();
|
|
|
|
|
}
|
|
|
|
|
|
2022-07-06 14:21:26 +08:00
|
|
|
void GoPlus2::Servo_write_plusewidth(uint8_t number, uint16_t width) {
|
2020-10-16 14:39:55 +08:00
|
|
|
Wire.beginTransmission(GOPLUS_ADDR);
|
|
|
|
|
Wire.write(PLUSE_ADDR | number);
|
|
|
|
|
uint8_t buff_out[2];
|
|
|
|
|
buff_out[0] = width >> 8;
|
|
|
|
|
buff_out[1] = width & 0xff;
|
|
|
|
|
Wire.write(buff_out[0]);
|
|
|
|
|
Wire.write(buff_out[1]);
|
|
|
|
|
Wire.endTransmission();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void GoPlus2::Motor_write_speed(uint8_t number, int motor_speed) {
|
|
|
|
|
Wire.beginTransmission(GOPLUS_ADDR);
|
|
|
|
|
Wire.write(MOTOR_ADDR | number);
|
|
|
|
|
Wire.write(motor_speed);
|
|
|
|
|
Wire.endTransmission();
|
|
|
|
|
}
|
|
|
|
|
|
2022-07-06 14:21:26 +08:00
|
|
|
uint16_t GoPlus2::hub1_d_read_value(uint8_t reg) {
|
|
|
|
|
Wire.beginTransmission(GOPLUS_ADDR);
|
|
|
|
|
Wire.write(HUB_READ_DIGITAL | reg);
|
|
|
|
|
Wire.endTransmission();
|
2020-10-16 14:39:55 +08:00
|
|
|
|
2022-07-06 14:21:26 +08:00
|
|
|
uint8_t RegValue_L;
|
2020-10-16 14:39:55 +08:00
|
|
|
|
2022-07-06 14:21:26 +08:00
|
|
|
Wire.requestFrom(GOPLUS_ADDR, 1);
|
|
|
|
|
while (Wire.available()) {
|
|
|
|
|
RegValue_L = Wire.read();
|
|
|
|
|
}
|
|
|
|
|
return RegValue_L;
|
2020-10-16 14:39:55 +08:00
|
|
|
}
|
|
|
|
|
|
2022-07-06 14:21:26 +08:00
|
|
|
uint16_t GoPlus2::hub1_a_read_value(uint8_t reg) {
|
|
|
|
|
Wire.beginTransmission(GOPLUS_ADDR);
|
|
|
|
|
Wire.write(HUB_READ_ANALOG | reg);
|
|
|
|
|
Wire.endTransmission();
|
|
|
|
|
|
|
|
|
|
uint8_t RegValue_L, RegValue_H;
|
|
|
|
|
|
|
|
|
|
Wire.requestFrom(GOPLUS_ADDR, 2);
|
|
|
|
|
while (Wire.available()) {
|
|
|
|
|
RegValue_H = Wire.read();
|
|
|
|
|
RegValue_L = Wire.read();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return (RegValue_H << 8) | RegValue_L;
|
2020-10-16 14:39:55 +08:00
|
|
|
}
|
|
|
|
|
|
2022-07-06 14:21:26 +08:00
|
|
|
uint16_t GoPlus2::hub2_a_read_value(uint8_t reg) {
|
|
|
|
|
Wire.beginTransmission(GOPLUS_ADDR);
|
|
|
|
|
Wire.write(HUB_READ_ANALOG | reg);
|
|
|
|
|
Wire.endTransmission();
|
|
|
|
|
|
|
|
|
|
uint8_t RegValue_L, RegValue_H;
|
|
|
|
|
|
|
|
|
|
Wire.requestFrom(GOPLUS_ADDR, 2);
|
|
|
|
|
while (Wire.available()) {
|
|
|
|
|
RegValue_H = Wire.read();
|
|
|
|
|
RegValue_L = Wire.read();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return (RegValue_H << 8) | RegValue_L;
|
2020-10-16 14:39:55 +08:00
|
|
|
}
|
|
|
|
|
|
2022-07-06 14:21:26 +08:00
|
|
|
uint16_t GoPlus2::hub2_d_read_value(uint8_t reg) {
|
|
|
|
|
Wire.beginTransmission(GOPLUS_ADDR);
|
|
|
|
|
Wire.write(HUB_READ_DIGITAL | reg);
|
|
|
|
|
Wire.endTransmission();
|
2020-10-16 14:39:55 +08:00
|
|
|
|
2022-07-06 14:21:26 +08:00
|
|
|
uint8_t RegValue_L;
|
2020-10-16 14:39:55 +08:00
|
|
|
|
2022-07-06 14:21:26 +08:00
|
|
|
Wire.requestFrom(GOPLUS_ADDR, 1);
|
|
|
|
|
while (Wire.available()) {
|
|
|
|
|
RegValue_L = Wire.read();
|
|
|
|
|
}
|
2020-10-16 14:39:55 +08:00
|
|
|
|
2022-07-06 14:21:26 +08:00
|
|
|
return RegValue_L;
|
|
|
|
|
}
|
2020-10-16 14:39:55 +08:00
|
|
|
|
2022-07-06 14:21:26 +08:00
|
|
|
uint16_t GoPlus2::hub3_a_read_value(uint8_t reg) {
|
|
|
|
|
Wire.beginTransmission(GOPLUS_ADDR);
|
|
|
|
|
Wire.write(HUB_READ_ANALOG | reg);
|
|
|
|
|
Wire.endTransmission();
|
2020-10-16 14:39:55 +08:00
|
|
|
|
2022-07-06 14:21:26 +08:00
|
|
|
uint8_t RegValue_L, RegValue_H;
|
2020-10-16 14:39:55 +08:00
|
|
|
|
2022-07-06 14:21:26 +08:00
|
|
|
Wire.requestFrom(GOPLUS_ADDR, 2);
|
|
|
|
|
while (Wire.available()) {
|
|
|
|
|
RegValue_H = Wire.read();
|
|
|
|
|
RegValue_L = Wire.read();
|
|
|
|
|
}
|
2020-10-16 14:39:55 +08:00
|
|
|
|
2022-07-06 14:21:26 +08:00
|
|
|
return (RegValue_H << 8) | RegValue_L;
|
|
|
|
|
}
|
2020-10-16 14:39:55 +08:00
|
|
|
|
2022-07-06 14:21:26 +08:00
|
|
|
uint16_t GoPlus2::hub3_d_read_value(uint8_t reg) {
|
|
|
|
|
Wire.beginTransmission(GOPLUS_ADDR);
|
|
|
|
|
Wire.write(HUB_READ_DIGITAL | reg);
|
|
|
|
|
Wire.endTransmission();
|
|
|
|
|
|
|
|
|
|
uint8_t RegValue_L;
|
|
|
|
|
|
|
|
|
|
Wire.requestFrom(GOPLUS_ADDR, 1);
|
|
|
|
|
while (Wire.available()) {
|
|
|
|
|
RegValue_L = Wire.read();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return RegValue_L;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void GoPlus2::hub1_wire_value(uint8_t reg, uint8_t value) {
|
|
|
|
|
Wire.beginTransmission(GOPLUS_ADDR);
|
|
|
|
|
Wire.write(HUB_WIRE | reg);
|
|
|
|
|
Wire.write(value & 0xff);
|
|
|
|
|
Wire.endTransmission();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void GoPlus2::hub2_wire_value(uint8_t reg, uint8_t value) {
|
|
|
|
|
Wire.beginTransmission(GOPLUS_ADDR);
|
|
|
|
|
Wire.write(HUB_WIRE | reg);
|
|
|
|
|
Wire.write(value & 0xff);
|
|
|
|
|
Wire.endTransmission();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void GoPlus2::hub3_wire_value(uint8_t reg, uint8_t value) {
|
|
|
|
|
Wire.beginTransmission(GOPLUS_ADDR);
|
|
|
|
|
Wire.write(HUB_WIRE | reg);
|
|
|
|
|
Wire.write(value & 0xff);
|
|
|
|
|
Wire.endTransmission();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void GoPlus2::hub1_set_io(uint8_t reg, uint8_t value) {
|
|
|
|
|
Wire.beginTransmission(GOPLUS_ADDR);
|
|
|
|
|
Wire.write(HUB_IO_SET | reg);
|
|
|
|
|
Wire.write(value & 0xff);
|
|
|
|
|
Wire.endTransmission();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void GoPlus2::hub2_set_io(uint8_t reg, uint8_t value) {
|
|
|
|
|
Wire.beginTransmission(GOPLUS_ADDR);
|
|
|
|
|
Wire.write(HUB_IO_SET | reg);
|
|
|
|
|
Wire.write(value & 0xff);
|
|
|
|
|
Wire.endTransmission();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void GoPlus2::hub3_set_io(uint8_t reg, uint8_t value) {
|
|
|
|
|
Wire.beginTransmission(GOPLUS_ADDR);
|
|
|
|
|
Wire.write(HUB_IO_SET | reg);
|
|
|
|
|
Wire.write(value & 0xff);
|
|
|
|
|
Wire.endTransmission();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
uint8_t GoPlus2::hub1_d_o_read_value(uint8_t reg) {
|
|
|
|
|
Wire.beginTransmission(GOPLUS_ADDR);
|
|
|
|
|
Wire.write(HUB_READ_O_DIGITAL | reg);
|
|
|
|
|
Wire.endTransmission();
|
|
|
|
|
|
|
|
|
|
uint8_t RegValue;
|
|
|
|
|
|
|
|
|
|
Wire.requestFrom(GOPLUS_ADDR, 1);
|
|
|
|
|
while (Wire.available()) {
|
|
|
|
|
RegValue = Wire.read();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return RegValue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
uint8_t GoPlus2::hub2_d_o_read_value(uint8_t reg) {
|
|
|
|
|
Wire.beginTransmission(GOPLUS_ADDR);
|
|
|
|
|
Wire.write(HUB_READ_O_DIGITAL | reg);
|
|
|
|
|
Wire.endTransmission();
|
|
|
|
|
|
|
|
|
|
uint8_t RegValue;
|
|
|
|
|
|
|
|
|
|
Wire.requestFrom(GOPLUS_ADDR, 1);
|
|
|
|
|
while (Wire.available()) {
|
|
|
|
|
RegValue = Wire.read();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return RegValue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
uint8_t GoPlus2::hub3_d_o_read_value(uint8_t reg) {
|
|
|
|
|
Wire.beginTransmission(GOPLUS_ADDR);
|
|
|
|
|
Wire.write(HUB_READ_O_DIGITAL | reg);
|
|
|
|
|
Wire.endTransmission();
|
|
|
|
|
|
|
|
|
|
uint8_t RegValue;
|
|
|
|
|
|
|
|
|
|
Wire.requestFrom(GOPLUS_ADDR, 1);
|
|
|
|
|
while (Wire.available()) {
|
|
|
|
|
RegValue = Wire.read();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return RegValue;
|
|
|
|
|
}
|