Giới thiệu sản phẩm

#define trigPin 5
#define echoPin 4
#define redPin 9
#define yellowPin 10
#define greenPin 8


long previousDistance = 0;  // Khoảng cách trước khi đo
int peopleCount = 0;        // Biến đếm số người đi qua

void setup() {
  // Cài đặt các chân
  pinMode(trigPin, OUTPUT);  // Cảm biến siêu âm: Chân Trig là OUTPUT
  pinMode(echoPin, INPUT);   // Cảm biến siêu âm: Chân Echo là INPUT
  pinMode(redPin, OUTPUT);   // Đèn đỏ là OUTPUT
  pinMode(yellowPin, OUTPUT); // Đèn vàng là OUTPUT
  pinMode(greenPin, OUTPUT); // Đèn xanh là OUTPUT

  Serial.begin(115200);        // Khởi tạo Serial Monitor để hiển thị khoảng cách và số người
}

void loop() {
  // Gửi xung siêu âm
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  // Đọc thời gian phản hồi của xung siêu âm
  long duration = pulseIn(echoPin, HIGH);  // Đo thời gian nhận phản hồi xung

  // Tính khoảng cách (cm)
  float distance = duration * 0.034 / 2;   // Công thức tính khoảng cách

  // Hiển thị khoảng cách lên Serial Monitor
  //Serial.print("Khoang cach: ");
  //Serial.print(distance);
  //Serial.println(" cm");

  // Điều kiện phát hiện người đi qua (khoảng cách thay đổi đáng kể)
  if (abs(distance - previousDistance) > 5 && distance < 10) {
    // Nếu khoảng cách thay đổi đáng kể và vật thể gần (dưới 100cm), coi như có người đi qua
    peopleCount++;  // Tăng số người đi qua

    // Hiển thị số người đã đếm lên Serial Monitor
    Serial.print("So nguoi da di qua: ");
    Serial.println(peopleCount);

  // Cập nhật khoảng cách trước đó
  previousDistance = distance;

   // Điều khiển đèn giao thông dựa trên số người đi qua
   if (peopleCount < 5) {  // Nếu có ít người đi qua
     digitalWrite(redPin, HIGH);   // Bật đèn đỏ
     digitalWrite(greenPin, LOW);  // Tắt đèn xanh
     digitalWrite(yellowPin, LOW);  // Tắt đèn vàng
   } else if (peopleCount < 10) {  // Nếu có một số người đi qua
     digitalWrite(redPin, LOW);    // Tắt đèn đỏ
     digitalWrite(greenPin, LOW);  // Tắt đèn xanh
     digitalWrite(yellowPin, HIGH);  // Bật đèn vàng
   } else {  // Nếu có nhiều người đi qua
     digitalWrite(redPin, LOW);    // Tắt đèn đỏ
     digitalWrite(greenPin, HIGH);  // Bật đèn xanh
     digitalWrite(yellowPin, LOW);  // Tắt đèn vàng
   }
   delay(500);  // Thêm một chút độ trễ trước khi đo lại
}
}
Hình ảnh sản phẩm
Hãy bình luận để nhặt 100 thóc nhé

Đăng nhập để tham gia bình luận

Thông tin tác giả

Địa vị cộng đồng: Nông dân

Sản phẩm cùng tác giả

Sản phẩm liên quan

    Không có sản phẩm nào

Bạn muốn thử làm game không?