Thợ điện vô duyên học điện: Tự học vi điều khiển Bài 8

Vô Duyên - Hỏi Đáp Về Smart Home: Bài 8 hướng dẫn cách điều khiển nhiều đèn LED cùng lúc bằng mảng và vòng lặp, tạo hiệu ứng đèn cho nhà thông minh.

Tác giả: Thợ điện vô duyên - Phạm minh liêm

Hé lô anh em, Vô Duyên lại lên đây!

Bữa nay anh em mình lại tỉ tê chuyện nghề ha. 

Anh em muốn tui viết bài thứ tám trong chuyên mục "Vô Duyên - Hỏi Đáp Về Smart Home" với chủ đề "Tự học vi điều khiển" đúng không? 

Vụ này thì tui khoái nè, vì nó là cái "cần câu cơm" của tui mà.

Ở bài trước, anh em mình đã biết cách điều chỉnh độ sáng đèn LED. 

Giờ mình nâng cấp lên một chút, học cách điều khiển nhiều đèn LED cùng lúc. 

Cái này rất hữu ích, giống như anh em mình muốn làm một cái đèn nhấp nháy, hay một cái bảng quảng cáo đèn LED vậy đó.

Thôi, không nói nhiều nữa, anh em mình bắt đầu thôi.

Bài 8: Viết chương trình điều khiển nhiều đèn LED và các hiệu ứng đèn (sử dụng mảng)

1. Chuẩn bị "đồ nghề"

Để làm bài này, anh em mình cần có:

  • Một bo Arduino Uno.
  • Một cái breadboard.
  • Khoảng 5-10 cái đèn LED (mỗi cái một màu thì càng hay).
  • 5-10 cái điện trở 220 Ohm.
  • Vài sợi dây nối.

2. Mạch điện (đấu dây)

Nói thiệt, cái này quan trọng lắm, anh em làm theo cho kỹ.

  • Nối đèn LED
    • Nối chân dài (anode) của mỗi cái đèn LED vào một chân digital khác nhau trên bo Arduino (từ chân số 2 đến chân số 11) qua một điện trở 220 Ohm.
  • Nối chung chân âm
    • Nối tất cả các chân ngắn (cathode) của các đèn LED lại với nhau, rồi nối xuống chân GND của Arduino.

3. Lập trình và giải thích

Ở bài này, anh em mình sẽ xài một cái khái niệm mới, tên là mảng (array). 

Nói thẳng luôn, mảng giống như một cái "túi" vậy đó. 

Thay vì anh em mình phải khai báo từng cái chân đèn LED một (int den1 = 2; int den2 = 3; ...), thì giờ mình chỉ cần dùng một câu lệnh để cho hết vào một cái túi là xong.

Giờ, anh em mình mở phần mềm Arduino IDE lên, rồi copy cái đoạn code dưới đây vào:

// Khai báo mảng để lưu các chân của đèn LED

int chanDenLed[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11};

// Khai báo số lượng đèn LED

int soLuongDenLed = 10;

void setup() {

  // Dùng vòng lặp để thiết lập tất cả các chân đèn LED là OUTPUT

  for (int i = 0; i < soLuongDenLed; i++) {

    pinMode(chanDenLed[i], OUTPUT);

  }

}

void loop() {

  // Hiệu ứng 1: Đèn sáng dần từ 1 đến 10

  for (int i = 0; i < soLuongDenLed; i++) {

    digitalWrite(chanDenLed[i], HIGH); // Bật đèn

    delay(100); // Đợi 0.1 giây

  }

    // Tạm dừng một chút

  delay(500);

  // Hiệu ứng 2: Đèn tắt dần từ 10 về 1

  for (int i = soLuongDenLed - 1; i >= 0; i--) {

    digitalWrite(chanDenLed[i], LOW); // Tắt đèn

    delay(100); // Đợi 0.1 giây

  }

  // Tạm dừng một chút

  delay(500);

  // Hiệu ứng 3: Đèn chớp tắt xen kẽ

  for (int i = 0; i < soLuongDenLed; i++) {

    if (i % 2 == 0) { // Nếu là đèn chẵn

      digitalWrite(chanDenLed[i], HIGH);

    } else { // Nếu là đèn lẻ

      digitalWrite(chanDenLed[i], LOW);

    }

  }

  delay(500);

    for (int i = 0; i < soLuongDenLed; i++) {

    digitalWrite(chanDenLed[i], LOW);

  }

  delay(500);

    for (int i = 0; i < soLuongDenLed; i++) {

    if (i % 2 != 0) { // Nếu là đèn lẻ

      digitalWrite(chanDenLed[i], HIGH);

    } else { // Nếu là đèn chẵn

      digitalWrite(chanDenLed[i], LOW);

    }

  }

  delay(500);

    for (int i = 0; i < soLuongDenLed; i++) {

    digitalWrite(chanDenLed[i], LOW);

  }

  delay(500);

}

Giải thích:

  • "int chanDenLed[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11};": 
    • Đây là cách anh em mình khai báo một cái mảng để chứa các số chân của đèn LED.
  • "for (int i = 0; i < soLuongDenLed; i++) { ... }": 
    • Cái này gọi là vòng lặp
    • Giống như anh em mình làm việc vậy đó, cứ lặp đi lặp lại một công việc cho tới khi hoàn thành.
  • "digitalWrite(chanDenLed[i], HIGH);": 
    • Cái này là câu lệnh hay nè. 
    • chanDenLed[i] có nghĩa là "lấy cái chân thứ "i" trong cái mảng chanDenLed ra".

Tổng kết

Tóm lại, bài này anh em mình đã biết cách điều khiển nhiều đèn LED bằng mảng và vòng lặp

Cái này rất quan trọng, nó sẽ giúp anh em mình làm được nhiều hiệu ứng đèn đẹp mắt, ứng dụng trong các dự án smart home như đèn trang trí, đèn cảnh báo.

Nói nhiêu đó đủ rồi. 

Hẹn anh em ở bài viết tiếp theo, mình sẽ học cách xài màn hình LCD để hiển thị thông tin!

Nếu cần tư vấn về tư vấn thiết kế, lắp đặt thi công hay bảo trì sửa chữa các thiết bị và hệ thống **smart home**, cứ liên hệ tui qua số điện thoại 0902633999 (có Zalo và WhatsApp) để được giải đáp nhé\!*

Đăng nhận xét

Lưu ý: Chỉ thành viên của blog này mới được đăng nhận xét.

[facebook]

MKRdezign

{facebook#https://facebook.com/smarthomeminhliem} {twitter#http://twitter.com} {google-plus#http://google.com} {pinterest#http://pinterest.com} {youtube#https://youtube.com/smarthomeminhliem} {instagram#http://instagram.com/smarthomeminhliem}

Biểu mẫu liên hệ

Tên

Email *

Thông báo *

Được tạo bởi Blogger.
Javascript DisablePlease Enable Javascript To See All Widget