Đăng bởi Để lại phản hồi

Hướng dẫn làm đèn LED thay đổi độ sáng với Arduino trên Tinkercard

Hôm nay chúng ta sẽ cùng tìm hiểu cách điều chỉnh độ sáng của đèn LED, bằng cách sử dụng một trong những output analog của Arduino. Theo như bài hướng dẫn trước đó (Hướng dẫn làm đèn LED nhấp nháy), bạn đã biết cách sử dụng các chân I/O của Arduino để gửi tín hiệu “LOW”, “HIGH” đến LED. Tuy nhiên không chỉ vậy, một trong số các chân này còn có khả năng phát tín hiệu mờ. Chúng được đánh dấu trên Arduino Uno bằng dấu “~” bên cạnh số chân. Chúng ta sẽ kết nối LED đến một trong những chân đặc biệt này, sau đó soạn một chương trình đơn giản để điều chỉnh độ sáng của đèn.

Bạn có thể thực hành ảo mạch này bằng cách sử dụng phần mềm mô phỏng Tinkercad Circuits.

Tham khảo thêm: Mạch đèn LED mờ trên Tinkercad.

Nếu muốn thực hành thực tế với bảng Arduino Uno, bạn sẽ cần:

  • 1 cáp USB
  • 1 máy tính có cài đặt phần mềm Arduino (hoặc plugin cho web editor)
  • 1 bảng mạch và dây
  • 1 đèn LED
  • 1 điện trở bất kỳ (từ 100 – 1K Ohm)

Tham khảo thêm: Sản phẩm Điện Trở 1 W – 10K Ohm – 5%

Bước 1: Mạch LED trên breadboard

Đèn LED được mắc nối tiếp với điện trở giữa chân số 9 của Arduino và chân đất. Các hàng của breadboard đều được nối với nhau ở bên trong, do đó chúng ta có thể cắm linh kiện và dây vào các lỗ để tạo kết nối nhanh chóng. Nhìn vào hình trên, bạn sẽ thấy các đường nối sau:

  • Nguồn (+) và đất (-) của bảng mạch nối đến Arduino 5V và chân đất (GND)
  • Cực âm của LED (chân ngắn hơn) nối đến một chân của điện trở
  • Chân điện trở còn lại nối với đất
  • Cực dương của LED (chân dài hơn) nối đến chân 9 của Arduino

Bước 2: Xây dựng code điều chỉnh độ sáng LED

Trên Tinkercad Circuits, hãy nhấn nút Start Simulation để xem đèn LED mờ và sáng lên nhé.

Chương trình này có thể được tạo từ các khối code (code block) hoặc bằng ngôn ngữ lập trình Arduino. Ta nhấp vào Code Editor để mở trình chỉnh sửa code block.

Bắt đầu với một khối điều khiển có chức năng đếm. Ta đặt để khối đếm lên năm. Sau đó, nhấp vào menu bên cạnh “for” và chọn “rename variable…” để đổi tên thành “brightness” – độ sáng. Điều chỉnh các giá trị “from” và “to” thành “0” và “255” tương ứng.

Bên trong vòng lặp đếm, ta thêm khối output để đặt một trong các chân đặc biệt (~) và điều chỉnh nó thành chân 9. Di chuyển đến Variables và kéo khối brightness đến khối output để đặt chân 9 thành giá trị hiện tại của brightness (độ sáng). Giá trị này sẽ thay đổi trong quá trình vòng lặp đếm (counting loop) chạy.

Thêm khối wait (chờ) và đặt nó thành 30 mili giây. Khối này tạo ra khoảng thời gian duy trì nhỏ giữa các mức độ sáng, để ta có có thể nhìn thấy rõ hiệu ứng trước khi độ sáng tiếp tục thay đổi. Thời lượng của khối này dùng để điều chỉnh tốc độ của hiệu ứng.

Vòng lặp đếm mà ta đã tạo sẽ làm đèn LED có hiệu ứng sáng dần, từ tối đến sáng. Để làm LED tối dần trở lại, ta phải tạo một vòng lặp đếm khác. Ta có thể kéo một vòng lặp đếm mới vào trình chỉnh sửa hoặc sao chép vòng lặp hiện tại và thay đổi chiều đếm, từ 255 xuống 0.

Bước 3: Giải thích code Arduino điều chỉnh độ sáng 

Trong trình sửa code (code editor), ta có thể nhìn thấy code Arduino được tạo bởi các khối mã.

/*
  Fade
  This example shows how to fade an LED on pin 9
  using the analogWrite() function.

  The analogWrite() function uses PWM, so if  you
  want to change the pin you're using, be  sure to
  use another PWM capable pin. On most  Arduino,
  the PWM pins are identified with   a "~" sign,
  like ~3, ~5, ~6, ~9, ~10 and ~11.
*/

Phần đầu tiên này là một comment, mô tả những gì chương trình thực hiện. 

int brightness = 0;

void setup()
{
  pinMode(9, OUTPUT);
}

Phần chính của chương trình bắt đầu với việc tạo một biến tên là brightness và đặt giá trị bằng 0. Sau đó, bên trong hàm setup (), chân 9 được khởi tạo như một OUTPUT (đầu ra).

void loop()
{
  for (brightness = 0; brightness <= 255; brightness += 5) {
    analogWrite(9, brightness);
    delay(30); // Wait for 30 millisecond(s)
  }
  for (brightness = 255; brightness >= 0; brightness -= 5) {
    analogWrite(9, brightness);
    delay(30); // Wait for 30 millisecond(s)
  }
}

Vòng lặp của chương trình sử dụng hai vòng lặp for để đếm lên, từ 0 đến 255.

Hàm analogWrite() nhận hai đối số là: số chân Arduino (chân 9) và một giá trị từ 0 (tắt) đến 255 (sáng).

Để thực hành thực tế trên Arduino Uno, bạn hãy sao chép code từ cửa sổ và dán vào bản thảo Arduino trống (hoặc tải code xuống và mở file bằng phần mềm Arduino).

Sau đó, cắm và tải bản thảo lên Arduino Uno và quan sát đèn LED bật và tắt nhé.

Bước 4: Mạch đèn mờ Starter

Mạch này cũng đã có sẵn ở mục Starter.

Bạn có thể sử dụng mạch và code này bất cứ lúc nào, lấy từ trong bảng components (menu -> Starters -> Arduino).

Tuy nhiên, hãy lưu ý cách nối điện trở của đèn LED: được kết nối giữa nguồn và đèn thay vì đèn và đất. Cả hai mạch này đều tạo ra các kết nối giống nhau, liên kết đèn LED với chân tín hiệu và mặt đất, thông qua một điện trở giúp hạn chế dòng điện (điện trở này sẽ hoạt động dù được gắn ở bất kỳ phía bên nào của đèn).

Bước 5: Điều chế độ rộng xung

Board Arduino chỉ có khả năng tạo ra tín hiệu kỹ thuật số (LOWHIGH), nhưng hàm analogWrite(); mô phỏng sự xuất hiện của độ sáng giữa trạng thái bậttắt, bằng cách sử dụng Điều chế độ rộng xung PWM (Pulse Width Modulation). Đèn LED sáng lên và tắt đi rất nhanh, do đó mắt chúng ta có cảm giác đèn mờ đi. Tỷ lệ thời gian đèn bật và tắt sẽ xác định mức độ sáng (hoặc mờ) của đèn.

Điều chế độ rộng xung PWM tạo ra một tín hiệu kỹ thuật số dao động, được điều khiển luân phiên cao và thấp theo mô hình lặp lại. Mỗi khoảng thời gian từ cao đến thấp đến cao được gọi là một chu kỳ.

Bạn có thể sẽ thấy tín hiệu kỹ thuật số dao động (trên các máy hiện sóng) sẽ giống trên hình bên dưới.

Lưu ý rằng đối với mỗi chu kỳ, độ rộng của các phần HIGH và LOW của đồ thị đang thay đổi, do đó có thuật ngữ Điều chế độ rộng xung, viết tắt là PWM.

Các chân kỹ thuật số khác trên Arduino Uno có khả năng PWM, được đánh dấu bằng ~ là: 3, 5, 6, 9, 10 và 11.

Bước 6:  Xây dựng mạch thực tế với board Arduino

Ta tùy chọn sử dụng một board Arduino Uno như hình, để xây dựng mạch breadboard theo sơ đồ bên trên. Điện trở có thể gắn theo hướng bất kỳ, vì điện trở không phân cực (không giống như LED).

Nối mạch Arduino Uno, bằng cách cắm các linh kiện và dây, sao cho giống với sơ đồ trên Tinkercad. Sao chép code từ Tinkercad Circuit và dán vào một bản thảo trống trong phần mềm Arduino (hoặc tải xuống và mở file bằng Arduino).

Cuối cùng, ta cắm cáp USB, chọn bo mạch và cổng trong menu Tools của phần mềm.

Nguồn: instructables.com
Lượt dịch: Fuvitech.vn

Để lại một bình luận