Giả Lập Điều Khiển Đèn Tín Hiệu Giao Thông Với Arduino

1. Đèn tín hiệu giao thông là gì?

Đèn tín hiệu giao thông được dùng để điều khiển giao thông ở những nơi có lượng phương tiện lưu thông lớn như ngã ba, ngã tư. Đây là một thiết bị quan trọng giúp đảm bảo an toàn cho các phương tiện cũng như giảm ùn tắc giao thông vào giờ cao điểm.

Nó được lắp đặt ở tâm giao lộ hoặc trên vỉa hè. Đèn tín hiệu giao thông có thể hoạt động tự động hay có sự điều khiển của cảnh sát giao thông. Có nhiều loại đèn tín hiệu giao thông như sau:

1.1. Loại 3 màu

Loại này dành cho xe cộ với 3 màu: đỏ, xanh, vàng. Các màu này có ý nghĩa:

  • Đỏ: Không được phép qua đường.
  • Xanh: Được phép qua đường.
  • Vàng: Sắp hết thời gian được phép qua đường.
Đèn giao thông 3 màu: xanh, vàng, đỏ
Đèn giao thông 3 màu: xanh, vàng, đỏ

1.2. Loại 2 màu

Loại này dành cho người đi bộ với 2 màu: đỏ và xanh. Màu đỏ: không được sang đường. Màu xanh: được phép sang đường.

Đèn giao thông dành cho người đi bộ
Đèn giao thông dành cho người đi bộ

1.3. Đèn đếm lùi

Loại đèn này còn lắp bổ sung thêm số giây đếm ngược cho các đèn tín hiệu.

Đèn giao thông đếm lùi
Đèn giao thông đếm lùi

1.4. Đèn dành cho người đi xe đạp

Đây là loại đèn dành cho xe đạp dắt ngang qua đường. Loại này được lắp đặt ở những quốc gia có nhiều xe đạp.

Đèn giao thông dành cho người đi xe đạp
Đèn giao thông dành cho người đi xe đạp

1.5. Loại 1 màu (đèn chớp vàng)

Đây là loại đèn tín hiệu chỉ có duy nhất màu vàng. Đèn này thường nhấp nháy để cảnh báo các phương tiện đi chậm và chú ý quan sát ở những nơi giao nhau không có đèn tín hiệu xanh đỏ hoặc những nơi thường hay xảy ra tai nạn.

Loại đèn vàng nhấp nháy
Loại đèn vàng nhấp nháy

1.6. Đèn mũi tên, đèn rẽ phải hoặc đèn rẽ trái

Một số cột đèn tín hiệu giao thông sẽ có một đèn phụ có hình mũi tên bên phải hoặc bên trái hoặc đi thẳng.

Đèn giao thông sử dụng tín hiệu mũi tên
Đèn giao thông sử dụng tín hiệu mũi tên

Các loại đèn tín hiệu giao thông thường được làm với nhiều led đơn. Ví dụ, đèn tín hiệu xanh gồm có 114 led đơn, đèn tín hiệu đỏvàng gồm có 115 led đơn mỗi đèn.

Các đèn giao thông gồm nhiều led đơn
Các đèn giao thông gồm nhiều led đơn

Ở bài này, chúng ta sử dụng giả lập 1 led đơn màu đỏ làm đèn tín hiệu đỏ, 1 led đơn màu xanh làm đèn tín hiệu xanh và 1 led đơn màu vàng làm đèn tín hiệu vàng. Sau đó, sử dụng Arduino để lập trình điều khiển các led xanh đỏ vàng để làm đèn giao thông.

2. Giả lập điều khiển đèn tín hiệu giao thông với Arduino

Trong bài này, chúng ta sẽ điều khiển 2 loại đèn tín hiệu giao thông: Loại 3 đèn ở ngã tư Loại đèn vàng nhấp nháy.

2.1. Loại 3 đèn ở ngã tư

Bên dưới là sơ đồ mạch điều khiển loại 3 đèn ở ngã tư với Arduino.

Sơ đồ mạch điều khiển đèn giao thông 3 màu với Arduino
Sơ đồ mạch điều khiển đèn giao thông 3 màu với Arduino

Ở ngã tư, người tham gia giao thông sẽ nhìn vào cụm đèn tín hiệu ở bên phải theo hướng di chuyển của mình. Tuy là ngã tư nhưng thật chất chúng ta chỉ cần xử lý các cụm đèn tín hiệu theo 2 hướng: chiều ngang chiều dọc. Cụm đèn D1, D2, D3 sẽ tương tự cụm đèn D10, D11, D12. Cụm đèn D4, D5, D6 sẽ tương tự cụm đèn D7, D8, D9.

Chúng ta xét cụm đèn D1, D2, D3 và cụm đèn D4, D5, D6. Có 4 lượt đèn giao thông sáng và lặp đi lặp lại như sau:

Lượt 1 – Đèn xanh D3 và đèn đỏ D4 sáng, các đèn D1, D2, D5, D6 tắt.

Lượt 2 – Đèn đỏ D4 và đèn vàng D2 sáng, các đèn D1, D3, D5, D6 tắt.

Lượt 3 – Đèn đỏ D1 và đèn xanh D6 sáng, các đèn D2, D3, D4, D5 tắt.

Lượt 4 – Đèn đỏ D1 và đèn vàng D5 sáng, các đèn D2, D3, D4, D6 tắt.

Dưới đây là code Arduino điều khiển đèn giao thông với sơ đồ mạch đã cho.

//led-red
int d1=7, d4=4, d7=10, d10=13;
//led-yellow
int d2=6, d5=3, d8=9, d11=12;
//led-green
int d3=5, d6=2, d9=8, d12=11;
//red_delay = yellow_delay + green_delay
int yellow_delay=3000, green_delay=12000;
void setup() {
  for(int i=2;i<14;i++){
    pinMode(i, OUTPUT);
  }
}

void loop() {
  /*----------Lượt đèn sáng 1----------*/
  //d4, d3 sáng; d1, d2 tắt; d5, d6 tắt
  digitalWrite(d4, HIGH);
  digitalWrite(d3, HIGH);
  digitalWrite(d1, LOW);
  digitalWrite(d2, LOW);
  digitalWrite(d5, LOW);
  digitalWrite(d6, LOW);
  //d7, d12 sáng; d10, d11 tắt; d8, d9 tắt
  digitalWrite(d7, HIGH);
  digitalWrite(d12, HIGH);
  digitalWrite(d10, LOW);
  digitalWrite(d11, LOW);
  digitalWrite(d8, LOW);
  digitalWrite(d9, LOW);
  delay(green_delay);

  /*----------Lượt đèn sáng 2----------*/
  //d4, d2 sáng; d1, d3 tắt; d5, d6 tắt
  digitalWrite(d4, HIGH);
  digitalWrite(d2, HIGH);
  digitalWrite(d1, LOW);
  digitalWrite(d3, LOW);
  digitalWrite(d5, LOW);
  digitalWrite(d6, LOW);
  //d7, d11 sáng; d10, d12 tắt; d8, d9 tắt
  digitalWrite(d7, HIGH);
  digitalWrite(d11, HIGH);
  digitalWrite(d10, LOW);
  digitalWrite(d12, LOW);
  digitalWrite(d8, LOW);
  digitalWrite(d9, LOW);
  delay(yellow_delay);

  /*----------Lượt đèn sáng 3----------*/
  //d1, d6 sáng; d2, d3 tắt; d4, d5 tắt
  digitalWrite(d1, HIGH);
  digitalWrite(d6, HIGH);
  digitalWrite(d2, LOW);
  digitalWrite(d3, LOW);
  digitalWrite(d4, LOW);
  digitalWrite(d5, LOW);
  //d10, d9 sáng; d11, d12 tắt; d7, d8 tắt
  digitalWrite(d10, HIGH);
  digitalWrite(d9, HIGH);
  digitalWrite(d11, LOW);
  digitalWrite(d12, LOW);
  digitalWrite(d7, LOW);
  digitalWrite(d8, LOW);
  delay(green_delay);

  /*----------Lượt đèn sáng 4----------*/
  //d1, d5 sáng; d2, d3 tắt; d4, d6 tắt
  digitalWrite(d1, HIGH);
  digitalWrite(d5, HIGH);
  digitalWrite(d2, LOW);
  digitalWrite(d3, LOW);
  digitalWrite(d4, LOW);
  digitalWrite(d6, LOW);
  //d10, d8 sáng; d11, d12 tắt; d7, d9 tắt
  digitalWrite(d10, HIGH);
  digitalWrite(d8, HIGH);
  digitalWrite(d11, LOW);
  digitalWrite(d12, LOW);
  digitalWrite(d7, LOW);
  digitalWrite(d9, LOW);
  delay(yellow_delay);
}

Bên dưới là video demo điều khiển đèn giao thông với Arduino.

2.2. Loại đèn vàng nhấp nháy

Bên dưới là sơ đồ mạch điều khiển loại đèn vàng nhấp nháy với Arduino.

Sơ đồ mạch điều khiển đèn vàng nhấp nháy với Arduino
Sơ đồ mạch điều khiển đèn vàng nhấp nháy với Arduino

Cách hoạt động của loại đèn vàng nhấp nháy rất đơn giản. Đèn vàng này sẽ nhấp nháy liên tục để cảnh báo cho người tham gia giao thông khi đi qua các ngã 3, ngã 4 hay đoạn đường giao nhau.

Dưới đây là code Arduino điều khiển đèn giao thông với sơ đồ mạch đã cho.

void setup() {
  pinMode(6, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(12, OUTPUT);
}

void loop() {
  digitalWrite(6, HIGH);
  digitalWrite(3, HIGH);
  digitalWrite(9, HIGH);
  digitalWrite(12, HIGH);
  delay(500);
  digitalWrite(6, LOW);
  digitalWrite(3, LOW);
  digitalWrite(9, LOW);
  digitalWrite(12, LOW);
  delay(500);
}

Bên dưới là video demo điều khiển đèn giao thông với Arduino.

5/5 - (2 bình chọn)
Chia sẻ trên mạng xã hội:

Trả lời

Lưu ý:

1) Vui lòng bình luận bằng tiếng Việt có dấu.

2) Khuyến khích sử dụng tên thật và địa chỉ email chính xác.

3) Mọi bình luận trái quy định sẽ bị xóa bỏ.