arduino PicoEncoder库驱动编码器

//需要添加的头文件
#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();

}

 

posted @ 2025-01-14 18:52  mcwhirr  阅读(46)  评论(0)    收藏  举报