0

我正在尝试使用编码器来跟踪机器人上三个轮子的运动,但是一旦任何电机移动机器人“锁定”,它就会停止响应命令,停止打印到串行监视器,并保持旋转它的轮子,直到我把它关掉。除了跟踪一个编码器的代码之外,我删除了所有内容,并尝试用手转动轮子以解决问题,但它仍然被锁定。更奇怪的是,现在它会开始旋转其中一个轮子,即使我已经删除了任何应该让它这样做的代码,即使是错误的。

我使用 Arduino IDE 对 pico 进行编程,因为我不熟悉 python,但是我找不到任何关于使用 pico 中断的信息或故障排除提示,这些信息不假设您使用的是 micropython。

这是我用来尝试找出问题的简化代码。它所要做的就是跟踪编码器执行了多少步,并每秒将其打印到串行监视器上。我尝试移除串行并让它点亮 LED,但这并没有帮助。

int encA = 10;
int encB = 11;
int count = 0;
int timer = 0;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  attachInterrupt(digitalPinToInterrupt(encA),readEncoder,RISING);
  timer = millis();
}

void loop() {
  // put your main code here, to run repeatedly:
  if (timer - millis() > 5000) {
    Serial.println(count);
    timer = millis();
  }
}

void readEncoder() {
  int bVal = digitalRead(encB);
  if (bVal == 0) {
    count--;
  }
  else{
    count++;
  }
}
4

0 回答 0