程序没有进入子程序?

Program not entering sub-routine?

我是 arduino/robotics 的新手,写了一些简单的代码,应该使用中断来测量车轮上的编码器刻度,并在达到某个值(设定距离)后停止,但它似乎不是增加编码器值,因此车轮永远不会停止。有人可以帮我吗? 代码:

const int pwm1 = 9 ;  //initializing pin 2 as pwm
const int in1 = 8 ;
const int in2 = 12 ;
const int pwm2 = 10 ;  //initializing pin 2 as pwm
const int in3 = 11 ;
const int in4 = 13 ;
const int e1 = 2 ;
const int e2 = 3 ;

const int tickGoal = 90;
volatile int encoderValue= 0; 

void isrFunction() {
  encoderValue++ ;
}

void setup() {
pinMode(in1,OUTPUT);
pinMode(in2,OUTPUT);
pinMode(in3,OUTPUT);
pinMode(in4,OUTPUT);
pinMode(pwm1,OUTPUT);
pinMode(pwm2,OUTPUT);
pinMode(e1, INPUT);
pinMode(e2, INPUT);
attachInterrupt(digitalPinToInterrupt(e1), isrFunction, CHANGE);
}

void loop() {
  if (encoderValue < tickGoal) {
    digitalWrite(in1, LOW);
    digitalWrite(in2, HIGH);
    analogWrite(pwm1, 255);
    digitalWrite(in3, LOW);
    digitalWrite(in4, HIGH);
    analogWrite(pwm2, 255);
  } else {
    digitalWrite(in1, LOW);
    digitalWrite(in2, LOW);
    digitalWrite(in1, LOW);
    digitalWrite(in2, LOW);   
  }
}

首先,尝试打开中断引脚的内部上拉电阻。

pinMode(interruptPin, INPUT_PULLUP);

如果不行,运行 规范中断草图并触发中断使 LED 闪烁:

int interruptPin = 2;
int LEDPin = 13;
volatile int state = LOW;

void setup() {
    pinMode(LEDPin, OUTPUT);
    pinMode(InterruptPin, INPUT_PULLUP)
    attachInterrupt(digitalPinToInterrupt(InterruptPin), blink, CHANGE);
}

void loop() {
    digitalWrite(LEDPin, state);
}

void blink() {
    state = !state;
}

如果这不起作用,那么您的接线或编码器、电压、引脚烧断或类似问题可能有问题。如果这不能让您到达那里,您可以 post 更多信息。