其他分享
首页 > 其他分享> > Arduino SimpleFOC库_笔记_001

Arduino SimpleFOC库_笔记_001

作者:互联网

#include <Arduino.h>



#include <SimpleFOC.h>

// 编码器(pin_A, pin_B, PPR)
Encoder  sensor = Encoder(2, 3, 4096);
//通道A和B回调
void doA(){sensor.handleA();}
void doB(){sensor.handleB();}	
	
void setup() {
	Serial.begin(115200);//WWQ
	// 初始化编码器硬件
	sensor.init();
	//硬件中断启用
	sensor.enableInterrupts(doA, doB);
	
	Serial.println("Encoder ready");
	_delay(1000);

}

void loop() {
	Serial.print(sensor.getAngle());
	Serial.print("\t");
	Serial.println(sensor.getVelocity());	
}	

1. Encoder(int encA, int encB , float ppr, int index = 0);

编码器类构造函数:
参数encA编码器A引脚
参数encB编码器B引脚
每次旋转的参数ppr脉冲(cpr=ppr*4)
参数索引管脚编号(可选输入)
2.void enableInterrupts(void (*doA)() = nullptr, void(*doB)() = nullptr, void(*doIndex)() = nullptr); 

编码器中断回调函数

3.传感器类实现的抽象函数

获取当前角度(rad)

float getAngle() override;

获取当前角速度(rad/s)

float getVelocity() override;


*如果需要搜索绝对零,则返回0
*0-无索引编码器
*1-带索引的ecoder

 int needsSearch() override;
// 获取index方向引脚
// 返回 -1 if no index
int Encoder::needsSearch(){
  return hasIndex() && !index_found;
}

//用于确定编码器是否具有索引的专用函数
int Encoder::hasIndex(){
  return index_pin != 0;
}

上传代码到开发板,运行:

 


 

标签:index,编码器,Arduino,int,void,SimpleFOC,Encoder,001,sensor
来源: https://blog.csdn.net/wenqiangwu/article/details/120584926