Làm hiệu ứng LED nhấp nháy rượt đuổi nhau đơn giản với 5 LED

Giới thiệu

Nhằm mang đến một ví dụ vui về các đèn LED, mình đã viết bài này. Hi vọng, các newbie cảm thấy thích thú với những gì Arduino làm được và cùng chúng tớ phát triển Arduino. Đây là một ví dụ cực kì dễ vì vậy đừng ngại gì mà không lắp thử, bạn nhé!

Nội dung cần nắm

Qua bài này, bạn sẽ làm quen hơn nữa với cách mà Arduino thực hiện một dự án. Bạn nên tham khảo các đường dẫn trong code nếu chưa hiểu về câu lệnh đó!

Phần cứng

Lắp mạch

Lập trình

//hàm setup() chỉ chạy duy nhất một lần khi khởi động arduino hoặc sau khi bạn nhấn nút reset
// http://arduino.vn/reference/setup-va-loop
void setup() {
  // khởi tạo các chân 2, 3, 4, 5, 6 là OUTPUT
  // nghĩa là ta sẽ sử dụng những chân này với nhiệm vụ xuất tín hiệu điện
  // bạn tham khảo tại trang http://arduino.vn/reference/pinmode
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
}
// sau khi chạy hàm setup(), arduino sẽ chạy hàm loop() liên tục lặp đi lặp lại không bao giờ nghỉ
// http://arduino.vn/reference/setup-va-loop
void loop() {
  
  //Nếu bạn chưa biết hàm digitalWrite có ý nghĩa gì, xin tham khảo tại http://arduino.vn/reference/digitalwrite  
  digitalWrite(2, HIGH); //bật đèn led nối với chân digital 2
  //Nếu bạn chưa biết hàm delay có ý nghĩa gì, xin tham khảo tại http://arduino.vn/reference/delay
  delay(60); // đợi 60 mili giây = 0.06 giây
  digitalWrite(2, LOW); //tắt đèn led nối với chân digital 2
  digitalWrite(3, HIGH); //bật...digital 3
  delay(60);// dừng 60 ms
  digitalWrite(3, LOW); // tắt ... digital 3
  digitalWrite(4, HIGH); //....
  delay(60);
  digitalWrite(4, LOW);
  digitalWrite(5, HIGH);
  delay(60);
  digitalWrite(5, LOW);
  digitalWrite(6, HIGH);
  delay(60);
  digitalWrite(6, LOW);
  // reverse
  digitalWrite(6, HIGH);
  delay(60);
  digitalWrite(6, LOW);
  digitalWrite(5, HIGH);
  delay(60);
  digitalWrite(5, LOW);
  digitalWrite(4, HIGH);
  delay(60);
  digitalWrite(4, LOW);
  digitalWrite(3, HIGH);
  delay(60);
  digitalWrite(3, LOW);
  digitalWrite(2, HIGH);
  delay(60);
  digitalWrite(2, LOW);
}

Video

Lời kết

Hãy chế thứ gì đó thật cool nào

lên
14 thành viên đã đánh giá bài viết này hữu ích.
Chuyên mục: 
Các dự án được truyền cảm hứng

Select any filter and click on Apply to see results

Các bài viết cùng tác giả

Vấn đề của số chấm động và số nguyên trong ngôn ngữ lập trình C++ trên board mạch Arduino

Có bao giờ bạn tự hỏi: "Dự án của mình làm tốt thế này, chạy ngon lành rành rành thế này, chắc không có bugs đâu?". Thực sự, nếu dự án của bạn không có phần xử lý số thực chấm động trong đó thì mình nghĩ phần code của bạn sẽ hoạt động ngon lành theo thời gian. Nhưng mà có số thực thì từ từ, chúng ta cần xét lại code. Trước đây, có một số bạn nhắn tin riêng hỏi mình về code với điểm chung là "code mình chạy ngon lành lúc đầu, sau đó bị lỗi, không rõ nguyên nhân". Loại trừ các phần code logic sai ra, thì hầu hết đều là do lỗi khi xử lý số chấm động mà không quan tâm đến nền tảng lập trình bên dưới! Mà cũng đúng, chúng ta rất dễ bị đánh lừa bởi chính đoạn code chúng ta viết. Vì nó có báo lỗi biên dịch đâu mà, kaka. Qua bài viết này, mình muốn phân tích và cùng các bạn rút kinh nghiệm về số chấm động float, cách hạn chế lỗi sai với số chấm động.

lên
22 thành viên đã đánh giá bài viết này hữu ích.

noTone()

Hàm này có nhiệm vụ kết thúc một sự kiện tone() trên một pin nào đó (đang chạy lệnh tone()). Nếu không có bất kỳ hàm tone() nào đang hoạt động thì hàm này sẽ không gây bất kỳ ảnh hưởng gì đến chương trình.

lên
5 thành viên đã đánh giá bài viết này hữu ích.