Trong hướng dẫn này, chúng ta sẽ thiết kế Màn hình cuộn ma trận LED 8x8 bằng Arduino Uno, sẽ hiển thị các bảng chữ cái cuộn.
Ma trận LED 8x8 chứa 64 LED (Điốt phát sáng) được sắp xếp dưới dạng ma trận, do đó có tên là LED ma trận. Chúng tôi sẽ tạo ra Ma trận này bằng cách hàn 64 đèn LED này vào bảng điều khiển perfboard hoặc DOT PCB. Đèn LED có thể có bất kỳ màu nào, hãy chọn những màu có sẵn với bạn. Sau đó, chúng ta sẽ viết một chương trình cho Arduino để điều khiển ma trận 64 LED này. UNO, theo chương trình, cấp nguồn cho các đèn LED thích hợp để hiển thị các ký tự theo kiểu cuộn.
Các thành phần bắt buộc:
- Arduino Uno
- 64 đèn LED
- Bảng đục lỗ với các công cụ hàn khác
- Điện trở 1KΩ (8 miếng)
- Nguồn điện (5v)
Giải thích mạch và làm việc:
Có 64 đèn LED được sắp xếp theo dạng ma trận. Vì vậy, chúng tôi có 8 cột và 8 hàng. Trên các hàng và cột đó, tất cả các đầu cuối tích cực trong một hàng được tập hợp lại với nhau. Đối với mỗi hàng, có một Đầu nối cực dương chung cho tất cả 8 đèn LED trong hàng đó. Nó được hiển thị trong hình dưới đây,
Vì vậy, đối với 8 hàng, chúng ta có 8 thiết bị đầu cuối tích cực chung. Hãy xem xét hàng đầu tiên, như trong hình, 8 đèn LED từ D57 đến D64 có một cực dương chung và được ký hiệu là 'POSITIVE0'. Bây giờ nếu chúng ta muốn phát sáng một hoặc tất cả các đèn LED trong ROW đầu tiên của ma trận, thì chúng ta nên cấp nguồn PIN0 của Ma trận LED. Tương tự như vậy nếu chúng ta muốn phát sáng bất kỳ đèn LED nào (hoặc tất cả) trong bất kỳ ROW nào thì chúng ta cần cấp nguồn cho Chân đầu cuối tích cực chung tương ứng của Hàng tương ứng đó.
Điều này vẫn chưa kết thúc và chỉ để lại MATRIX ROWS với nguồn cung dương sẽ không mang lại kết quả gì. Chúng ta cần nối đất âm bản của đèn LED để phát sáng chúng. Vì vậy, trong ma trận LED 8x8, tất cả các đầu cực âm của các đèn LED trong bất kỳ cột nào được tập hợp lại với nhau để tạo thành 8 Đầu cuối âm chung, giống như tất cả các đầu cuối âm trong cột đầu tiên được kết nối với nhau với PIN-A1 (NEGATIVE7). Điều này được thể hiện trong hình dưới đây:
Người ta nên chú ý đến các chân này trong khi hàn các đèn LED trên Perfboard.
Bây giờ nếu chúng ta cần nối đất bất kỳ đèn LED nào trong cột đầu tiên thì chúng ta sẽ nối đất cho PIN-A1 (NEGATIVE7) của MATRIX và nó sẽ nối đất tất cả các đèn LED trong cột đầu tiên. Quá trình tương tự cũng xảy ra đối với tất cả bảy cột phủ định phổ biến khác.
Kể từ bây giờ bạn đã biết cách hoạt động của Tích cực chung và Phủ định chung. Hãy ghép chúng lại với nhau để xem chúng hoạt động cùng nhau như thế nào và Mạch cuối cùng cho màn hình LED Matrix 8x8 cuộn sẽ trông như thế này:
Lái xe Ma trận LED 8x8 sử dụng Ghép kênh:
Bây giờ giả sử chúng ta muốn BẬT LED57 thì chúng ta cần cấp nguồn PIN0 của UNO và nối đất PIN-8 của UNO. Bây giờ để bật cả LED57 và LED50, chúng ta cần cấp nguồn PIN0, PIN1 và nối đất PIN8, PIN9. Nhưng làm như vậy sẽ không chỉ bật D57, D50 mà cả D49, D58. Để tránh điều đó, chúng tôi sử dụng một kỹ thuật gọi là Ghép kênh. Chúng ta đã thảo luận chi tiết về Kỹ thuật ghép kênh này trong Ma trận LED 8x8; đi qua bài viết đó để giải thích chi tiết. Ở đây chúng tôi giải thích ngắn gọn về Ghép kênh.
Mắt người không thể bắt được tần số quá 30 HZ. Đó là nếu đèn LED BẬT và TẮT liên tục ở tốc độ 30HZ trở lên. Mắt thấy đèn LED liên tục ON. Tuy nhiên đây không phải là trường hợp và đèn LED sẽ thực sự BẬT và TẮT liên tục. Kỹ thuật này được gọi là Multiplexing.
Ví dụ: chúng ta muốn chỉ bật LED57 và LED50 mà không bật D49 và D58. Thủ thuật là, trước tiên chúng ta sẽ cung cấp nguồn cho hàng đầu tiên để BẬT LED57 và đợi 1mSEC, sau đó chúng ta sẽ TẮT nó. Sau đó, chúng tôi sẽ cung cấp nguồn cho hàng thứ hai để bật LED50 và đợi trong 1mSEC sau đó sẽ TẮT nó. Chu kỳ diễn ra liên tục với tần số cao và LED57 & LED50 sẽ Bật và Tắt nhanh chóng và cả hai đèn LED sẽ liên tục BẬT đối với mắt chúng ta. Có nghĩa là chúng tôi chỉ cung cấp điện cho một hàng tại một thời điểm, loại bỏ cơ hội bật các đèn LED khác ở các hàng khác. Chúng tôi sẽ sử dụng kỹ thuật này để hiển thị tất cả các ký tự.
Ngoài ra còn có một thư viện tên là LedControlMS.h để xử lý tất cả sự phức tạp này của việc ghép kênh, nơi bạn chỉ cần nhập ký tự hoặc số mà bạn muốn in trên ma trận LED, hãy kiểm tra ma trận Arduino LED này với dự án MAX7219 để biết thêm chi tiết.
Giải thích lập trình:
Trong Mã của chúng tôi, chúng tôi đã viết giá trị thập phân cho mỗi ký tự và lập trình các giá trị này vào Arduino. Chương trình đã viết để chuyển các giá trị này sang hàng tiếp theo sau mỗi 0,2 giây, điều này sẽ được xem như cuộn các ký tự lên trên, rất đơn giản.
Để thay đổi các ký tự được hiển thị, chỉ cần thay thế giá trị trong mảng char ALPHA theo các giá trị ký tự được cung cấp bên dưới, 24,60.102,126.102.102.102.0,0,0, // A 124.102.102.124.102.102.124.0,0,0, // B 60.102,96,96,96.102.60,0 0,0, // C 120.108.102.102.102.108.120,0, 0,0 // D 126,96,96,120,96,96,126,0, 0,0, // E 126,96,96,120,96,96,96,0, 0,0, // F 60,102,96,110,102.102,60, 0, 0,0, // G 102,102.102,126,102.102.102,0, 0,0, // H 60,24,24,24,24,24,60,0, 0,0, // I 30,12,12,12, 12,108,56,0, 0,0, // J 102.108,120,112,120.108.102,0, 0,0, // K 96,96,96,96,96,96,126,0, 0,0, // L 99,119,127,107,99, 99,99,0, 0,0, // M 102,118,126,126,110,102.102,0, 0,0, // N 60,102.102,102.102.102.60,0, 0,0, // O 124.102.102,124,96,96,96,0, 0,0 // P 60.102.102.102.102.60,14,0, 0,0, // Q 124.102.102,124,120.108.102,0, 0,0, // R 60.102,96,60,6.102.60,0 0,0, // S 126 24,24,24,24,24,24,0 0,0, // T 102,102,102,102,102,102,60,0, 0,0, // U 102,102,102,102,102,60,24,0, 0,0, // V 99,99,99.107,127,119,99,0, 0,0, // W 102,102,60,24,60,102.102,0, 0,0, // X 102,102.102,60,24,24,24,0, 0,0, // Y 126,6,12, 24,48,96,126,0, 0,0, // Z
Giống như nếu bạn muốn hiển thị DAD trên Ma trận LED thì trước tiên hãy thay thế các giá trị Ký tự trong mảng char ALPHA bằng cách đặt các giá trị cho các ký tự D, A và D từ danh sách trên:
char ALPHA = {0,0,0.0,0,0,0,02,102,108,102,102,102,108,120,0,0,0, 24,60,102,126,102,102,102,0,0,0, 120,108,102,102,102,108,120,0,0, 0, 0,0,0,0,0,0,0,0,0,0,0};
Tổng giá trị hiện là 5 * 10 = 50 giá trị, vì vậy
Thay thế, for (int x = 0; x <142; x ++) // 150-8 (để dừng tràn) {…….. Với, for (int x = 0; x <42; x ++) // 50-8 (để ngăn tràn) {……..
Vì vậy, bạn chỉ cần thay đổi số.
Với điều này, bạn đã lập trình xong và bây giờ bạn có thể Cuộn bất kỳ văn bản nào trên Ma trận LED 8x8, hãy kiểm tra Mã đầy đủ bên dưới với một Video trình diễn.