6
6
* Документация к датчику:
7
7
** https://ams.com/documents/20143/36005/AS5600_DS000365_5-00.pdf
8
8
** https://ams.com/en/as5600
9
+ *
10
+ * Больше информации в WiKi:
11
+ * https://github.com/S-LABc/AMS-AS5600-Arduino-Library/wiki
9
12
*
10
13
* Контакты:
11
14
** YouTube - https://www.youtube.com/channel/UCbkE52YKRphgkvQtdwzQbZQ
12
15
** Telegram - https://www.t.me/slabyt
16
+ ** Канал в Telegram - https://www.t.me/t_slab
13
17
** GitHub - https://github.com/S-LABc
14
18
** Gmail - romansklyar15@gmail.com
15
19
*
@@ -29,19 +33,14 @@ AS5600::AS5600(TwoWire *twi) : __wire(twi ? twi : &Wire) {
29
33
/*
30
34
* @brief: использовать интерфейс I2C, вывод МК для контакта DIR датчика, задать положительно направление вращения
31
35
* @param *twi: доступ к методам объекта Wire
32
- * @para pin_dir: вывод микроконтроллер к которому подключен контакт DIR датчика
36
+ * @para pin_dir: контакт микроконтроллера к которому подключен контакт DIR датчика
33
37
* @param def_polar_dir: положительно направление вращения магнита (по/против часовой стрелки)
34
38
*/
35
39
AS5600::AS5600 (TwoWire *twi, int8_t _pin_dir, AS5600DirectionPolarity _def_polar_dir) : __wire(twi ? twi : &Wire) {
36
40
_pin_direction_ = _pin_dir;
37
41
pinMode (_pin_direction_, OUTPUT);
38
42
digitalWrite (_pin_direction_, _def_polar_dir);
39
43
}
40
-
41
- // ########## PRIVATE ##########
42
- /*
43
- *
44
- */
45
44
46
45
// ########## PROTECTED ##########
47
46
/*
@@ -194,6 +193,86 @@ bool AS5600::isConnected(void) {
194
193
__wire->beginTransmission (AS5600_I2C_ADDRESS);
195
194
return (!__wire->endTransmission (AS5600_I2C_ADDRESS)) ? AS5600_DEFAULT_REPORT_OK : AS5600_DEFAULT_REPORT_ERROR;
196
195
}
196
+
197
+ /*
198
+ * @brief: установить новое минимальное значение срабатывания кнопки
199
+ * @param _btn_min_agc: нижняя граница срабатывания кнопки
200
+ */
201
+ void AS5600::setButtonMinAGC (byte _btn_min_agc) {
202
+ _virtual_button.minimum_agc = _btn_min_agc;
203
+ }
204
+ /*
205
+ * @brief: получить минимальное значение срабатывания кнопки
206
+ */
207
+ byte AS5600::getButtonMinAGC (void ) {
208
+ return _virtual_button.minimum_agc ;
209
+ }
210
+ /*
211
+ * @brief: установить новое максимальное значение срабатывания кнопки
212
+ * @param _btn_max_agc: верхняя граница срабатывания кнопки
213
+ */
214
+ void AS5600::setButtonMaxAGC (byte _btn_max_agc) {
215
+ _virtual_button.maximum_agc = _btn_max_agc;
216
+ }
217
+ /*
218
+ * @brief: получить максимальное значение срабатывания кнопки
219
+ */
220
+ byte AS5600::getButtonMaxAGC (void ) {
221
+ return _virtual_button.maximum_agc ;
222
+ }
223
+ /*
224
+ * @brief: установить новое значение отклонения срабатывания кнопки
225
+ * @param _btn_div: значение отклонения
226
+ */
227
+ void AS5600::setButtonDeviation (byte _btn_div) {
228
+ _virtual_button.deviation = _btn_div;
229
+ }
230
+ /*
231
+ * @brief: получить значение отклонения срабатывания кнопки
232
+ */
233
+ byte AS5600::getButtonDeviation (void ) {
234
+ return _virtual_button.deviation ;
235
+ }
236
+ /*
237
+ * @brief: узнать нажата ли виртуальная кнопка
238
+ * @note: метод построен на обработке значения от метода getAutomaticGainControl
239
+ * @return:
240
+ * AS5600_DEFAULT_REPORT_ERROR - кнопка не нажата
241
+ * AS5600_DEFAULT_REPORT_OK - кнопка нажата
242
+ */
243
+ bool AS5600::isButtonPressed (void ) {
244
+ byte agc_value = AS5600::getAutomaticGainControl ();
245
+ if (!_virtual_button.falg_button_state && (agc_value < (_virtual_button.minimum_agc + _virtual_button.deviation ))) {
246
+ _virtual_button.falg_button_state = true ;
247
+ return AS5600_DEFAULT_REPORT_OK;
248
+ }else {
249
+ return AS5600_DEFAULT_REPORT_ERROR;
250
+ }
251
+ }
252
+ /*
253
+ * @brief: узнать отпущена ли виртуальная кнопка
254
+ * @note: метод построен на обработке значения от метода getAutomaticGainControl
255
+ * @return:
256
+ * AS5600_DEFAULT_REPORT_ERROR - кнопка не отпущена
257
+ * AS5600_DEFAULT_REPORT_OK - кнопка отпущена
258
+ */
259
+ bool AS5600::isButtonReleased (void ) {
260
+ byte agc_value = AS5600::getAutomaticGainControl ();
261
+ if (_virtual_button.falg_button_state && (agc_value > (_virtual_button.maximum_agc - _virtual_button.deviation ))) {
262
+ _virtual_button.falg_button_state = false ;
263
+ return AS5600_DEFAULT_REPORT_OK;
264
+ }else {
265
+ return AS5600_DEFAULT_REPORT_ERROR;
266
+ }
267
+ }
268
+ /*
269
+ * @brief: назначить контакт микроконтроллера для управления контактом DIR датчика
270
+ * @param _pin_dir: контакт микроконтроллера к которому подключен контакт DIR датчика
271
+ */
272
+ void AS5600::attachDirectionPin (byte _pin_dir) {
273
+ _pin_direction_ = _pin_dir;
274
+ pinMode (_pin_direction_, OUTPUT);
275
+ }
197
276
/*
198
277
* @brief: установить положительное направление вращения по часовой стрелке или против часовой стрелки
199
278
* @param _direction_polarity: положительное направление вращения
0 commit comments