7 .angle_register = 0x0C,
18 .angle_register = 0xFE,
29 .angle_register = 0x03,
46 _conf.
msb_mask = (uint8_t)( (1 << _bits_used_msb) - 1 );
48 uint8_t lsb_used = _bit_resolution - _bits_used_msb;
49 _conf.
lsb_mask = (uint8_t)( (1 << (lsb_used)) - 1 );
50 if (!lsb_right_aligned)
89 return ( getRawCount() / (
float)cpr) *
_2PI ;
98int MagneticSensorI2C::getRawCount() {
101 uint16_t readValue = 0;
108 for (
byte i=0; i < 2; i++) {
109 readArray[i] = wire->read();
125 pinMode(scl_pin, INPUT_PULLUP);
126 pinMode(sda_pin, INPUT_PULLUP);
129 if (digitalRead(scl_pin) == LOW) {
134 if(digitalRead(sda_pin) == LOW) {
136 pinMode(scl_pin, OUTPUT);
137 for (
byte i = 0; i < 16; i++) {
139 digitalWrite(scl_pin, LOW);
140 delayMicroseconds(20);
141 digitalWrite(scl_pin, HIGH);
142 delayMicroseconds(20);
144 pinMode(sda_pin,
INPUT);
145 delayMicroseconds(20);
146 if (digitalRead(sda_pin) == LOW) {
153 pinMode(sda_pin,
INPUT);
154 pinMode(scl_pin,
INPUT);
MagneticSensorI2CConfig_s AS5048_I2C
MagneticSensorI2CConfig_s MT6701_I2C
MagneticSensorI2CConfig_s AS5600_I2C
MagneticSensorI2CConfig_s AS5600_I2C
float getSensorAngle() override
static MagneticSensorI2C AS5600()
MagneticSensorI2C(uint8_t _chip_address, int _bit_resolution, uint8_t _angle_register_msb, int _msb_bits_used, bool lsb_right_aligned=true)
int checkBus(byte sda_pin, byte scl_pin)
void _delay(unsigned long ms)