//需要添加的头文件
#include "PicoEncoder.h"
// 声明两个实际读取相同引脚的编码器:
// 我们将测量相位大小并补偿差异,而
// 另一个将像相大小完全均匀一样工作
//这样会增加测速功能,事实上这个项目用不到
PicoEncoder encoder;
PicoEncoder non_calibrated_encoder;
// must be consecutive pins on the rp2040
const int encoder_pinA = 5;
const int encoder_pinB = 6;
// keep track of current time
uint period_start_us;
int currentStep;
arduino::String PP;
void setup(void)
{
display.setBusClock(150000000);
display.begin();
display.setFont(u8g2_font_ncenB14_tr);
// use the same pins for both the calibrated and non-calibrated encoders
//初始化
encoder.begin(encoder_pinA);
non_calibrated_encoder.begin(encoder_pinA);
//获取时间点
period_start_us = time_us_32();
display.clearBuffer();
display.drawXBMP(0, 0, 256, 64, myBitmaplogo);
display.sendBuffer();
delay(1000);
}
void loop(void)
{
static int count;
count++;
// 等待下一个采样周期,同时调用“autoCalibratePhases”
// 动态测量相位大小。如果我们有两个编码器(到
// 例如,读取两个电机),我们可以调用两个 autoCalibratePhases
// 这里的方法,同时校准两个编码器
//while ((int)(time_us_32() - period_start_us) < 10000)
encoder.autoCalibratePhases();
//period_start_us += 10000;
encoder.update();
non_calibrated_encoder.update();
currentStep = encoder.step;
PP = arduino::String(currentStep);
display.clearBuffer();
//显示数字
display.setFont(u8g2_font_ncenB16_tr);
display.drawStr(172,40,PP.c_str());
display.sendBuffer();
encoder.update();
non_calibrated_encoder.update();
}