Bài 98-5: Làm mờ đèn khi nhấn nút bằng Arduino
Trong bài học này, bạn sẽ tạo một đèn LED mờ dần theo lệnh: nhấn nút nhấn và đèn LED bắt đầu ở độ sáng tối đa, sau đó mờ dần một cách mượt mà cho đến khi tắt. Đây là một trong những mẫu bài học cơ bản hữu ích nhất trong Arduino vì nó kết hợp đầu vào kỹ thuật số (nút nhấn) với đầu ra tương tự PWM (độ sáng LED), và nó dạy bạn cách điều khiển tốc độ và độ mượt của sự thay đổi thay vì chỉ bật và tắt một thứ gì đó.
Mờ dần theo yêu cầu xuất hiện ở khắp mọi nơi trong các sản phẩm thực tế. Dưới đây là một vài cách thực tiễn bạn có thể sử dụng những gì học được ở đây:
- Đèn báo tắt mềm — thay vì đèn tắt đột ngột, nó mờ dần một cách nhẹ nhàng khi bạn nhấn nút, trông chuyên nghiệp hơn nhiều trên các thiết bị gia dụng và vỏ in 3D.
- Chế độ ngủ / chờ — nhấn nút và đèn LED trạng thái sáng sẽ mờ dần đến tắt để không làm phiền bạn vào ban đêm, trong khi mạch vẫn được cấp nguồn.
- Đèn sân khấu hoặc đèn mô hình "mờ dần đến tắt" — một nút nhấn kích hoạt việc làm mờ mượt mà một dải hoặc tấm LED thay vì cắt đột ngột.
- Phản hồi tiết kiệm pin — một lần nhấn nút tạm thời cho bạn một tín hiệu xác nhận sáng rồi mờ dần, vì vậy đèn LED chỉ sáng hoàn toàn trong một khoảng thời gian ngắn.
- Nghệ thuật tương tác và đạo cụ — hiệu ứng "thở ra" được kích hoạt bằng chạm, lý tưởng cho cosplay, mô hình sa bàn hoặc trưng bày bảo tàng.
Ý tưởng cốt lõi rất đơn giản: nút nhấn báo cho Arduino "bắt đầu mờ dần ngay bây giờ", và Arduino giảm độ sáng LED từ 255 (tối đa) xuống 0 (tắt) theo các bước nhỏ. Vì các bước nhỏ và diễn ra nhanh, mắt bạn thấy một sự mờ dần mượt mà thay vì một bước nhảy.
Nếu bạn chưa từng làm mờ đèn LED trước đây, việc điều khiển độ sáng cơ bản được trình bày trong Bài 98-4: Làm mờ đèn LED bằng Arduino: Điều khiển độ sáng. Bài học này xây dựng trực tiếp trên nền tảng đó bằng cách thêm nút nhấn làm tác nhân kích hoạt.
Phần cứng và linh kiện
Đây là một bản dựng rất tiết kiệm chi phí — mọi thứ ở đây đều là vật liệu tiêu chuẩn trong bộ kit khởi đầu:
- Bo Arduino (Uno, Nano, Mega hoặc bất kỳ bo tương thích nào)
- Một đèn LED (5 mm hoặc 3 mm, bất kỳ màu nào)
- Một công tắc nút nhấn (loại tạm thời, loại xúc giác 4 chân hoạt động tốt)
- Một điện trở cho đèn LED — bất kỳ giá trị nào từ 200 Ω đến 1000 Ω (loại cổ điển 220 Ω hoặc 330 Ω là hoàn hảo)
- Breadboard và dây jumper DuPont
- Cáp USB để lập trình (và pin hoặc bộ chuyển đổi 5 V nếu bạn muốn nó chạy không dây)
Một lưu ý nhanh về điện trở LED: một đèn LED cần khoảng 2 V trên nó và dòng điện khoảng 10 mA. Với nguồn 5 V, điện trở phải giảm 3 V còn lại, vì vậy định luật Ohm cho khoảng 300 Ω. Bất kỳ giá trị nào từ 300 Ω đến 1000 Ω đều hoạt động — giá trị cao hơn chỉ làm đèn LED mờ hơn. Sử dụng điện trở là bắt buộc; nếu không có nó, đèn LED sẽ hút quá nhiều dòng và cháy.
Hướng dẫn đấu dây
Việc đấu dây được thiết kế tối giản có chủ đích. Cực dương của đèn LED (chân dài hơn) kết nối qua điện trở đến chân kỹ thuật số 3, và cực âm của nó (chân ngắn hơn, với mặt phẳng trên thân) nối đất. Nút nhấn kết nối giữa chân kỹ thuật số 2 và đất — không cần điện trở kéo lên bên ngoài vì mã sẽ kích hoạt điện trở kéo lên nội bộ của Arduino.
Hãy chú ý đến cực tính của đèn LED: mặt phẳng của thân nhựa và chân ngắn hơn đánh dấu cực âm (âm). Nếu bạn cắm ngược, đèn LED sẽ không sáng — không có hư hỏng gì, chỉ cần đảo lại.
Đối với nút nhấn, nếu bạn đang sử dụng công tắc xúc giác 4 chân, hãy nhớ rằng các chân được ghép nối bên trong: hai trong bốn chân luôn được kết nối với nhau. Sử dụng đồng hồ vạn năng ở chế độ thông mạch để tìm một cặp kêu bíp khi nhấn, sau đó sử dụng một chân từ mỗi bên. Một bên nối đến chân 2, bên kia nối đất.
Giải thích mã
Bản phác thảo ngắn gọn, và hầu hết mọi thứ bạn có thể muốn thay đổi đều nằm trong một vài dòng ở đầu. Dưới đây là các phần có thể cấu hình bởi người dùng:
const int pushButtonPin = 2;//chân mà công tắc nút nhấn được kết nối tới
const int LEDPin = 3;//chân mà LED được kết nối tới
const int fadeAmount = 10; // số điểm để giảm độ sáng LED
const int fadeSpeed = 5;//thời gian mờ dần tính bằng mili giây. giá trị càng nhỏ, hiệu ứng mờ càng nhanh
pushButtonPin và LEDPin chỉ đơn giản cho Arduino biết bạn đã nối dây các thứ vào những chân nào. Nếu bạn chuyển nút nhấn sang chân 4 hoặc LED sang chân 9 (một chân hỗ trợ PWM), chỉ cần thay đổi hai con số này cho khớp với cách nối dây của bạn. Lưu ý rằng chân LED bắt buộc phải hỗ trợ PWM — trên Uno nghĩa là các chân 3, 5, 6, 9, 10, hoặc 11 — vì việc làm mờ cần dùng analogWrite().
fadeAmount điều khiển mỗi bước độ sáng lớn đến mức nào. Độ sáng chạy từ 0 đến 255, vì vậy fadeAmount bằng 10 nghĩa là LED mờ dần trong khoảng 25 bước. Số lớn hơn làm hiệu ứng mờ thô hơn và nhanh hơn; số nhỏ hơn làm nó mượt hơn và chậm hơn.
fadeSpeed là độ trễ tính bằng mili giây giữa mỗi bước. Đây là nút điều chỉnh quan trọng nhất đối với cảm giác của hiệu ứng. Giá trị 5 ms cho hiệu ứng mờ nhanh, dứt khoát; giá trị 30 ms hoặc hơn cho hiệu ứng mờ chậm rãi, êm ái. Kết hợp với fadeAmount, hai giá trị này cho phép bạn tinh chỉnh hiệu ứng mờ đúng theo đặc tính bạn muốn.
Cũng có một biến nội bộ đáng để biết:
int brightness = 255; // độ sáng của LED
int pushButtonStatus = 0; // giá trị nhấn từ chân 2
brightness bắt đầu ở 255, nghĩa là LED khởi đầu ở độ sáng tối đa mỗi khi bạn nhấn nút. Nếu bạn muốn hiệu ứng mờ bắt đầu từ mức tối hơn — ví dụ, một nửa độ sáng — hãy đổi giá trị này thành 128.
Bản thân logic hoạt động như sau: vòng lặp đọc trạng thái nút nhấn. Nếu nút được nhấn (LOW, do điện trở kéo lên nội bộ), một vòng lặp while sẽ chạy chừng nào brightness còn lớn hơn không. Bên trong vòng lặp đó, Arduino ghi độ sáng hiện tại ra LED, trừ đi fadeAmount, chờ fadeSpeed mili giây, rồi lặp lại. Khi nút không được nhấn, LED chỉ đơn giản được ghi giá trị 0 và tắt.
Một chi tiết quan trọng: điện trở kéo lên nội bộ khiến chân đọc mức HIGH khi nút không được nhấn và LOW khi nút được nhấn. Đó là lý do mã kiểm tra LOW để phát hiện thao tác nhấn. Nếu bạn chuyển sang dùng điện trở kéo xuống ngoài, bạn sẽ cần đổi phép so sánh đó thành HIGH.
Dự án trực tiếp và minh họa
Sau khi nạp xong, hoạt động diễn ra ngay lập tức và rất thú vị. Nhấn nút và LED nhảy lên độ sáng tối đa, rồi mờ dần xuống hẳn trong khoảng thời gian bạn điều khiển. Nhả nút và LED tắt; nhấn lại thì hiệu ứng mờ bắt đầu lại từ độ sáng tối đa.
Trong video, hiệu ứng mờ được minh họa ở nhiều cài đặt khác nhau để bạn có thể nghe và thấy sự khác biệt. Với fadeAmount = 20, hiệu ứng mờ nhanh và thô — nó về không chỉ trong một vài bước nhìn thấy được. Giảm xuống fadeAmount = 10 làm nó mượt hơn đáng kể, và chuyển sang fadeAmount = 3 làm hiệu ứng mờ kéo dài lâu hơn rõ rệt và trông gần như liên tục. Giá trị fadeSpeed cũng có tác động mạnh tương tự: đặt nó thành 1 ms làm hiệu ứng mờ gần như tức thời, trong khi giá trị lớn hơn kéo dài nó ra.
Hãy thử nghiệm điều này: đặt fadeAmount = 5 và fadeSpeed = 30. Bạn sẽ có hiệu ứng mờ chậm rãi, nhẹ nhàng trông như một ngọn đèn đang chìm vào giấc ngủ. Sau đó đặt fadeAmount = 50 và fadeSpeed = 1 để có kiểu tắt cứng, nhanh. Cả hai đều không "sai" — tất cả chỉ phụ thuộc vào cảm giác bạn muốn tạo ra.
Hành vi bật/tắt của cùng nút nhấn đó được trình bày riêng trong Bài 98-3: Cách Bật/Tắt LED Toggle Sử Dụng Nút Nhấn với Arduino, và phiên bản đơn giản hơn là nhấn để sáng nằm trong Bài 98-2: Cách Bật và Tắt LED Sử Dụng Nút Nhấn với Arduino.
Vì hiệu ứng mờ được kích hoạt bằng một tiếp xúc tức thời, cùng mạch này cũng rất phù hợp để điều khiển relay hoặc MOSFET thay vì LED — bạn có thể làm mờ một bóng đèn 12 V, khởi động mềm một động cơ, hoặc làm nóng dần một phần tử gia nhiệt. Nút nhấn chỉ là bộ kích hoạt; bạn làm mờ cái gì là tùy bạn.
Các dự án liên quan từ video này
- Bài 98-1: Cách Bật và Tắt LED với Arduino
- Bài 98-2: Cách Bật và Tắt LED Sử Dụng Nút Nhấn với Arduino
- Bài 98-3: Cách Bật/Tắt LED Toggle Sử Dụng Nút Nhấn với Arduino
- Bài 98-4: Làm Mờ Đèn LED Sử Dụng Arduino: Điều Khiển Độ Sáng
- Bài 98-6: Trò Chơi LED Bập Bênh với Arduino
- Bài 98-7: Đèn Chạy Sử Dụng Arduino và 5 LED
- Bài 98-8: Đèn Chạy với Nút Nhấn và LED với Arduino
- Bài 98-9: Đồng Hồ Đo Mức Điện Áp LED Sử Dụng Arduino hoặc đèn chạy với biến trở
- Bài 98-10: Đèn Giao Thông Arduino
Các chương
- [00:00] Tổng quan về 10 dự án LED
- [01:00] Giới thiệu về khóa học Arduino từng bước
- [02:29] Kiến thức cơ bản về LED: ký hiệu, cực tính và dòng điện
- [03:49] Tính toán điện trở LED bằng định luật Ohm
- [05:53] Dự án 1: Bật và tắt LED
- [12:43] Dự án 2: LED với nút nhấn
- [17:13] Dự án 3: Bật tắt LED bằng nút nhấn
- [20:12] Dự án 4: Làm mờ LED
- [23:20] Dự án 5: Làm mờ LED bằng nút nhấn
- [27:32] Dự án 6: LED bập bênh
- [30:47] Dự án 7: Đèn chạy
- [36:41] Dự án 8: Đèn chạy với nút nhấn
- [42:25] Dự án 9: Đồng hồ đo mức điện áp LED
- [49:25] Dự án 10: Đèn giao thông Arduino
This code has not been parsed yet. Please return to the admin panel to parse it.
Nghĩ bạn có thể cần
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
Tài nguyên & tài liệu tham khảo
-
Tài liệuDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
Bên ngoài
-
Bên ngoài
-
Bên ngoài
Tập tin📁
Thư viện Arduino (tệp nén)
-
Mã nguồn bộ kit học xe thông minh 3-trong-1 của SunFounder
3in1-kit-main-v2.zip12.80 MB
Hướng dẫn Sử dụng
-
Hướng dẫn lắp ráp xe thông minh SunFounder 3-in-1 ArduinoTài liệu này hướng dẫn từng bước lắp ráp xe thông minh SunFounder 3-in-1 Arduino
SunFounder_car_assembly_manual.pdf1.20 MB