13
13
** GitHub - https://github.com/S-LABc
14
14
** Gmail - romansklyar15@gmail.com
15
15
*
16
- * Copyright (C) 2022. v1.1 / License MIT / Скляр Роман S-LAB
16
+ * Copyright (C) 2022. v1.2 / License MIT / Скляр Роман S-LAB
17
17
*/
18
18
19
19
#include " AMS_AS5600.h"
@@ -32,7 +32,7 @@ AS5600::AS5600(TwoWire *twi) : __wire(twi ? twi : &Wire) {
32
32
* @para pin_dir: вывод микроконтроллер к которому подключен контакт DIR датчика
33
33
* @param def_polar_dir: положительно направление вращения магнита (по/против часовой стрелки)
34
34
*/
35
- AS5600::AS5600 (TwoWire *twi, uint8_t _pin_dir, AS5600DirectionPolarity _def_polar_dir) : __wire(twi ? twi : &Wire) {
35
+ AS5600::AS5600 (TwoWire *twi, int8_t _pin_dir, AS5600DirectionPolarity _def_polar_dir) : __wire(twi ? twi : &Wire) {
36
36
_pin_direction_ = _pin_dir;
37
37
pinMode (_pin_direction_, OUTPUT);
38
38
digitalWrite (_pin_direction_, _def_polar_dir);
@@ -149,7 +149,6 @@ void AS5600::setClock(void) {
149
149
* @brief: отключение шины I2C
150
150
*/
151
151
void AS5600::end (void ) {
152
- // Настройка частоты 400кГц
153
152
__wire->end ();
154
153
}
155
154
/*
@@ -206,7 +205,7 @@ bool AS5600::isConnected(void) {
206
205
* AS5600_DEFAULT_REPORT_OK - направление изменено
207
206
*/
208
207
bool AS5600::setDirection (AS5600DirectionPolarity _direction_polarity) {
209
- if (! _pin_direction_) {
208
+ if (_pin_direction_ == - 1 ) {
210
209
return AS5600_DEFAULT_REPORT_ERROR;
211
210
}
212
211
digitalWrite (_pin_direction_, _direction_polarity);
@@ -220,7 +219,7 @@ bool AS5600::setDirection(AS5600DirectionPolarity _direction_polarity) {
220
219
* AS5600_DEFAULT_REPORT_OK - направление изменено
221
220
*/
222
221
bool AS5600::reverseDirection (void ) {
223
- if (! _pin_direction_) {
222
+ if (_pin_direction_ == - 1 ) {
224
223
return AS5600_DEFAULT_REPORT_ERROR;
225
224
}
226
225
digitalWrite (_pin_direction_, !digitalRead (_pin_direction_));
@@ -1078,6 +1077,22 @@ word AS5600::getRawAngle(void) {
1078
1077
AS5600::AS_SendFirstRegister (AS5600_OUT_REG_RAW_ANGLE_H);
1079
1078
return AS5600::AS_RequestPairRegisters ();
1080
1079
}
1080
+ /*
1081
+ * @brief: получить значение угла в градусах
1082
+ * @return:
1083
+ * 0.00 - 360.00
1084
+ */
1085
+ float AS5600::getDegreesAngle (void ) {
1086
+ return ((float )AS5600::getRawAngle () * 360 ) / 4096 ;
1087
+ }
1088
+ /*
1089
+ * @brief: получить значение угла в радианах
1090
+ * @return:
1091
+ * 0.00 - 6.29
1092
+ */
1093
+ float AS5600::getRadiansAngle (void ) {
1094
+ return (AS5600::getDegreesAngle () * M_PI) / 180 ;
1095
+ }
1081
1096
/*
1082
1097
* @brief: получить масштабированное значение угла из регистра ANGLE(11:0)
1083
1098
* @note: учитываются значения в регистрах ZPOS, MPOS, MANG
0 commit comments