#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F,16,2);
unsigned long start, finished, elapsed;
boolean D7_flag;
boolean D8_flag;
long int i=0;
void setup()
{
lcd.begin();
lcd.backlight();
lcd.print("Ready Test!!!");
Serial.begin(9600);
pinMode(4, OUTPUT); // Coil action output signal
pinMode(7, INPUT); // start ,Coil input signal
pinMode(8, INPUT); // stop ,Contact input signal
D7_flag = false;
D8_flag = false;
for(i=1;i<=100;i++)
{
digitalWrite(4, HIGH); // turn the LED on (HIGH is the voltage level)
delay(50); // wait for a second
digitalWrite(4, LOW); // turn the LED off by making the voltage LOW
delay(50);
lcd.setCursor(0, 1);
lcd.print("CountDown=");
lcd.print(100-i);
if(i==1||i==90)
{
lcd.clear();
lcd.print("Ready Test!!!");
}
}
}
void loop()
{
digitalWrite(4, HIGH);
{
if ((digitalRead(7) == HIGH) && (!D7_flag))
{
//start=millis();
start=micros();
D7_flag = true;
//Serial.println("Started...");
}
if ((digitalRead(8) == HIGH) && (!D8_flag))
{
// finished=millis();
finished=micros();
D8_flag = true;
//Serial.println("Stop...");
Serial.print("Elapsed time= ");
elapsed=finished-start-8;
Serial.print(elapsed);
Serial.println("us");
lcd.clear();
lcd.print("Elapsed time= ");
lcd.setCursor(0, 1);
lcd.print( elapsed);
lcd.print("us , ");
lcd.print( elapsed/1000);
lcd.print("ms");
}
}
}
要求上电反复开关继电器线圈测试。线圈通电开始计时,触点闭合后计算时间。用1602显示。如果时间大于或者小于多少报警输出
大家帮忙看看处理一下比较好?
|