我有一个Arduino UNO连接到超声波测距仪,读取变量distance
。但是,我需要在一秒间隔内读取当前距离,然后存储前一个距离(从最后一秒开始)。我还需要能够在我的代码中使用这些变量(Dprev
和Dcurr
)其他位置。
我认为我需要将它放入某种每秒迭代的while
循环中,但我不知道如何将它们放在一起,或者在循环中使用时间。
答案 0 :(得分:0)
这个想法很简单。两个全局变量用于存储距离和两个fase。 Arduino
在执行开始时使用函数setup
,然后循环无限函数loop
。因此,在setup
中,只需初始化变量,然后在loop
中获取距离。
#define trigPin 13
#define echoPin 12
long duration, distance, distance_prev;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
duration = 0;
distance = 0;
distance_prev= 0;
}
void loop() {
distance_prev = distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW); //Send ultrasonic pulse
duration = pulseIn(echoPin, HIGH);//Time for ultrasonic pulse to go and back
distance = (duration/2) / 29.1;//Conversion to cm
/*CODE USING DISTANCES HERE*/
delay(1000); //One second delay
}