#define BAUDRATE 115200
#define LEFT 0 //左轮
#define RIGHT 1 //右轮
#define FORWARDS true
#define BACKWARDS false
//如果一个变量所在的代码段可能会意外地导致变量值改变那此变量应声明为volatile,
//比如并行多线程等。在arduino中,唯一可能发生这种现象的地方就是和中断有关的代码段,成为中断服务程序。
// 中断函数中使用的变量需要定义为 volatile 类型.
volatile long encoderLeft = 0L;
volatile long encoderRight = 0L;
//初始化编码器
void initEncoders(){
pinMode(2, INPUT);
pinMode(3, INPUT);
//中断函数(中断源,中断触发函数,中断触发信号)
//中断源可选值为0或1,一般分别对应2号和3号引脚
//需要中断的函数名
//LOW(低电平触发)、CHANGE(变化时触发)、RISING(低电平变为高电平触发)、FALLING(高电平变为低电平触发)
attachInterrupt(0, encoderLeftISR, CHANGE);
attachInterrupt(1, encoderRightISR, CHANGE);
}
//中断触发函数
void encoderLeftISR(){
encoderLeft++;
}
//中断触发函数
void encoderRightISR(){
encoderRight++;
}
//读左轮或右轮编码器
long readEncoder(int i) {
long encVal = 0L;
i
arduino 1 读取电机编码器值
最新推荐文章于 2024-10-05 14:48:04 发布
本文详细介绍了如何利用Arduino开发板读取电机编码器的脉冲信号,通过编码器获取电机旋转的精确位置和速度信息。通过实例代码和步骤解析,帮助读者掌握编码器与Arduino的接口及数据处理方法。
摘要由CSDN通过智能技术生成