Skip to content

Commit 887336c

Browse files
committed
добавлено 2 метода
получить угол в градусах, в радианах. исправлен тип данных контакта для DIR
1 parent 5b599f4 commit 887336c

File tree

4 files changed

+28
-9
lines changed

4 files changed

+28
-9
lines changed

keywords.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,8 @@ disableWatchdog KEYWORD2
137137
disableWatchdogVerify KEYWORD2
138138

139139
getRawAngle KEYWORD2
140+
getDegreesAngle KEYWORD2
141+
getRadiansAngle KEYWORD2
140142

141143
getScaledAngle KEYWORD2
142144

library.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name=AS5600
2-
version=1.1
2+
version=1.2
33
author=Roman Sklyar S-LAB <romansklyar15@gmail.com>
44
maintainer=Roman Sklyar <romansklyar15@gmail.com>
55
sentence=API for a 12-Bit programmable contactless potentiometer

src/AMS_AS5600.cpp

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
** GitHub - https://github.com/S-LABc
1414
** Gmail - romansklyar15@gmail.com
1515
*
16-
* Copyright (C) 2022. v1.1 / License MIT / Скляр Роман S-LAB
16+
* Copyright (C) 2022. v1.2 / License MIT / Скляр Роман S-LAB
1717
*/
1818

1919
#include "AMS_AS5600.h"
@@ -32,7 +32,7 @@ AS5600::AS5600(TwoWire *twi) : __wire(twi ? twi : &Wire) {
3232
* @para pin_dir: вывод микроконтроллер к которому подключен контакт DIR датчика
3333
* @param def_polar_dir: положительно направление вращения магнита (по/против часовой стрелки)
3434
*/
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) {
3636
_pin_direction_ = _pin_dir;
3737
pinMode(_pin_direction_, OUTPUT);
3838
digitalWrite(_pin_direction_, _def_polar_dir);
@@ -149,7 +149,6 @@ void AS5600::setClock(void) {
149149
* @brief: отключение шины I2C
150150
*/
151151
void AS5600::end(void) {
152-
// Настройка частоты 400кГц
153152
__wire->end();
154153
}
155154
/*
@@ -206,7 +205,7 @@ bool AS5600::isConnected(void) {
206205
* AS5600_DEFAULT_REPORT_OK - направление изменено
207206
*/
208207
bool AS5600::setDirection(AS5600DirectionPolarity _direction_polarity) {
209-
if(!_pin_direction_) {
208+
if(_pin_direction_ == -1) {
210209
return AS5600_DEFAULT_REPORT_ERROR;
211210
}
212211
digitalWrite(_pin_direction_, _direction_polarity);
@@ -220,7 +219,7 @@ bool AS5600::setDirection(AS5600DirectionPolarity _direction_polarity) {
220219
* AS5600_DEFAULT_REPORT_OK - направление изменено
221220
*/
222221
bool AS5600::reverseDirection(void) {
223-
if(!_pin_direction_) {
222+
if(_pin_direction_ == -1) {
224223
return AS5600_DEFAULT_REPORT_ERROR;
225224
}
226225
digitalWrite(_pin_direction_, !digitalRead(_pin_direction_));
@@ -1078,6 +1077,22 @@ word AS5600::getRawAngle(void) {
10781077
AS5600::AS_SendFirstRegister(AS5600_OUT_REG_RAW_ANGLE_H);
10791078
return AS5600::AS_RequestPairRegisters();
10801079
}
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+
}
10811096
/*
10821097
* @brief: получить масштабированное значение угла из регистра ANGLE(11:0)
10831098
* @note: учитываются значения в регистрах ZPOS, MPOS, MANG

src/AMS_AS5600.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
** GitHub - https://github.com/S-LABc
1414
** Gmail - romansklyar15@gmail.com
1515
*
16-
* Copyright (C) 2022. v1.1 / License MIT / Скляр Роман S-LAB
16+
* Copyright (C) 2022. v1.2 / License MIT / Скляр Роман S-LAB
1717
*/
1818

1919
#pragma once
@@ -176,7 +176,7 @@ enum AS5600BurnReports {
176176
class AS5600 {
177177
private:
178178
TwoWire *__wire; // Объект для использования методов I2C
179-
uint8_t _pin_direction_ = 0; // Контакт микроконтроллера к которому подключен вывод DIR датчика
179+
int8_t _pin_direction_ = -1; // Контакт микроконтроллера к которому подключен вывод DIR датчика
180180

181181
protected:
182182
void AS_SendFirstRegister(uint8_t _reg_addr); // Отправить адрес регистра
@@ -188,7 +188,7 @@ class AS5600 {
188188

189189
public:
190190
AS5600(TwoWire *twi); // Конструктор с использованием только интерфейса I2C
191-
AS5600(TwoWire *twi, uint8_t _pin_dir, AS5600DirectionPolarity _def_polar_dir = AS5600_DIRECTION_POLARITY_CLOCKWISE); // Конструктор с использованием интерфейса I2C, контакта DIR, направлением вращения
191+
AS5600(TwoWire *twi, int8_t _pin_dir, AS5600DirectionPolarity _def_polar_dir = AS5600_DIRECTION_POLARITY_CLOCKWISE); // Конструктор с использованием интерфейса I2C, контакта DIR, направлением вращения
192192

193193
void begin(void); // Вызов Wire.begin()
194194
void setClock(void); // Настройка частоты на 400кГц
@@ -314,6 +314,8 @@ class AS5600 {
314314

315315
/* Output Registers */
316316
word getRawAngle(void); // Получить угол в чистом виде. 0 - 4095
317+
float getDegreesAngle(void); // Получить угол в градусах. 0.00 - 360.00
318+
float getRadiansAngle(void); // Получить угол в радианахю 0.00 - 6.29
317319

318320
word getScaledAngle(void); // Получить масштабированный угол с учетом ZPOS, MPOS или MANG. 0 - 4095
319321

0 commit comments

Comments
 (0)