아두이노와 초음파센서를 이용하여 스톱워치를 만들어보려고 합니다 지난번 다른분ㄷㄹ의 도움으로 멈추는 부분은 해결하엿으나 멈추긴 멈추되 처음인식된 센서에 계속 무언가 인식이되어야만 화면에서 시간이 올라가고 그렇지 않으면 뭔래 초기화면으로 돌아갑니다(그와중에 표시는안되잇느나 초는흘러갑니다) 또한 큰 문제는 멈추고나서 딜레이후 처음상태로 돌아가야하는데 초가 리셋이 되지않고 흘러갓던거 그대로 꼐속 흘러갑니다.. 10초에 멈췃으면 딜레이 2초 한거와 인식다시한거 더해서 14초부터 시작한다던지요 이거 초도 리셋하는법없을까요?
코드는 ㄷ음과 같습니다
#include <LiquidCrystal.h>
#define TRIG_PIN 9
#define ECHO_PIN 10
#define TRIG_PIN1 11
#define ECHO_PIN1 12
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
void setup()
{
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(TRIG_PIN1, OUTPUT);
pinMode(ECHO_PIN1, INPUT);
lcd.begin(16, 2);
lcd.clear();
Serial.begin(9600);
pinMode(8, INPUT);
digitalWrite(8, HIGH);
}
double i1 = 0;
double i2 = 0;
double a = millis();
double c ;
void loop()
{
int distance = 0;
int distance1 = 0;
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(5);
digitalWrite(TRIG_PIN, LOW);
distance = pulseIn(ECHO_PIN, HIGH)/58.2;
digitalWrite(TRIG_PIN1, HIGH);
delayMicroseconds(5);
digitalWrite(TRIG_PIN1, LOW);
distance1 = pulseIn(ECHO_PIN1, HIGH)/58.2;
lcd.clear();
lcd.print("Just run.");
delay(100);
if (distance <= 10) {
lcd.clear();
c = millis();
i1 = (c - a) / 1000;
i2 = 180000 / (c - a);
lcd.print(i1);
lcd.setCursor(11,0);
lcd.print("Sec's");
lcd.setCursor(0,0);
Serial.println("\n");
Serial.println(i1);
Serial.println("Sec's");
Serial.println("........");
Serial.println(i2);
Serial.println("km/h");
Serial.println("\n--------");
delay(100);
if(distance1 < 10)
{
lcd.setCursor(0,0);
lcd.print(i1);
lcd.setCursor(11,0);
lcd.print("Sec's");
lcd.setCursor(0,1);
lcd.print(i2);
lcd.setCursor(12,1);
lcd.print("km/h");
lcd.setCursor(0,0);
delay(2000);
}
}
}
|