ผู้เชี่ยวชาญแนะนำที [Arduino] ใช้ ultrasonic นับจำนวนรถยังไง ?

>>> CODE <<<<

int trigPin = D1;
int echoPin = D2;
int car ;
int tcar;

void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(LED, OUTPUT);

  Serial.begin(115200);
}

void loop() {  
  long duration;
  int distance;

//////////  คำนวนระยะ /////////////
  digitalWrite (trigPin, HIGH);
  delayMicroseconds (10);
  digitalWrite (trigPin, LOW);
  duration = pulseIn (echoPin, HIGH);
  distance  = duration * 0.034 / 2;
///////////////////////////////////////

////// ถ้า sensor มากกว่า 8cm หรือไม่มีอะไรมาบัง sensor หรือไม่มีรถจอด จะให้ ไฟ LED ติด /////
  if (distance > 8) {  
    digitalWrite (LED, HIGH);
    Serial.print("NO CAR : ");
    Serial.print(distance);
    Serial.println("   CM");

////// ถ้า sensor ต่ำกว่า 8cm แสดงว่ามีรถมาจอดให้ไฟ LED ดับ และให้เก็บค่าจำนวนรถที่เข้ามา = 1  /////
  } else if (distance <= 8) {
    digitalWrite (LED, LOW);
    Serial.print("FULL CAR : ");
    Serial.print(distance);
    Serial.println("   CM");
    car = 1;

  }
     tcar = tcar + car;
     Serial.println(tcar);
}

แสดงผลลัพธ์ (เมื่อมีรถมาจอดค้าง)
1
2
3
4
.
.
n นับเรื่อยๆ

จะเขียน code ยังไงให้ เวลามีรถมาจอดนั้น ให้นับรถแค่ 1 เมื่อมีรถออกแล้วคันใหม่เข้ามา ก็จะเปลี่ยนเป็น 2
ไม่ใช่คันเดียวเข้ามา  1 2 3 4 5 ไปเรื่อยๆ อะครับ
เท่าที่ผมลองคิดคือเมื่อมีรถมาจอดให้มันอยุ่ใน loop ที่ตั้งเงื่อนไขไว้ก่อน จนกว่าจะมีรถจะออกไป ถึงค่อยเอา ค่า car = 1 ไปเก็บเรื่อยๆ
แต่ลองใช้ loop while  พอมีรถมาจอดหรือเข้าเงื่อนไข ปุ้บ มันไม่ยอมออกเลย ทั้งๆ ที่ผมเอารถถอยออกจาก sensor แล้ว

ใครเก่งภาษา c หรือพอมีวิธีแก้ไขปัญหานี้ หรือบอกแนวคิดที่จะพอสามารถทำได้ แนะนำทีครับ ติดแง๊กมาหลายวันแล้ว TT
ปล. void loop() มันจะวน loop ทำเงื่อนไขจนหมดแล้วกลับไปทำใหม่เรื่อยๆ
คำตอบที่ได้รับเลือกจากเจ้าของกระทู้
ความคิดเห็นที่ 4
อ่านในมือถือแล้วงงมาก 55555
เช็คข้อความหลังไมค์นะครับ
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่