Для работы с датчиком AS5600 вам понадобится скачать библиотеку Seeed_Arduino_AS5600. Там также имеется несколько рабочих примеров, в которых вам необходимо только подключить заголовочный файл VBCoreG4_arduino_system.h и указать пины SDA и SCL, используя функции setSDA и setSCL из Wire.h. Напомним, что пинами SDA и SCL являются PB_7_ALT1 и PC6. Или же можно просто воспользоваться их именами pinSDA и pinSCL, определенными в библиотеке. Ниже приведен код программы, читающей угол по датчику AS5600
#include <Wire.h>
#include <VBCoreG4_arduino_system.h>
//необходимо скачать библиотеку Seeed_Arduino_AS5600-master можно по ссылке https://github.com/Seeed-Studio/Seeed_Arduino_AS5600
//и скопировать ее в libraries
#include <AS5600.h>
AMS_5600 ams5600;
int ang = 0;
void setup()
{
Wire.setSDA(pinSDA); //PB_7_ALT1
Wire.setSCL(pinSCL); //PC6
Serial.begin(115200);
Wire.begin();
Serial.println(">>>>>>>>>>>>>>>>>>>>>>>>>>> ");
if(ams5600.detectMagnet() == 0 ){
while(1){
if(ams5600.detectMagnet() == 1 ){
Serial.print("Current Magnitude: ");
Serial.println(ams5600.getMagnitude());
break;
}
else{
Serial.println("Can not detect magnet");
}
delay(1000);
}
}
}
/*******************************************************
/* Функция: convertRawAngleToDegrees
/* Вход: данные об угле из AMS_5600::getRawAngle
/* Выход: человекочитаемые градусы в виде float
/* Описание: берет необработанный угол и вычисляет
/* его float значение в градусах.
/*******************************************************/
float convertRawAngleToDegrees(word newAngle)
{
/* Исходные данные отображают 0 - 4095 тиков, что составляет 0,087 градуса */
float retVal = newAngle * 0.087;
ang = retVal;
return ang;
}
void loop()
{
Serial.println(String(convertRawAngleToDegrees(ams5600.getRawAngle()),DEC));
}