Skip to content

Commit 0b8a88c

Browse files
committed
Create ChangeAddress_Serial.ino
1 parent 7abe9cc commit 0b8a88c

File tree

1 file changed

+91
-0
lines changed

1 file changed

+91
-0
lines changed
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
/*
2+
* ChangeAddress_Serial
3+
*
4+
* Управение адресом на шине I2C датчика AS5600L через "Монитор порта"
5+
*
6+
* Подключение:
7+
* AS5600L Board
8+
* VCC -> +3V3
9+
* GND -> GND
10+
* DIR -> GND
11+
* SDA -> SDA
12+
* SCL -> SCL
13+
*
14+
* Проверка:
15+
* 1. Подключить датчик согласно распиновке
16+
* 2. Загрузить скетч в плату
17+
* 3. Открыть "Монитор порта"
18+
* 4. Менять положение магнита и отправлять символ "c"
19+
*
20+
* Примечания:
21+
* 1. Если используется плата с логическими уровнями 5В, то
22+
* необходимо удалить резистор R1 (0 Ом) с платы датчика,
23+
* а вывод VCC подкючить к 5В питанию!
24+
*
25+
* Документация к датчику:
26+
* https://ams.com/documents/20143/36005/AS5600L_DS000545_3-00.pdf
27+
*
28+
* Больше информации в WiKi:
29+
* https://github.com/S-LABc/AMS-AS5600-Arduino-Library/wiki
30+
*
31+
* Контакты:
32+
** GitHub - https://github.com/S-LABc
33+
** Gmail - romansklyar15@gmail.com
34+
*
35+
* Copyright (C) 2022. v1.0 / Скляр Роман S-LAB
36+
*/
37+
38+
// Подключаем библиотеку
39+
#include <AMS_AS5600L.h>
40+
41+
byte cmd = 0; // Хранит порядковый номер установки адреса датчика
42+
43+
// Создаем объект Sensor с указанием ссылки на объект Wire
44+
AS5600L Sensor(&Wire); // По умолчинию адрес датчика на шине I2C 0x40
45+
// Можно указать адрес сразу в конструкторе, если он известен, например 0x51
46+
//AS5600L Sensor(&Wire, 0x51);
47+
48+
void setup() {
49+
// Настраиваем "Монитор порта"
50+
Serial.begin(115200);
51+
// Запускаем соединение
52+
Sensor.begin();
53+
// Настраиваем шину I2C на 100кГц
54+
// На частоте выше 300кГц не всегда работает
55+
Sensor.setClock(AS5600_I2C_CLOCK_100KHZ);
56+
}
57+
58+
void loop() {
59+
if (Serial.available()) {
60+
if(Serial.read() == 'c') {
61+
if (cmd >= 3) { // Ограничение максимума вариантов
62+
cmd = 0;
63+
}
64+
switch (cmd) { // Меняем адрес
65+
case 0:
66+
Sensor.setAddressI2C(0x51);
67+
break;
68+
case 1:
69+
Sensor.setAddressI2C(0x42);
70+
break;
71+
case 2:
72+
Sensor.setAddressI2C(0x36);
73+
break;
74+
}
75+
cmd++;
76+
}
77+
} else {
78+
Serial.print("Адрес: ");
79+
Serial.print("0x");
80+
byte addr = Sensor.getAddressI2C(); // Получаем адрес датчика
81+
if (addr < 16) { // Для удобства представления. Например, вместо 7, будет 0x07
82+
Serial.print("0");
83+
}
84+
Serial.print(addr, HEX); // Выводим адрес в шестнадцатеричном виде
85+
Serial.print(", Угол: ");
86+
Serial.println(Sensor.getDegreesAngle()); // Выводим угол в градусах
87+
Serial.println();
88+
}
89+
90+
delay(300);
91+
}

0 commit comments

Comments
 (0)