上面这段代码使用了ESP32PcntEncoder库来读取两个旋转编码器的计数器数值。其中,函数setup()用于初始化串口和编码器;函数loop()用于读取并打印两个编码器的计数器数值。以下是代码的详细解释:
1.首先包含了两个头文件Arduino.h和Esp32PcntEncoder.h,用于编写Arduino程序和使用ESP32PcntEncoder库。
2.在全局变量中创建了一个长度为2的Esp32PcntEncoder数组,用于存储两个编码器。
3.函数setup()用于初始化串口和编码器。在本代码中,首先通过Serial.begin()函数初始化串口,设置
通信速率为115200。
然后通过encoders[0].init()和encoders[1].init()函数分别初始化了两个编码器。
其中,函数init()需要传入三个参数,分别是编码器的ID、引脚A的GPIO编号和引脚B的GPIO编号。
在本代码中,第一个编码器的ID为0,引脚A连接的GPIO为32,引脚B连接的GPIO为33;第二个编码器的ID为1,引脚A连接的GPIO为26,引脚B连接的GPIO为25。
4.函数loop()用于读取并打印两个编码器的计数器数值。
在本代码中,首先通过delay()函数等待10毫秒。
然后通过encoders[0].get
ticks()和encoders[1].getTicks()函数分别读取了两个编码器的计数器数值。
最后通过Serial.printf()函数将这两个数值打印。
三、下载测试
将代码下载进入
开发板,打开串口监视器,查看输出。
四、脉冲/圈计算
为了计算一个脉冲轮子前进的距离,我们可以通过手动将轮子旋转10圈,然后利用前面的公式进行计算。
这里小鱼将轮子转动10圈后得到脉冲数为19419,也就是说当前电机1941.8个脉冲/圈
根据公式可以算出,一个脉冲轮子前进的距离为
接着我们可以利用公式计算速度。
原作者: 小鱼 鱼香ROS