0 đánh giá

Lập trình đèn giao thông ngã ba đường, Arduino

Bài này, xin giới thiệu đến các bạn cách lập trình ngã ba đường. Chỉ với arduino,các bạn mới học có thể dễ dàng làm cho mình các dự án mô phỏng nhỏ lẻ, tạo điều kiện cho các dự án lớn hơn. Làm đèn giao thông cho nga ba là cách đơn giản nhất. Nào ta bắt đầu

Bước 1: Chuẩn bị linh kiện

- Arduino UNO,

- 9 LED 5mm

- 9 Điện trở 330Ohm

- Dây nối

Bước 2: Cách nối dây
khoere_noi-day-8326957738.jpg khoere_noi-day-1-5701944953.jpg khoere_noi-day-2-272902515.jpg khoere_noi-day-4-3134685554.jpg

Bạn nối dây như hình, chú ý chân LED chân dài và ngắn. Chân dài là chân (+). Các LED được nối và Arduino theo tuần tự: 

LED R1 chân 2;               
LED Y1 chân 3;       
LED G1 chân 4;

LED R2 chân 5;
LED Y2 chân 6;
LED G2 chân 7;

LED R3 chân 8;
LED Y3 chân 9;
LED G3 chân 10;

Việc bố trí, trang trí phụ thuộc vào bạn, để được đẹp bạn cần đầu tư nhé

Bước 3: Lập trình
/*
 * 
 * thời gian trễ 5 giây cho đèn xanh, 
 * Đèn đỏ 10s, vàng 5s.
 * 
 * LED trụ 1 nối với:
 * 2, 3 & 4.
 * 
 * LED trụ 2 nối với:
 * 5, 6 & 7.
 * 
 * LED trụ 3 nối với:
 * 8, 9 & 10.
 * 
 */



int R1 = 2;               
int Y1 = 3;       
int G1 = 4;

int R2 = 5;
int Y2 = 6;
int G2 = 7;

int R3 = 8;
int Y3 = 9;
int G3 = 10;

int GO_DELAY = 5000;      // 

void setup(){
    pinMode(R1, OUTPUT);
    pinMode(Y1, OUTPUT);
    pinMode(G1, OUTPUT);

    pinMode(R2, OUTPUT);
    pinMode(Y2, OUTPUT);
    pinMode(G2, OUTPUT);

    pinMode(R3, OUTPUT);
    pinMode(Y3, OUTPUT);
    pinMode(G3, OUTPUT);

 }

void loop(){
  STREET_1_GO();          // Đèn trụ 1 xanh các trj đèn khác dừng
  STREET_2_STOP();
  STREET_3_STOP();
  
  delay(GO_DELAY);        // 
  TRANSITION_STATE(1);    // đèn  vàng 1
  TRANSITION_OFF();
  
  STREET_1_STOP();        
  STREET_2_GO();
  STREET_3_STOP();

  delay(GO_DELAY);        
  TRANSITION_STATE(2);    
  TRANSITION_OFF();

  STREET_1_STOP();        
  STREET_2_STOP();
  STREET_3_GO();  

  delay(GO_DELAY);        
  TRANSITION_STATE(3);   
  TRANSITION_OFF();
  
}

void STREET_1_GO(){
  digitalWrite(R1, LOW);
  digitalWrite(Y1, LOW);
  digitalWrite(G1, HIGH);
}

void STREET_1_STOP(){
  digitalWrite(R1, HIGH);
  digitalWrite(Y1, LOW);
  digitalWrite(G1, LOW);
}

void STREET_2_GO(){
  digitalWrite(R2, LOW);
  digitalWrite(Y2, LOW);
  digitalWrite(G2, HIGH);
}

void STREET_2_STOP(){
  digitalWrite(R2, HIGH);
  digitalWrite(Y2, LOW);
  digitalWrite(G2, LOW);
}


void STREET_3_GO(){
  digitalWrite(R3, LOW);
  digitalWrite(Y3, LOW);
  digitalWrite(G3, HIGH);
}

void STREET_3_STOP(){
  digitalWrite(R3, HIGH);
  digitalWrite(Y3, LOW);
  digitalWrite(G3, LOW);
}

void TRANSITION_STATE(int YELLOW){
  if(YELLOW == 1)
    digitalWrite(Y1, HIGH);
  else if(YELLOW == 2)
    digitalWrite(Y2, HIGH);  
  else if(YELLOW == 3)
    digitalWrite(Y3, HIGH);

  delay(1000);  
}

void TRANSITION_OFF(){
  digitalWrite(Y1, LOW);
  digitalWrite(Y2, LOW);
  digitalWrite(Y3, LOW);
}

 

(!) Nếu có bất kỳ thắc mắc nào cần hỏi vui lòng đặt câu hỏi tại HỏiHay.Net, Cộng đồng Hỏi đáp Hỏi Hay sẽ trả lời bạn.
907 lượt xem ^tháng ^ngày, ^năm
admin 2,030 điểm

Please log in or register to Comment this Media.