Skip to content

Commit effb638

Browse files
committed
Пример с виртуальной кнопкой
1 parent 572bd2c commit effb638

File tree

1 file changed

+95
-0
lines changed

1 file changed

+95
-0
lines changed
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
/*
2+
* VirtualButton_Serial
3+
*
4+
* Пример использования программной кнопки у датчика AS5600
5+
*
6+
* Подключение датчика:
7+
* AS5600 Board
8+
* VCC -> +3V3
9+
* GND -> GND
10+
* DIR -> GND
11+
* SDA -> SDA
12+
* SCL -> SCL
13+
*
14+
* Примечания:
15+
* 1. Кнопка реализованная исключительно программным способом
16+
* 2. Для определения состояния кнопки используются значения
17+
* из регистра AGC (метод библиотеки getAutomaticGainControl())
18+
* 3. Для корректной работы необходимо выполнить калибровку
19+
* при помощи CALIBRATION_BUTTON
20+
*
21+
* Проверка:
22+
* 1. Подключить датчик согласно распиновке
23+
* 2. Загрузить скетч в плату
24+
* 3. Открыть "Монитор порта" на скорости 115200
25+
* 4. Приближать/удалять магнит
26+
*
27+
* Документация к датчику:
28+
* https://ams.com/documents/20143/36005/AS5600_DS000365_5-00.pdf
29+
*
30+
* Больше информации в WiKi:
31+
* https://github.com/S-LABc/AMS-AS5600-Arduino-Library/wiki
32+
*
33+
* Контакты:
34+
** YouTube - https://www.youtube.com/channel/UCbkE52YKRphgkvQtdwzQbZQ
35+
** Telegram - https://www.t.me/slabyt
36+
** Канал в Telegram - https://www.t.me/t_slab
37+
** GitHub - https://github.com/S-LABc
38+
** Gmail - romansklyar15@gmail.com
39+
*
40+
* Copyright (C) 2022. v1.0 / Скляр Роман S-LAB
41+
*/
42+
43+
// Подключаем библиотеку
44+
#include <AMS_AS5600.h>
45+
46+
// Раскоментировать для калибровки значений MIN_AGC и MAX_AGC
47+
//#define CALIBRATION_BUTTON
48+
49+
// Значения AGC при перемещении магнита вдоль оси вращения
50+
#define MIN_AGC 99 // Минимальное значение возвращаемое методом getAutomaticGainControl()
51+
#define MAX_AGC 115 // Максимальное значение возвращаемое методом getAutomaticGainControl()
52+
#define DELTA_DIV 5 // Допустимое отклонение минимального и максимального значений
53+
54+
// Создаем объект Sensor с указанием ссылки на объект Wire
55+
AS5600 Sensor(&Wire);
56+
57+
void setup() {
58+
// Настройка и запуск ком порта
59+
Serial.begin(115200);
60+
61+
// Настройка границ срабатывания кнопки и отклонения
62+
Sensor.setButtonMinAGC(MIN_AGC); // getButtonMinAGC()
63+
Sensor.setButtonMaxAGC(MAX_AGC); // getButtonMaxAGC()
64+
Sensor.setButtonDeviation(DELTA_DIV); // getButtonDeviation()
65+
66+
// Запускаем соединение с датчиком
67+
Sensor.begin();
68+
// Настраиваем шину I2C на 400кГц
69+
Sensor.setClock();
70+
}
71+
72+
void loop() {
73+
#ifdef CALIBRATION_BUTTON
74+
handleCalibration();
75+
#else
76+
handleButton();
77+
#endif
78+
}
79+
80+
void handleButton() {
81+
// Если виртуальная кнопка датчика НАЖАТА
82+
if(Sensor.isButtonPressed()) {
83+
Serial.println("Кнопка НАЖАТА");
84+
}
85+
86+
// Если виртуальная кнопка датчика ОТПУЩЕНА
87+
if(Sensor.isButtonReleased()) {
88+
Serial.println("Кнопка ОТПУЩЕНА");
89+
}
90+
}
91+
92+
void handleCalibration() {
93+
Serial.print("AGC ");
94+
Serial.println(Sensor.getAutomaticGainControl());
95+
}

0 commit comments

Comments
 (0)