Chúng tôi đã tạo một loạt các Hướng dẫn về Raspberry Pi, trong đó chúng tôi đã đề cập đến Giao diện của Raspberry Pi với tất cả các thành phần cơ bản như LED, LCD, nút bấm, động cơ DC, Động cơ Servo, Động cơ bước, ADC, thanh ghi dịch chuyển, v.v. Chúng tôi cũng có đã xuất bản một số dự án Raspberry Pi đơn giản cho người mới bắt đầu, cùng với một số dự án IoT tốt. Hôm nay, để tiếp nối các hướng dẫn này, chúng ta sẽ điều khiển Mô-đun ma trận LED 8x8 bằng Raspberry Pi. Chúng tôi sẽ viết một chương trình python để hiển thị các ký tự trên mô-đun ma trận.
Đồng thời kiểm tra Ma trận LED giao tiếp 8x8 với Arduino và Ma trận LED với Vi điều khiển AVR.
Các thành phần bắt buộc:
Ở đây chúng tôi đang sử dụng Raspberry Pi 2 Model B với Hệ điều hành Raspbian Jessie. Tất cả các yêu cầu cơ bản về Phần cứng và Phần mềm đã được thảo luận trước đây, bạn có thể tra cứu nó trong phần Giới thiệu Raspberry Pi và Nhấp nháy đèn LED Raspberry PI để bắt đầu, ngoài những điều chúng tôi cần:
- Bảng Raspberry Pi
- Nguồn điện (5v)
- Tụ điện 1000uF (kết nối qua nguồn điện)
- Điện trở 1KΩ (8 miếng)
Mô-đun ma trận LED 8x8:
Mô-đun ma trận LED 8 * 8 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. Các mô-đun nhỏ gọn này có nhiều kích cỡ và nhiều màu sắc khác nhau. Người ta có thể chọn chúng một cách thuận tiện. Cấu hình mã PIN của mô-đun như trong hình. Hãy nhớ rằng, các sơ đồ chân của mô-đun không theo thứ tự vì vậy các mã PIN phải được đánh số chính xác như trong hình để tránh lỗi.
Có 8 + 8 = 16 đầu cuối chung trong mô-đun Ma trận LED. Trên chúng, chúng ta có 8 đầu cuối dương chung và 8 đầu cuối âm chung, ở dạng 8 hàng và 8 cột, để kết nối 64 LED ở dạng ma trận. Nếu mô-đun được vẽ dưới dạng sơ đồ mạch, chúng ta sẽ có một hình ảnh như bên dưới:
Vì vậy, đối với 8 hàng, chúng ta có 8 đầu cuối tích cực chung (9, 14, 8, 12, 17, 2, 5). Hãy xem xét hàng đầu tiên, các đèn LED từ D1 đến D8 có một cực dương chung và chân được đưa ra tại PIN9 của mô-đun LED Ma trận. Khi chúng ta muốn một hoặc tất cả các đèn LED trong ROW BẬT, chân tương ứng của MÔ ĐUN LED phải được cấp nguồn + 3.3v.
Tương tự như các thiết bị đầu cuối tích cực thông thường, chúng ta có 8 đầu cuối cực âm chung là cột (13, 3, 4, 10, 6, 11, 15, 16). Để nối đất bất kỳ đèn LED nào trong bất kỳ cột nào, đầu nối âm chung tương ứng sẽ được nối đất.
Giải thích mạch:
Các kết nối được thực hiện giữa Raspberry Pi và mô-đun ma trận LED được hiển thị trong bảng dưới đây.
Số pin mô-đun ma trận LED. |
Chức năng |
Số pin GPIO của Raspberry Pi |
13 |
TÍCH CỰC0 |
GPIO12 |
3 |
TÍCH CỰC1 |
GPIO22 |
4 |
TÍCH CỰC2 |
GPIO27 |
10 |
TÍCH CỰC3 |
GPIO25 |
6 |
TÍCH CỰC4 |
GPIO17 |
11 |
TÍCH CỰC5 |
GPIO24 |
15 |
TÍCH CỰC6 |
GPIO23 |
16 |
TÍCH CỰC7 |
GPIO18 |
9 |
TIÊU CỰC0 |
GPIO21 |
14 |
TIÊU CỰC1 |
GPIO20 |
số 8 |
NEGATIVE2 |
GPIO26 |
12 |
TIÊU CỰC3 |
GPIO16 |
1 |
TIÊU CỰC4 |
GPIO19 |
7 |
TIÊU CỰC5 |
GPIO13 |
2 |
TIÊU CỰC6 |
GPIO6 |
5 |
TIÊU CỰC7 |
GPIO5 |
Đây là sơ đồ mạch cuối cùng cho Ma trận LED giao tiếp 8x8 với Raspberry Pi:
Giải thích làm việc:
Ở đây chúng tôi sẽ sử dụng Kỹ thuật ghép kênh để hiển thị các ký tự trên Mô-đun ma trận LED 8x8. Vì vậy, hãy thảo luận chi tiết về việc ghép kênh này. Giả sử nếu chúng ta muốn bật LED D10 trong ma trận, chúng ta cần cấp nguồn cho PIN14 của mô-đun và nối đất PIN3 của mô-đun. Với đèn LED D10 này sẽ BẬT như hình bên dưới. Điều này cũng nên được kiểm tra trước cho MATRIX để biết mọi thứ đều theo thứ tự.
Bây giờ, giả sử nếu chúng ta muốn bật D1, chúng ta cần cấp nguồn PIN9 của ma trận và nối đất PIN13. Với đó đèn LED D1 sẽ phát sáng. Hướng hiện tại trong trường hợp này được hiển thị trong hình dưới đây.
Bây giờ đối với phần phức tạp, hãy xem xét chúng tôi muốn bật cả D1 và D10 cùng một lúc. Vì vậy chúng ta nên cấp nguồn cho cả PIN9, PIN14 và nối đất cho cả PIN13, PIN3. Điều này sẽ bật LED D1 và D10, nhưng cùng với đó, nó cũng sẽ bật LED D2 và D9. Đó là bởi vì họ chia sẻ các thiết bị đầu cuối chung. Vì vậy, nếu chúng ta muốn bật các đèn LED dọc theo đường chéo, chúng ta sẽ buộc phải BẬT tất cả các đèn LED trên đường đi. Điều này được thể hiện trong hình dưới đây:
Để tránh vấn đề này, chúng tôi sử dụng một kỹ thuật gọi là Ghép kênh. Chúng tôi cũng đã thảo luận về Kỹ thuật ghép kênh này khi giao tiếp Ma trận LED 8x8 với AVR, ở đây chúng tôi xin giải thích lại. Kỹ thuật ghép kênh tương tự này cũng được sử dụng trong văn bản cuộn trên ma trận LED 8x8 với Arduino và với vi điều khiển AVR.
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 LED D1 và LED D10 mà không bật D2 và D9. Thủ thuật là, trước tiên chúng tôi sẽ cung cấp nguồn điện cho chỉ LED D1 bằng PIN 9 & 13 và đợi trong 1mSEC, sau đó chúng tôi sẽ TẮT nó. Sau đó, chúng tôi sẽ cung cấp nguồn cho LED D10 bằng PIN 14 & 3 và đợi 1mSEC sau đó sẽ TẮT nó. Chu kỳ diễn ra liên tục với tần số cao và D1 & D10 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 (LED) tại một thời điểm, loại bỏ khả năng 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ự.
Chúng ta có thể hiểu sâu hơn về nó bằng một ví dụ, chẳng hạn như nếu chúng ta muốn hiển thị “A” trên ma trận, như hình dưới đây:
Như đã nói, chúng tôi sẽ BẬT một hàng ngay lập tức, Tại t = 0 phút GIÂY, PIN09 được đặt CAO (các chân ROW khác tại thời điểm này THẤP) tại thời điểm này, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15 được nối đất (các chân COLUMN khác ở mức CAO tại thời điểm này)
Tại t = 1m GIÂY, PIN14 được đặt CAO (các chân ROW khác tại thời điểm này THẤP) tại thời điểm này, PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 được nối đất (các chân CỘT khác lúc này là CAO)
Tại t = 2m GIÂY, PIN08 được đặt CAO (các chân ROW khác tại thời điểm này THẤP) tại thời điểm này, PIN13, PIN3, PIN15, PIN16 được nối đất (các chân COLUMN khác ở mức CAO tại thời điểm này)
Tại t = 3m GIÂY, PIN12 được đặt CAO (các chân ROW khác tại thời điểm này THẤP) tại thời điểm này, PIN13, PIN3, PIN15, PIN16 được nối đất (các chân COLUMN khác ở mức CAO tại thời điểm này)
Tại t = 4 phút GIÂY, PIN01 được đặt CAO (các chân ROW khác tại thời điểm này THẤP) tại thời điểm này, PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 được nối đất (các chân CỘT khác lúc này là CAO)
Tại t = 5m GIÂY, PIN07 được đặt CAO (các chân ROW khác tại thời điểm này THẤP) tại thời điểm này, PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 được nối đất (các chân CỘT khác lúc này là CAO)
Tại t = 6m GIÂY, PIN02 được đặt CAO (các chân ROW khác tại thời điểm này THẤP) tại thời điểm này, PIN13, PIN3, PIN15, PIN16 được nối đất (các chân COLUMN khác ở mức CAO tại thời điểm này)
Tại t = 7 phút GIÂY, PIN05 được đặt CAO (các chân ROW khác tại thời điểm này THẤP) tại thời điểm này, PIN13, PIN3, PIN15, PIN16 được nối đất (các chân COLUMN khác ở mức CAO tại thời điểm này)
Ở tốc độ này, màn hình sẽ hiển thị liên tục ký tự “A” như trong hình.
Các Chương trình Python cho thấy nhân vật trên LED Matrix sử dụng Raspberry Pi được đưa ra dưới đây. Chương trình được giải thích tốt bởi các bình luận. Giá trị cổng cho mỗi ký tự được đưa ra trong chương trình. Bạn có thể hiển thị bất kỳ ký tự nào bạn muốn bằng cách chỉ cần thay đổi các giá trị 'pinp' trong 'vòng lặp for' trong chương trình nhất định. Cũng kiểm tra Video giới thiệu bên dưới.