>>> 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 ทำเงื่อนไขจนหมดแล้วกลับไปทำใหม่เรื่อยๆ
ผู้เชี่ยวชาญแนะนำที [Arduino] ใช้ ultrasonic นับจำนวนรถยังไง ?
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 ทำเงื่อนไขจนหมดแล้วกลับไปทำใหม่เรื่อยๆ