编辑器设定及监控


有关编辑器的主要函数

监控编辑器计量值

将电机的编辑器端口连接在板子上通过 getEncoderPosition() 函数监控编辑器的计量值。

dcmotor.getEncoderPosition();

#include <PhpocExpansion.h>
#include <Phpoc.h>

byte spcId = 1;

ExpansionDCMotor dcmotor(spcId, 1);

void setup() {
    Serial.begin(9600);
    while(!Serial)
        ;

    Phpoc.begin(PF_LOG_SPI | PF_LOG_NET);
    Expansion.begin();

    Serial.println(dcmotor.getPID());
    Serial.println(dcmotor.getName());

    dcmotor.setPeriod(10000);
    dcmotor.setWidth(3000);
}

void loop() {
    // get the counter value of an encoder
    Serial.println(dcmotor.getEncoderPosition());
    delay(100);
}

监控编辑器输出脉冲周期

请通过利用 getEncoderPeriod() 函数进行编辑器脉冲周期监控。

period = dcmotor.getEncoderPeriod();

此周期单位是微秒(us)。 为了减少编辑器输出脉冲周期监控错误,建议编辑器样品计量设置为高值。

#include <PhpocExpansion.h>
#include <Phpoc.h>

byte spcId = 1;

ExpansionDCMotor dcmotor(spcId, 1);

int width = 3000;

void setup() {
    Serial.begin(9600);
    while(!Serial)
    ;

    Phpoc.begin(PF_LOG_SPI | PF_LOG_NET);
    Expansion.begin();

    Serial.println(dcmotor.getPID());
    Serial.println(dcmotor.getName());

    dcmotor.setEncoderPSR(64);
    dcmotor.setPeriod(10000);
    dcmotor.setWidth(width);
}

void loop() {
    if(width > 1000) {
        width -= 100;
        dcmotor.setWidth(width);
        delay(500);

        Serial.print(width);
        Serial.print("=>");

        // get the period of an encoder's output
        Serial.println(dcmotor.getEncoderPeriod());
    }
    else
        dcmotor.setWidth(0);
}

其他函数

设定编辑器计量方向

利用 setEncoderPolarity() 函数可设定编辑器计量方向。

dcmotor.setEncoderPolarity(pol);

设定编辑器计数值

利用 setEncoderPosition() 函数可初始化或者变更编辑器计量值。

dcmotor.setEncoderPosition(pos);

设定编辑器样品计量

通过 setEncoderPSR() 函数可设定编辑器样品计量。

dcmotor.setEncoderPSR(psr);

编辑器采样计量是在测量编辑器输出脉冲周期时使用的脉冲个数。 采样计量数越多误差将减少。 编辑器的样品计数可设定为1至64。