Lab.Vatli365
← Cấp độ 2 · Tín hiệu tương tự và PWM

Bài 9 · Vật lí · Công nghệ · Mĩ thuật

Trộn màu RGB
ba con đèn tí hon và một cái mắt dễ bị lừa

Màn hình điện thoại của em có hàng triệu điểm ảnh, mỗi điểm chỉ có đúng ba màu. Bài này mở ra một điểm ảnh cỡ lớn để nhìn cho rõ chuyện gì đang xảy ra bên trong.

Thời lượng
1 tiết (45 phút)
Chi phí một nhóm
≈ 4 nghìn đồng (chưa tính bo)
Cấp độ
2 / 12
Trạng thái
Đã có phần cứng, đang hoàn thiện
01

Mục tiêu và yêu cầu cần đạt

Hỏi cả lớp: đỏ trộn với lục ra màu gì? Gần như chắc chắn sẽ có em trả lời "nâu" — vì trong hộp màu vẽ đúng là như vậy. Bài này cho các em thấy ánh sáng chơi theo luật khác hẳn.

Sau bài này học sinh làm được

  • Nối đúng LED RGB cathode chung, phân biệt được chân chung với ba chân màu.
  • Dùng PWM ba kênh độc lập để đặt tỉ lệ ba màu cơ bản.
  • Pha ra được vàng, cam, tím và trắng từ ba kênh.
  • Phân biệt trộn màu cộng của ánh sáng với trộn màu trừ của thuốc nhuộm.
  • Giải thích vì sao ba con đèn riêng lẻ lại cho ra cảm giác một màu duy nhất.
Gắn với chương trình
  • Vật lí 11–12 — ánh sáng và màu sắc; tổng hợp ánh sáng.
  • Công nghệ 12 — điều khiển nhiều kênh đầu ra bằng PWM.
  • Tin học — mã màu RGB dùng trong mọi phần mềm đồ hoạ.

Trích nguyên văn yêu cầu cần đạt từ Phụ lục Thông tư 32/2018 trước khi đưa vào kế hoạch bài dạy.

02

Lí thuyết

Bên trong là BA con LED

LED RGB không phải một con đèn đổi màu được. Bên trong là ba con LED riêng biệt — đỏ, lục, lam — đặt sát nhau trong cùng vỏ, mỗi con một chân điều khiển và một chân chung về GND.

Ba con cách nhau chưa tới một mi-li-mét, mắt người không phân giải nổi ở khoảng cách nhìn thường, nên ta thấy một đốm duy nhất mang màu tổng hợp.

Mẹo nhỏ làm màu đẹp hẳn lên

Úp một mẩu giấy can, nửa quả bóng bàn, hay mẩu giấy trắng vò nhẹ lên LED. Ánh sáng bị tán ra, ba nguồn hoà kỹ hơn, màu sạch hơn hẳn nhìn trực tiếp vào con LED trần.

Cộng chứ không phải trừ

Ý cốt lõi của bài. Ánh sáng thì cộng: thêm nguồn sáng là thêm ánh sáng, nên đỏ cộng lục ra vàng, cả ba cộng lại ra trắng. Màu vẽ thì trừ: mỗi lớp thuốc nhuộm hấp thụ bớt ánh sáng, càng trộn càng tối, nhiều màu ra nâu xám.

Kênh đỏKênh lụcKênh lamMắt thấy
10000Đỏ
1001000Vàng
100400Cam
0100100Lơ (xanh ngọc)
600100Tím
100100100Trắng

Ba con số ấy chính là mã màu

Mọi phần mềm đồ hoạ mô tả màu bằng đúng ba con số này, chỉ khác thang: 0–255 thay vì 0–100. Học sinh chọn màu trong phần mềm vẽ là đang làm y hệt việc vừa làm trên breadboard.

03

Linh kiện

Linh kiệnMô tả, lưu ý khi muaSố lượng · giá
ESP32 DevKit V1Bo 30 chân, cổng micro-USB hoặc Type-C1 · 90–150k
LED RGB 4 chânLoại cathode chung — chân dài nhất về GND. Xem hộp cạm bẫy1 · 3k
Điện trở 220 ΩBa con, mỗi kênh màu một con3 · 600đ
Giấy can hoặc bóng bàn cắt đôiChụp lên LED để ba màu hoà vào nhau, nhìn rõ hơn hẳn1 · 1k
04

Lắp mạch và sơ đồ nối dây

Đỏ · nguồn dương Đen · GND Vàng · SCL Xanh dương · SDA Trắng · tín hiệu Xanh lá · 1-Wire
KhốiNối dâyNguồn
Kênh đỏGPIO25 → điện trở 220 Ω → chân RLấy từ chính chân GPIO
Kênh lụcGPIO26 → điện trở 220 Ω → chân GLấy từ chính chân GPIO
Kênh lamGPIO27 → điện trở 220 Ω → chân BLấy từ chính chân GPIO
Chân chungChân dài nhất của LED RGB → GNDLoại cathode chung
B7.1 Ảnh thực

LED RGB 4 chân cắm breadboard với ba điện trở, ba dây trắng về GPIO25/26/27 và một dây đen về GND. Chụp chếch 45°.

Khung giữ chỗ — thay bằng ảnh chụp thật khi có
B7.2 Ảnh thực

Cận cảnh bốn chân LED RGB, có chú thích chỉ rõ chân dài nhất là chân chung và thứ tự R–chung–G–B.

Khung giữ chỗ — thay bằng ảnh chụp thật khi có
B7.3 Ảnh thực

Cùng một LED chụp ở ba cấu hình: chỉ đỏ, đỏ cộng lục ra vàng, và cả ba kênh ra trắng — có chụp giấy can chụp lên trên.

Khung giữ chỗ — thay bằng ảnh chụp thật khi có

Bốn bước lắp

  1. Tìm chân dài nhất của LED RGB — đó là chân chung. Nối thẳng xuống GND bằng dây đen.
  2. Ba chân còn lại lần lượt qua ba điện trở 220 Ω riêng.
  3. Ba dây trắng từ ba điện trở về GPIO25, GPIO26, GPIO27.
  4. Chạy Bước 0 để biết chân nào ra màu nào, rồi mới ghi nhãn.
Cathode chung hay anode chung — mua nhầm là ngược hết

Có hai loại LED RGB nhìn giống hệt nhau. Loại cathode chung có chân chung nối về GND; loại anode chung có chân chung nối về 3V3.

Bài này viết cho loại cathode chung. Nếu mua nhầm loại anode chung, đèn sẽ hoạt động ngược: duty 0 thì sáng nhất, duty 100 thì tắt. Cách thử tại chỗ: nối chân chung xuống GND, chấm một chân màu vào 3V3 qua điện trở. Sáng là cathode chung; không sáng thì thử nối chân chung lên 3V3.

Ba điện trở, không dùng chung một con

Lí do giống hệt Bài 3, nhưng ở đây hậu quả rõ hơn nhiều: nếu dùng chung một điện trở ở chân chung, độ sáng mỗi kênh sẽ phụ thuộc vào hai kênh kia. Đặt cùng một bộ ba con số mà màu ra khác nhau tuỳ lúc — không cách nào pha màu chính xác được.

05

Mã nguồn

Toàn bộ mã trong bài chạy trên MicroPython 1.28 cho ESP32. Chép vào bo rồi đổi tên thành main.py là chạy mỗi lần cấp nguồn.

Bước 0 — kênh nào ra màu nào
# ------------------------------------------------------------
#  Bai 9 - Buoc 0: bat lan luot tung kenh de biet chan nao ra mau nao
# ------------------------------------------------------------
from machine import Pin
import time

R = Pin(25, Pin.OUT)
G = Pin(26, Pin.OUT)
B = Pin(27, Pin.OUT)

for chan, ten in ((R, "DO"), (G, "LUC"), (B, "LAM")):
    print("Dang bat kenh", ten)
    chan.on()
    time.sleep(1)
    chan.off()

Ba kênh sáng lần lượt kèm tên in ra màn hình. Nếu thứ tự màu không khớp, chỉ cần đổi ba con số chân trong chương trình cho khớp thực tế, không cần rút dây.

Chương trình chính — pha một màu và giữ nguyên
# ------------------------------------------------------------
#  Bai 9 - Tron mau RGB
#  Phan cung: GPIO25 -> R, GPIO26 -> G, GPIO27 -> B
#             moi chan qua mot dien tro 220 ohm
#             chan chung cua LED RGB -> GND  (loai cathode chung)
# ------------------------------------------------------------
from machine import Pin, PWM
import time

# ===== CẤU HÌNH =====
CHAN_R = 25
CHAN_G = 26
CHAN_B = 27
DO_SANG_R = 100           # % - kenh do
DO_SANG_G = 40            # % - kenh luc
DO_SANG_B = 0             # % - kenh lam
# ====================

R = PWM(Pin(CHAN_R), freq=1000)
G = PWM(Pin(CHAN_G), freq=1000)
B = PWM(Pin(CHAN_B), freq=1000)

def dat_mau(r, g, b):
    R.duty(r * 1023 // 100)
    G.duty(g * 1023 // 100)
    B.duty(b * 1023 // 100)

dat_mau(DO_SANG_R, DO_SANG_G, DO_SANG_B)

while True:
    time.sleep_ms(500)

Hàm dat_mau gói gọn cả ba phép quy đổi phần trăm sang thang phần cứng. Từ đây trở đi, học sinh chỉ cần nghĩ bằng ba con số phần trăm — đúng cách người ta nghĩ về màu.

Biến thể — chạy qua bảy màu cầu vồng
# Bien the: chay qua bay mau cau vong
from machine import Pin, PWM
import time

R = PWM(Pin(25), freq=1000)
G = PWM(Pin(26), freq=1000)
B = PWM(Pin(27), freq=1000)

def dat_mau(r, g, b):
    R.duty(r * 1023 // 100)
    G.duty(g * 1023 // 100)
    B.duty(b * 1023 // 100)

CAU_VONG = (
    (100,   0,   0),   # do
    (100,  40,   0),   # cam
    (100, 100,   0),   # vang
    (  0, 100,   0),   # luc
    (  0,  60, 100),   # lam
    (  0,   0, 100),   # cham
    ( 60,   0, 100),   # tim
)

while True:
    for r, g, b in CAU_VONG:
        dat_mau(r, g, b)
        time.sleep_ms(600)

Bảng CAU_VONG là một danh sách các bộ ba. Vòng lặp duyệt qua từng bộ và giữ mỗi màu một khoảng. Đây là lần đầu trong lộ trình học sinh gặp cấu trúc dữ liệu dạng bảng, và nó xuất hiện một cách rất tự nhiên.

Em mô tả bằng tiếng Việt, hệ thống dựng thuật toán và chương trình, rồi nạp thẳng xuống ESP32 qua Wi-Fi.

06

Hiệu chuẩn và kiểm thử

Săn màu theo yêu cầu

Đây là phần thực hành thú vị nhất. Đưa cho mỗi nhóm một vật mẫu — một quả cam, một chiếc lá, một mẩu giấy màu — và yêu cầu pha cho ra đúng màu đó. Các nhóm sẽ mò từng con số, và đó chính là quá trình hiệu chuẩn bằng mắt.

Sau đó cho các em mở phần mềm vẽ trên máy tính, chọn đúng màu vật mẫu, đọc ba con số RGB trong khoảng 0–255 rồi quy đổi sang phần trăm. So hai bộ số: bộ mò bằng mắt và bộ máy tính đưa ra. Thường lệch, và bàn về vì sao lệch là một cuộc thảo luận rất đáng giá.

Danh sách kiểm trước khi coi là xong

  • Bước 0 cho ba kênh sáng đúng ba màu đỏ, lục, lam.
  • Đặt 100–100–0 ra màu vàng rõ ràng, không phải nâu.
  • Đặt 100–100–100 ra màu trắng hoặc gần trắng.
  • Đặt 0–0–0 thì đèn tắt hẳn.
  • Học sinh giải thích được vì sao ánh sáng cộng còn màu vẽ trừ.
07

Kinh nghiệm và cạm bẫy

Màu trắng gần như không bao giờ ra trắng ngay lần đầu

Đặt cả ba kênh 100 phần trăm, học sinh chờ màu trắng, nhưng thứ hiện ra thường ngả xanh lơ hoặc tím nhạt.

Lí do không nằm ở chương trình. Ba con LED bên trong có hiệu suất khác nhau — con lam thường sáng hơn hẳn con đỏ ở cùng dòng điện — và mắt người cũng nhạy với lục hơn hai màu kia. Muốn ra trắng thật phải hạ kênh lam xuống khoảng 60–75 và giữ đỏ, lục ở mức cao.

Đừng coi đây là lỗi cần giấu. Đó chính là cân bằng trắng, thứ mọi màn hình và máy ảnh đều phải làm, và học sinh vừa tự tay chạm vào nó.

Ba lỗi hay gặp
  • Đèn sáng ngược: đặt 0 thì sáng, đặt 100 thì tắt. Mua nhầm loại anode chung. Nối chân chung lên 3V3 và đảo lại phép tính duty.
  • Chỉ một kênh sáng, hai kênh kia im. Chân chung chưa cắm chắc, hoặc hai điện trở kia chưa nối tới GPIO.
  • Màu nhìn lem nhem, không ra màu nào rõ. Nhìn trực tiếp vào LED trần. Úp giấy can lên là khác hẳn.
Chỗ này cần một chuyện thật của chính thầy cô

Hai hộp trên viết từ quá trình dựng và chạy thử bài. Sau buổi dạy đầu tiên, xin thầy cô thay bằng tình huống đã thực sự xảy ra ở lớp mình.

08

Ứng dụng trong dạy học

Vật lí 11Công nghệ 12Tin họcMĩ thuật

Vật lí — tổng hợp ánh sáng nhìn thấy được

Sách giáo khoa nói ánh sáng trắng là tổng hợp của nhiều ánh sáng đơn sắc. Ở đây học sinh tự tay tổng hợp ra nó từ ba màu, và tự tay tách ra lại bằng cách tắt bớt kênh. Cặp thí nghiệm ngược nhau ấy làm khái niệm chắc hơn hẳn một hình vẽ.

Tin học — mã màu không còn là con số bí ẩn

Sau bài này, dãy số trong ô chọn màu của phần mềm vẽ không còn vô nghĩa. Cho học sinh viết mã màu của lá cờ Tổ quốc, của logo trường, rồi pha thử trên LED.

Bài học STEM 5 hoạt động — "Đèn báo tâm trạng góc học tập"

Hoạt động 1 — Xác định vấn đề. Cần một đèn nhỏ đổi màu để báo cho người nhà biết mình đang cần yên tĩnh, đang rảnh, hay đang cần giúp.

Tiêu chí sản phẩm: ba màu phân biệt được từ cửa phòng; một người chưa được giải thích trước phải đoán đúng ý nghĩa ít nhất hai trên ba màu; và màu phải dịu, không chói mắt khi học bài.

Hoạt động 2 — Kiến thức nền. Trộn màu cộng; PWM ba kênh; cảm nhận màu và độ sáng.

Hoạt động 3 — Đề xuất và chọn phương án. Nhóm phải chọn màu dựa trên quy ước quen thuộc chứ không tuỳ hứng — đỏ thường là dừng lại, lục là mời vào. Đây là chỗ bàn về thiết kế lấy người dùng làm trung tâm.

Hoạt động 4 — Chế tạo và thử. Pha ba màu, làm chụp tán sáng, thử ở khoảng cách thật.

Hoạt động 5 — Báo cáo và điều chỉnh. Mời nhóm khác đoán ý nghĩa từng màu. Đoán sai thì chọn lại màu, không được giải thích thêm.

Hướng mở rộng
  • Ghép ba biến trở của Bài 12 làm ba núm vặn màu — thành một bảng pha màu thật.
  • Ghép nút nhấn của Bài 2 để chuyển vòng qua các màu đã lưu.
  • Dùng dải LED địa chỉ để làm nhiều điểm ảnh thay vì một.
  • Hướng thi Khoa học kĩ thuật: đèn báo chất lượng không khí đổi màu theo mức bụi.