Tìm hiểu module LED ma trận P10 Full Color – lập trình led matrix full color

led ma tran p10

Hôm nay chúng ta sẽ khám phá module LED ma trận P10 Full Color và tìm hiểu cách lập trình LED ma trận P10 Full Color.

Module LED ma trận P10 Full Color 32×16 bao gồm 32 LED theo chiều ngang và 16 LED theo chiều dọc. Mỗi LED bên trong module có 3 đèn LED với 3 màu RGB, và mỗi pixel cách nhau 1cm. Tổng số LED RGB là 32×16=512 LED RGB.

Chức năng của các chân

  • R1: Chân data cho màu đỏ của 8 hàng LED phía trên
  • R2: Chân data cho màu đỏ của 8 hàng LED phía dưới
  • G1: Chân data cho màu xanh lá của 8 hàng LED phía trên
  • G2: Chân data cho màu xanh lá của 8 hàng LED phía dưới
  • B1: Chân data cho màu xanh dương của 8 hàng LED phía trên
  • B2: Chân data cho màu xanh dương của 8 hàng LED phía dưới
  • CLK: Chân đẩy data vào ic ghi dịch
  • LAT: Chân chốt data (đẩy data lưu trong ic ghi dịch ra ngoài LED)
  • OE: Chân cho phép bảng LED sáng (OE=0 thì bảng LED được phép sáng, OE=1 thì bảng LED tự động tắt)
  • A,B,C: 3 chân của ic vào 3 ra 8, tức 3 chân dùng để quét LED và cho phép hàng nào sáng. Với 3 chân ABC ta có thể điều khiển 8 hàng độc lập, nhưng module P10 có tới 16 hàng => trong 1 thời điểm có 2 hàng cùng sáng => module này quét kiểu 2/16 = 1/8 => Trong 1 thời điểm số LED RGB ta có thể điều khiển là 512 x 1/8 = 64 LED RGB.

Chiều đi của data

Với P10 1 màu, data đi theo chiều zigzac, còn P10 Full, data đi theo đường thẳng.

Các bạn có thể thấy, module này được chia làm 2 nửa theo chiều ngang, với dữ liệu của 8 hàng trên do RGB1 quyết định, còn 8 hàng dưới do RGB2 quyết định. Chân ABC sẽ quyết định hàng nào trong 8 hàng của cả 2 nửa được sáng.

Trong 1 thời điểm sẽ có 2 hàng được phép sáng (do ABC quyết định)

Demo điều khiển LED ma trận P10 7 màu (màu 1bit)

Tương tự như P10, mình sẽ tạo một mảng 2 chiều với 1bit là 1 LED. Tuy nhiên, mỗi LED có đến 3 màu RGB nên mình sẽ thêm 1 chiều màu nữa. Chương trình truyền data có thể viết như sau:

// Chương trình chọn hàng cần sáng

// Chương trình bỏ trong ngắt timer

Công việc của bạn là xây dựng lại trên con vi điều khiển mà các bạn đang sử dụng, và đó là xong lớp dưới! Bây giờ hãy xây dựng một số hàm đồ họa để thao tác trên buffer.

Vẫn là hàm set_px cơ bản. Ví dụ gọi:

Kết quả

Hiển thị chữ

Trong bài viết số 4, mình đã tạo sẵn một bộ font và hàm để vẽ font lên LED. Bây giờ chúng ta sẽ sửa lại hàm này một chút bằng cách thêm tham số color.

Giờ hãy thử in chữ “A” ra màn hình và sửa lại thành màu hồng.

Tiếp tục thêm hàm gửi cả chuỗi. Tiếp tục, bây giờ mình muốn mỗi chữ in ra có một màu khác nhau thì sao nhỉ? Cách làm của mình là khi truyền vào chuỗi, mình sẽ truyền thêm một mảng chứa các màu chứ không chỉ một màu duy nhất!

Chúng ta có thể gọi hàm này như sau:

// Gọi hàm

Thật tuyệt vời phải không? Mình đã tìm mãi mới được một tấm P10 để demo cho các bạn xem. Nếu bạn thấy hay, tại sao không nhấn nút “Like” để ủng hộ mình?

Xem đầy đủ chuỗi bài hướng dẫn lập trình LED ma trận full color tại đây.

Tham khảo project sử dụng P10 làm đồng hồ LED của mình tại đây.