最近在做一个测速测量的装置,利用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); } } } ``