Skip to content

Commit 94516df

Browse files
committed
пример для нового метода
1 parent c63700e commit 94516df

File tree

1 file changed

+120
-0
lines changed

1 file changed

+120
-0
lines changed
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
/*
2+
* ReadAllRegisters_Serial
3+
*
4+
* Демонстрация вывода значений всей карты памяти от энкодера AS5600 в "Монитор порта"
5+
*
6+
* AS5600 Board
7+
* VCC -> +3V3
8+
* GND -> GND
9+
* DIR -> GND
10+
* SDA -> SDA
11+
* SCL -> SCL
12+
*
13+
* Проверка:
14+
* 1. Подключить энкодер согласно распиновке
15+
* 2. Загрузить скетч в плату
16+
* 3. Открыть "Монитор порта"
17+
* 4. Менять положение магнита
18+
*
19+
* Соответствие массива и регистров:
20+
* reg_map[0] - ZMCO (0x00)
21+
* reg_map[1] - ZPOS_H (0x01)
22+
* reg_map[2] - ZPOS_L (0x02)
23+
* reg_map[3] - MPOS_H (0x03)
24+
* reg_map[4] - MPOS_L (0x04)
25+
* reg_map[5] - MANG_H (0x05)
26+
* reg_map[6] - MANG_L (0x06)
27+
* reg_map[7] - CONF_H (0x07)
28+
* reg_map[8] - CONF_L (0x08)
29+
* reg_map[9] - STATUS (0x0B)
30+
* reg_map[10] - RAW_ANGLE_H (0x0C)
31+
* reg_map[11] - RAW_ANGLE_L (0x0D)
32+
* reg_map[12] - ANGLE_H (0x0E)
33+
* reg_map[13] - ANGLE_L (0x0F)
34+
* reg_map[14] - AGC (0x1A)
35+
* reg_map[15] - MAGNITUDE_H (0x1B)
36+
* reg_map[15] - MAGNITUDE_L (0x1C)
37+
* reg_map[15] - BURN (0xFF)
38+
*
39+
* Документация к датчику:
40+
* https://look.ams-osram.com/m/7059eac7531a86fd/original/AS5600-DS000365.pdf
41+
*
42+
* Контакты:
43+
** GitHub - https://github.com/S-LABc
44+
** Gmail - romansklyar15@gmail.com
45+
*
46+
* Copyright (C) 2024. v1.0 / Скляр Роман S-LAB
47+
*/
48+
49+
// Подключаем библиотеку
50+
#include <AMS_AS5600.h>
51+
52+
const String desc_map[AS5600_REGISTER_MAP_SIZE] = {
53+
"ZMCO (0x00)",
54+
"ZPOS_H (0x01)",
55+
"ZPOS_L (0x02)",
56+
"MPOS_H (0x03)",
57+
"MPOS_L (0x04)",
58+
"MANG_H (0x05)",
59+
"MANG_L (0x06)",
60+
"CONF_H (0x07)",
61+
"CONF_L (0x08)",
62+
"STATUS (0x0B)",
63+
"RAW_ANGLE_H (0x0C)",
64+
"RAW_ANGLE_L (0x0D)",
65+
"ANGLE_H (0x0E)",
66+
"ANGLE_L (0x0F)",
67+
"AGC (0x1A)",
68+
"MAGNITUDE_H (0x1B)",
69+
"MAGNITUDE_L (0x1C)",
70+
"BURN (0xFF)"
71+
};
72+
73+
// Создаем объект Encoder с указанием ссылки на объект Wire
74+
AS5600 Sensor(&Wire);
75+
76+
void setup() {
77+
Serial.begin(115200);
78+
79+
// Запускаем соединение
80+
Sensor.begin();
81+
// Настраиваем шину I2C на 400кГц
82+
Sensor.setClock();
83+
//Можно на друие частоты, но работает не на всех микроконтроллерах
84+
//Sensor.setClock(AS5600_I2C_CLOCK_100KHZ); // 100кГц
85+
//Sensor.setClock(AS5600_I2C_CLOCK_1MHZ); // 1МГц
86+
//Sensor.setClock(725000); // Пользовательское значение 725кГц
87+
88+
// Пока не подключен датчик
89+
while (!Sensor.isConnected()) {
90+
// Выводим сообщение об отсутствии датчика
91+
Serial.println("AS5600 не обнаружен!");
92+
Serial.println("Проверьте I2C шину");
93+
delay(1000);
94+
}
95+
// Выводим сообщение о наличии датчика
96+
Serial.println("AS5600 обнаружен!");
97+
98+
// Пока датчик не обнаружил магнит
99+
while (!Sensor.isMagnetDetected()) {
100+
// Выводим сообщение об отсутствии магнита
101+
Serial.println("Магнит не обнаружен!");
102+
Serial.println("Возможно он слабый");
103+
delay(1000);
104+
}
105+
// Выводим сообщение о наличии магнита
106+
Serial.println("Магнит обнаружен!");
107+
}
108+
109+
void loop() {
110+
byte reg_map[AS5600_REGISTER_MAP_SIZE]; // Не должен быть меньше 18, AS5600_REGISTER_MAP_SIZE = 18
111+
Sensor.getAllRegisters(reg_map, sizeof(reg_map)); // Получаем данные в массив
112+
for (int i = 0; i < sizeof(reg_map); i++) {
113+
Serial.print(desc_map[i] + " "); // Вывод названий регистров в "Монитор порта"
114+
Serial.println(reg_map[i], HEX); // Вывод значений регистров в "Монитор порта"
115+
}
116+
117+
// Разделение и задержка
118+
Serial.println();
119+
delay(500);
120+
}

0 commit comments

Comments
 (0)