利用arduino实现车速的测量,判断两次信号的时间间隔
最近在做一个测速测量的装置,利用arduino作为主控芯片,想了好久,最终这样的代码可以实现两个信号的时间间隔,也算是为自己的装置画上了一个句号。采用同样的思路可以实现数字信号和模拟信号的时间间隔判断,红外或者其他编码信号可以沿用自己的编码规则。
// An highlighted block
#include<LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);//LCD1602所需要的库函数
int a = 1, b, c = 1, d, x = 1, dd;
double f;
void setup()
{ pinMode(17, OUTPUT);//设置17号数字口为输出
pinMode(15, INPUT);//设置15号数字口为输入
lcd.begin(16, 2);//启动lcd1602
lcd.print("The Speed is");
lcd.setCursor(12, 1);
lcd.print("km/h");//输出到显示屏
Serial.begin(9600);//设置波特率
}
void loop() {
if (digitalRead(15) == LOW)//判断信号是否接收到
{
a = digitalRead(15);
Serial.print(a);
if (c % 2 == 0)//偶数次信号则输出速度
{
b = millis();
Serial.print(b);
lcd.setCursor(0, 1);
f = 3000.0 / (b - dd) * 3.6;//可以根据自己的两次信号发射源的间距来调整
lcd.print(f );
digitalWrite(17, HIGH);
delay(50);
digitalWrite(17, LOW);//蜂鸣器响一下作为提示
c++;//作为参数判断奇数和偶数次信号
delay(50);
}
else//奇数次信号则不输出速度
{
d = millis();
dd = d;
Serial.print(dd);
c++;
delay(50);
lcd.setCursor(0, 1);
lcd.print("Press");
digitalWrite(17, HIGH);
delay(50);
digitalWrite(17, LOW);
}
}
}
``