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

Vô Duyên - Hỏi Đáp Về Smart Home: Bài 7 sử dụng biến trở điều chỉnh độ sáng đèn LED, làm quen kỹ thuật PWM và tín hiệu analog trong lập trình Arduino.

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ứ bảy 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à.

Ở mấy bài trước, anh em mình đã biết cách bật/tắt cái đèn, đọc tín hiệu từ nút nhấn. 

Giờ mình học thêm một cái hay ho nữa, đó là cách điều chỉnh độ sáng của cái đèn. 

Cái này giống như anh em mình vặn cái núm xoay trên quạt điện vậy đó. 

Muốn quạt chạy mạnh thì vặn to, muốn chạy yếu thì vặn nhỏ lại.

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

Bài 7: Sử dụng biến trở để điều chỉnh độ sáng đèn LED (PWM)

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

Anh em mình cần có mấy món này:

  • Một bo Arduino Uno.
  • Một cái breadboard.
  • Một cái đèn LED.
  • Một điện trở 220 Ohm (cho cái đèn LED).
  • Một cái biến trở (giống cái núm xoay).
  • 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 đèn LED vào chân số 9 (có dấu "\~" ở trước) trên bo Arduino qua một điện trở 220 Ohm. 
    • Chân ngắn (cathode) của đèn LED thì nối xuống chân GND.
  • Nối biến trở
    • Nối chân ngoài cùng bên trái của biến trở vào chân GND của Arduino
    • Chân ngoài cùng bên phải của biến trở thì nối vào chân 5V của Arduino
    • Chân ở giữa của biến trở thì nối vào chân A0 trên bo Arduino.

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

Ở bài này, anh em mình sẽ xài hai câu lệnh mới, nhưng mà dễ lắm.

  • analogRead(chân\_pin);
    • Câu lệnh này giống như cái "mắt" của Arduino vậy. 
    • Nó sẽ đọc giá trị từ chân analog (A0) của biến trở. 
    • Giá trị này có thể thay đổi từ 0 đến 1023.
  • analogWrite(chân\_pin, giá\_trị);
    • Câu lệnh này giống như cái "núm xoay" của Arduino vậy. 
    • Nó sẽ điều chỉnh độ sáng của đèn LED. 
    • Giá trị này có thể thay đổi từ 0 (tắt hoàn toàn) đến 255 (sáng nhất).

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 chân cho biến trở và đèn LED

const int chanBienTro = A0; // Biến trở nối vào chân A0

const int chanDenLed = 9;   // Đèn LED nối vào chân số 9 (PWM)

void setup() {

  // Đặt chân đèn LED là đầu ra (OUTPUT)

  pinMode(chanDenLed, OUTPUT);

}

void loop() {

  // Đọc giá trị từ biến trở

  int giaTriBienTro = analogRead(chanBienTro);

  // Chuyển đổi giá trị từ 0-1023 thành 0-255

  int doSangDen = map(giaTriBienTro, 0, 1023, 0, 255);

  // Điều chỉnh độ sáng của đèn LED

  analogWrite(chanDenLed, doSangDen);

}

Giải thích:

  • "analogRead(chanBienTro);": 
    • Câu lệnh này sẽ đọc giá trị từ cái chân ở giữa của biến trở. 
    • Khi anh em mình xoay biến trở, giá trị này sẽ thay đổi từ 0 đến 1023.
  • "map(giaTriBienTro, 0, 1023, 0, 255);": 
    • Câu lệnh này thì hay nè. 
    • Nó giúp anh em mình chuyển đổi giá trị. 
    • Nó sẽ lấy cái giá trị từ 0 đến 1023 của biến trở, rồi "co" nó lại thành giá trị từ 0 đến 255 để điều khiển đèn LED.
  • "analogWrite(chanDenLed, doSangDen);": 
    • Cuối cùng, câu lệnh này sẽ dùng cái giá trị đã chuyển đổi (từ 0 đến 255) để điều chỉnh độ sáng của đèn LED. 
    • Nếu giá trị là 0 thì đèn tắt, là 255 thì đèn sáng hết cỡ.

Tổng kết

Tóm lại, bài này anh em mình đã học được cách làm chủ cái đèn LED, không chỉ bật/tắt mà còn điều chỉnh được độ sáng của nó. 

Anh em mình đã biết cách sử dụng tín hiệu tương tự (analog) và một kỹ thuật quan trọng là PWM (Pulse Width Modulation - Điều chế độ rộng xung). 

Mấy cái này nghe thì ghê, chứ hiểu rồi thì dễ ẹc.

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

Hẹn anh em ở bài viết tiếp theo, mình sẽ học cách điều khiển nhiều đèn LED cùng một lúc\!

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