输入 Arduino 的两个高状态之间的时间

Time between two High state of an input Arduino

我正在尝试在 Arduino Uno 中制作一个程序,它可以计算相同输入的两个高状态之间的 时间间隔(以毫秒为单位)。

int V1;

long int time1;
long int time2;
long int interval1;
long int lastvalue;

void setup (){
  pinMode(2, INPUT);
  Serial.begin(9600);
}
 void loop() {
  V1 = digitalRead(2); // reading state of input 2

  if (V1 ==HIGH) {
    Serial.print("Event occure: ");
    time1 = millis();
    Serial.print(time1);
    delay(500);
    
    interval1= time1 - lastvalue;
    Serial.print("difference between previous time1 and current time1 (in mills): ");
    Serial.print(interval1);
    
  }
 }

你能告诉我如何计算时间 1 的当前值和时间 1 的最后一个值(当前时间 1-1)之间的差值吗?

谢谢!

你可以这样做。

unsigned long lastTime = 0;
int lastVal = HIGH;
int val = LOW;

void setup (){
  pinMode(2, INPUT);
}

void loop() {
  // read the current input value
  val = digitalRead(2);
  // if the value has changed since last time and is HIGH
  if(val != lastVal && val){

    // get current time
    unsigned long currTime = millis();
    // calculate difference to last time
    unsigned long timeDiff = currTime - lastTime;
    // get a new lastTime for next high
    lastTime = currTime;
    }
    // update lastVal so we know the input changed
    lastVal = val;  
 }

或者,您可以使用类似方式的上升沿中断。