GIỚI THIỆU LÝ THUYẾT
Kích thước của biển led ma trận
Được tính bằng đơn vị pixel(số lượng mắt led) chứ không phải bằng đơn vị thông thường
Tùy theo yêu cầu của khách hàng mà kích thước của biển led ma trận sẽ khác nhau, có thể là 8×8, 8×16, 16×32,…
Trên thị trường hiện nay, các nhà sản xuất lớn đã cho ra mắt các sản phẩm LED ma trận được tích hợp sẵn dưới dạng module Những module này được thiết kế thành các tấm có khả năng nối lại với nhau, tạo thành các tấm lớn hơn, mang lại sự tiện lợi tối đa cho người sử dụng.
Ưu điểm của biển led ma trận
Chắc hẳn bạn đang thắc mắc tại sao biển led ma trận lại được sử dụng ưa chuộng vậy Bởi vì chúng có những ưu điểm vượt trội sau:
Biển quảng cáo này cho phép người dùng dễ dàng thay đổi nội dung khi cần thiết Chỉ cần sử dụng phần mềm kết nối với máy tính, bạn có thể cập nhật nội dung chữ một cách thuận tiện.
Biển LED ma trận được tạo thành từ nhiều tấm module kết hợp, cho phép điều chỉnh kích thước linh hoạt, phù hợp với mọi không gian quảng cáo.
Việc sử dụng nhiều hệ thống đèn LED trên biển quảng cáo không chỉ tạo ra hiệu ứng hấp dẫn cho người xem mà còn giúp hiển thị thông tin và hình ảnh của thương hiệu, sản phẩm một cách rõ ràng và ấn tượng hơn.
Mặc dù biển LED ma trận có nhiều ưu điểm, nhưng một nhược điểm đáng lưu ý là chi phí sản xuất cao Tuy nhiên, với những lợi ích mà chúng mang lại, mức giá này hoàn toàn hợp lý.
Kích thước module LED ma trận và ánh sáng của bóng LED
Kích thước phổ biến nhất của module biển LED ma trận hiện nay là 16x32cm, thường được biết đến với tên gọi module P10 Điều này xuất phát từ khoảng cách giữa các mắt LED là 1cm, dẫn đến việc module LED P10 có 16 cột và 32 hàng LED.
P10 là lựa chọn phổ biến cho biển LED vì độ phân giải cao hơn thường được gọi là màn hình LED Đối với biển quảng cáo ngoài trời hoặc hiển thị thông tin, việc sử dụng độ phân giải quá cao không cần thiết do chi phí và tính hiệu quả Một biển quảng cáo ma trận không cần phải có độ nét như màn hình với độ phân giải P2, P2.5, P3 hay P5.
Một số kích thước module khác kém phổ biến hơn như 8x8cm, 8x32cm, 8x16cm
Bóng LED trên module LED ma trận phát ra ánh sáng đơn sắc với các màu đỏ, vàng, trắng, xanh lá cây và xanh lam Trong khi đó, module LED 3 màu (RGB) có khả năng phát sáng đồng thời các màu đỏ, xanh lam và xanh lá cây Hiện nay, module LED full màu, cho phép phát ra nhiều màu sắc tùy theo lập trình, đã trở nên rất phổ biến.
Cấu tạo module LED ma trận 8×8
Hiểu nôm na, khi bạn yêu cầu làm biển LED ma trận, bạn có thể có các lựa chọn:
1 màu, 3 màu hoặc full màu
Khi sử dụng module LED, có hai loại chính: module LED ngoài trời và module LED trong nhà Module LED ngoài trời có độ bền cao, chịu được thời tiết khắc nghiệt như mưa nắng và thường có giá thành cao hơn Việc lựa chọn loại biển phù hợp hoàn toàn phụ thuộc vào nhu cầu thực tế của khách hàng để đảm bảo hiệu quả tối ưu.
Những lưu ý khi làm biển led ma trận
Để tạo ra một tấm biển hiệu quả, bạn cần chú ý đến các yếu tố quan trọng như chất lượng và khả năng thu hút khách hàng.
Vật liệu sử dụng cho biển quảng cáo đèn LED bao gồm mica hoặc Alu Đầu tiên, cần cắt và rạch các vật liệu một cách chính xác, sau đó tạo khung bảng hiệu theo kích thước thiết kế ban đầu Cuối cùng, ghép tấm cắt vào khung biển quảng cáo để đảm bảo không có phần thừa.
Màu sắc là yếu tố quan trọng trong việc thiết kế biển quảng cáo LED ma trận, giúp tạo nên sự thu hút và ấn tượng Việc kết hợp các màu sắc một cách hài hòa không chỉ nâng cao tính thẩm mỹ mà còn góp phần vào sự thành công của biển quảng cáo.
Nội dung của biển quảng cáo cần được làm nổi bật một cách rõ ràng, tránh việc sử dụng quá nhiều chữ hay gam màu không tương đồng, để đảm bảo sự thu hút và dễ đọc cho người xem.
Việc sử dụng các bóng đèn led sẽ dẫn đến tuổi thọ của biển rất cao
THIẾT BỊ VÀ GIẢI PHÁP CÔNG NGHỆ
Kit Node MCU Lua ESP8266
Chip ESP8266, do Espressif phát triển, cung cấp giải pháp giao tiếp Wifi cho thiết bị IoT Điểm nổi bật của ESP8266 là việc tích hợp các mạch RF như balun, công tắc anten, bộ khuếch đại công suất TX và bộ lọc RX ngay trong chip, với kích thước chỉ 5x5mm Nhờ đó, các board sử dụng ESP8266 có thể thiết kế nhỏ gọn mà không cần nhiều linh kiện xung quanh.
Hình 3.1: Module NodeMCU Lua ESP8266
Module phát Wifi ESP8266 NodeMCU Lua là một bộ phát triển dựa trên chip Wifi SoC ESP8266, nổi bật với thiết kế dễ sử dụng Nó cho phép lập trình và nạp code trực tiếp thông qua trình biên dịch Arduino, giúp đơn giản hóa quá trình phát triển ứng dụng trên ESP8266.
Module thu phát Wifi ESP8266 NodeMCU Lua là một kit phát triển dựa trên chip Wifi SoC ESP8266, được thiết kế thân thiện với người dùng Nó cho phép lập trình và nạp code trực tiếp thông qua trình biên dịch của Arduino, giúp việc phát triển các ứng dụng trên ESP8266 trở nên dễ dàng và thuận tiện hơn.
Hình 3.2: Sơ đồ nguyên lý kit NodeMCU
Module và Board phát triển của ESP8266
ESP8266 cần thêm linh kiện để hoạt động, trong đó anten là phần khó khăn nhất, yêu cầu sản xuất và kiểm tra bằng thiết bị hiện đại Vì vậy, nhiều module và board mạch phát triển đã ra đời, giúp người dùng dễ dàng hơn trong việc phát triển ứng dụng Một số module và board phát triển phổ biến hiện nay bao gồm:
Hiện nay phiên bản sử dụng phổ biến nhất là ESP8266 12E
Giới thiệu về module ESP 12E (Node MCU V3)
NodeMCU V1.0 được phát triển dựa trên Chip WiFi ESP8266EX bên trong Module ESP-12E dễ dàng kết nối WiFi với một vài thao tác Board còn tích hợp
IC CP2102 cho phép giao tiếp dễ dàng với máy tính qua cổng Micro USB, hỗ trợ quá trình thao tác với board Board còn được trang bị nút nhấn và đèn LED, tiện lợi cho việc học tập và nghiên cứu Với kích thước nhỏ gọn và tính linh hoạt, board dễ dàng kết nối với các thiết bị ngoại vi, giúp tạo ra các dự án và sản phẩm mẫu một cách nhanh chóng.
WiFi: 2.4 GHz hỗ trợ chuẩn 802.11 b/g/n
Điện áp vào: 5V thông qua cổng USB
Số chân I/O: 11 (tất cả các chân I/O đều có Interrupt/PWM/I2C/One-wire, trừ chân D0)
Số chân Analog Input: 1 (điện áp vào tối đa 3.3V)
Giao tiếp: Cable Micro USB
Hỗ trợ bảo mật: WPA/WPA2
Tích hợp giao thức TCP/IP
Lập trình trên các ngôn ngữ: C/C++, Micropython, NodeMCU – Lua
Sơ đồ chân GPIO và những lưu ý khi sử dụng Node MCU
Hình 3.6 Sơ đồ chân MODULE Node MCU
NodeMCU có 13 chân GPIO, mỗi chân có thể thực hiện nhiều chức năng khác nhau Tuy nhiên, một số chân được sử dụng cho những mục đích quan trọng khác, vì vậy cần lưu ý khi sử dụng chúng.
Tất cả các chân GPIO đều được trang bị trở kéo lên nguồn bên trong, ngoại trừ GPIO16, chân này có trở kéo xuống GND Người dùng có khả năng cấu hình để kích hoạt hoặc không kích hoạt các trở kéo này theo nhu cầu.
GPIO1 và GPIO3 được kết nối với TX và RX của bộ UART0 Vì NodeMCU sử dụng bộ UART này để nạp code, nên nên tránh sử dụng hai chân GPIO này để đảm bảo quá trình nạp code diễn ra suôn sẻ.
GPIO0, GPIO2, GPIO15 là các chân quan trọng trong việc cấu hình chế độ cho ESP8266, ảnh hưởng đến quá trình nạp code Trong NodeMCU, các chân này được gọi là strapping pins và được trang bị các trở kéo để xác định mức logic ban đầu Cụ thể, GPIO0 cần được thiết kế một nguyên lý riêng nhằm tránh xung đột trong quá trình nạp code.
GPIO9, GPIO10: hai chân này được dùng để giao tiếp với External Flash của ESP8266 vì vậy cũng không thể dùng được (đã test thực nghiệm).
Như vậy, các GPIO còn lại: GPIO 4, 5, 12, 13, 14, 16 có thể sử dụng bình thường.
Phần mềm IDE
Đây là phần mềm dùng để lập trình nạp code vô kit NodeMCU Lua ESP8266
3.5.1 Cấu trúc một chương trình trong phần mềm IDE:
Phần 1 : Khai báo biến Đây là phần khai báo kiểu biến, tên các biến, định nghĩa các chân trên board một số kiểu khai báo biến thông dụng:
Từ "define" có nghĩa là định nghĩa, và hàm #define được sử dụng để gán tên cho một chân hoặc ngõ ra cụ thể Ví dụ, #define led có thể được sử dụng để định danh một chân LED trong lập trình.
Chú ý: sau #define thì không có dấu “,” (dấy phẩy)
*Khai báo các kiểu biến khác như: int (kiểu số nguyên), float,…
Các chúng ta có thể tham khảo thêm các kiểu biến cũng như công dụng tại arduino.cc
Phần 2 : Thiết lập (void setup())
Phần này dùng để thiết lập cho chương trình, cần nhớ rõ cấu trúc của nó: void setup()
Cấu trúc của chương trình bắt buộc phải có dấu ngoặc nhọn ở đầu và cuối; nếu thiếu phần này, chương trình sẽ báo lỗi khi kiểm tra Phần này được sử dụng để thiết lập tốc độ truyền dữ liệu và xác định kiểu chân là chân ra hay chân vào.
Serial.begin(9600); Dùng để truyền dữ liệu từ board Arduino lên máy tính pinMode(biến, kiểu vào hoặc ra); Dùng để xác định kiểu chân là vào hay ra
Ví dụ: pinMode(ChanDO, INPUT);
Dùng để viết các lệnh trong chương trình để mạch Arduino thực hiện các nhiệm vụ mà chúng ta mong muốn, thường bắt đầu bằng: void loop()
Một số câu lệnh, cấu trúc thường gặp:
Dấu // được sử dụng để giải thích nội dung trên một dòng, giúp phần mềm kiểm tra chương trình bỏ qua phần này mà không thực hiện kiểm tra hay biên dịch.
#define: Dùng để định nghĩa một chân nào đó, hay gán biến tới 1 chân, địa chỉ ghi đọc tín hiệu Ví dụ: #define LED, 13
3.5.2 Hàm nhập xuất Digital I/O: a digitalWrite(): Miêu tả: Viết một giá trị HIGH hoặc một LOW cho một chân số của arduino
Khi chân được cấu hình là OUTPUT bằng cách sử dụng pinMode(), điện áp của chân sẽ được thiết lập tương ứng: 5V (hoặc 3.3V cho HIGH) và 0V cho LOW.
Khi chân được cấu hình là INPUT, hàm digitalWrite() có thể kích hoạt (HIGH) hoặc vô hiệu hóa (LOW) pullup nội bộ Do đó, cần thiết lập pinMode() thành INPUT_PULLUP để sử dụng điện trở kéo lên bên trong.
Cú pháp: digitalWrite(pin, value);
Thông số: pin: Số của chân digital mà bạn muốn thiết đặt value: HIGH hoặc LOW
Mã làm cho pin kỹ thuật số 13 OUTPUTvà chuyển đổi nó bằng cách luân phiên giữa HIGHvà LOWở tốc độ một giây
Ví dụ: int led ; void setup()
{ pinMode(led, OUTPUT); // led được nối với chân số 13
{ digitalWrite(led, HIGH); // bật led delay(1000); // dừng chương trình 1 giây digitalWrite(led, LOW); // tắt led delay(1000); // dừng chương trình 1 giây
Miêu tả: Đọc giá trị từ một Chân số đã được chỉ định, hoặc là HIGH hoặc LOW
Thông số: pin: số chân digital bạn muốn đọc
HIGH hoặc là LOW c pinMode():
Cấu hình 1 pin quy định hoạt động như là một đầu vào (INPUT) hoặc đầu ra (OUTPUT)
Cú pháp: pinMode(pin, mode)
Thông số: pin: số chân có chế độ bạn muốn thiết lập mode: INPUT, OUTPUT, Hoặc INPUT_PULLUP
{ pinMode (12, OUTPUT); // chân số 12 là đầu ra
{ digitalWrite (12, HIGH); delay(1000); digitalWrite (12, LOW); delay(1000);
3.5.3 Hàm nhập xuất Analog I/O: a analogRead()
Hàm analogRead() có nhiệm vụ đọc giá trị điện áp từ chân Analog (ADC) Board Node MCU trang bị 1 pin A0, trong khi các board khác như UNO R3 có 5 pin, Mini và Nano có 8 pin, và Mega có 16 pin Bộ chuyển đổi tương tự 10-bit sang số cho phép lập bản đồ điện áp đầu vào từ 0 đến 5 volts thành các số nguyên từ 0 đến 1023, tạo ra độ phân giải giữa các lần đọc là 5 volts chia cho 1024 đơn vị, tương đương 0,0049 volt (4,9 mV) cho mỗi đơn vị Dải đầu vào và độ phân giải có thể được điều chỉnh bằng cách sử dụng.
Hàm analogRead() cần 100 micro giây để thực hiện Khi người ta nói "đọc tín hiệu analog", bạn có thể hiểu đó chính là việc đọc giá trị điện áp
Cú pháp: analogRead (pin) ; b analogWrite()
Hàm analogWrite() trên mạch Arduino cho phép xuất tín hiệu analog thông qua các chân, thường được sử dụng để điều chỉnh độ sáng của đèn LED hoặc tốc độ động cơ Tín hiệu PWM có tần số khoảng 490 Hz trên hầu hết các chân, trong khi trên board Node MCU và các board tương tự, tần số này lên tới khoảng 980 Hz.
Trên mạch Arduino, bạn không cần sử dụng hàm pinMode() để thiết lập chế độ OUTPUT cho chân phát xung PWM Cú pháp để phát xung PWM là: analogWrite([chân phát xung PWM], [giá trị xung PWM]); trong đó, giá trị xung PWM nằm trong khoảng từ 0 đến 255.
0 đến 255, tương ứng với mức duty cycle từ 0% đến 100% Trả về
Ví dụ: Đoạn code dưới có chức năng làm sáng dần một đèn LED được kết nối vào chân số 2 trên mạch Arduino int led = 2; void setup() {}
Tạm dừng chương trình cho khoảng thời gian (tính bằng mili giây) được chỉ định là tham số (Có 1000 mili giây = 1 giây.)
Thông số ms: số mili giây để tạm dừng ( unsigned long)
Trả về: Không có ví dụ: int ledPin = 13; // LED pin 13 void setup()
{digitalWrite(ledPin, HIGH); delay(1000);digitalWrite(ledPin, LOW); delay(1000);
Lập trình ESP 12E bằng Arduino IDE
3.6.1 Giới thiệu Để bắt đầu với những dự án Wifi các bạn cần ESP8266 với giá thành rẻ, và dễ dàng sử dụng Đặc biệt ESP8266 12E có thể được lập trình bằng Arduino IDE Trước khi bắt đầu những chuỗi dự án với ESP8266, ở bài viết này, mình sẽ chia sẻ cách cài đặt Arduino
IDE để nạp code cho ESP8266
1 Module ESP8266 V12 hoặc V12E đã tích hợp sẵn mạch nạp
3.6.3 Cài đặt phần mềm arduino IDE và thư viện cho esp8266
Sau khi tải và cài đặt phần mềm Arduino IDE, bạn cần mở chương trình và cài đặt driver để phần mềm nhận diện module Driver có sẵn trong file cài đặt Tiếp theo, để cài đặt thư viện và nạp code cho IDE, hãy thực hiện các bước hướng dẫn sau.
Vào File→ Preferences, vào textbox Additional Board Manager URLs thêm đường link sau vào http://arduino.esp8266.com/stable/package_esp8266com_index.json
Click OK để chấp nhận
Tiếp theo vào Tool→Board→Boards Manager Đợi một lát để chương trình tìm kiếm Ta kéo xuống và click vào ESP8266 by
ESP8266 Community, click vào Install Chờ phần mềm tự động download và cài đặt
Kết nối mudule ESP8266 -12E vào máy tính Vào Tool→Board→NodeMCU 1.0,chọn cổng COM tương ứng với module tương ứng
Chọn chế độ nạp Arduino as ISP và chọn cổng COM cho đúng nhé.Vậy là ta đã có môi trường lập trình cho esp8266 rất thân thiện
Sau khi kết nối ESP8266 với máy tính, chúng ta sẽ kiểm tra mã code cho ESP8266 Mã code dưới đây sẽ điều khiển đèn LED trên board ESP8266 12E ở chân 13 (D7) sáng và tắt trong vòng 1 giây Cấu trúc mã bắt đầu với lệnh `void setup() { pinMode(LED_BUILTIN, OUTPUT);`.
} void loop() { digitalWrite(LED_BUILTIN, HIGH); // bật led sáng 1 giây delay(1000); // wait for asecond digitalWrite(LED_BUILTIN, LOW); // tắt led 1 giây delay(1000); // wait for a second
Từ ví dụ đơn giản ở trên ta có thể bắt tay vào lập trình cho NODE MCU để làm những dự dán IOT có ứng dụng cao.
Module led ma trận
Đèn LED bao gồm hai lớp bán dẫn chính, loại P và loại N, được đặt tiếp xúc với nhau Kích thước của các lớp bán dẫn này rất nhỏ, chỉ khoảng vài phần trăm milimet.
Công nghệ chế tạo đèn LED yêu cầu độ chính xác cao, với cấu tạo bên trong bao gồm lớp bán dẫn được phóng đại để dễ hình dung Việc nối điện cực cho các lớp bán dẫn rất khó khăn do kích thước nhỏ bé Vỏ bọc bên ngoài, thường làm bằng nhựa trong suốt hoặc có pha màu, không chỉ làm giá đỡ mà còn bảo vệ cấu trúc đèn, trong khi phần chóp cầu phía trên giúp hội tụ ánh sáng Cần lưu ý rằng nếu tác động lực quá mạnh vào chân điện cực, có thể gây hỏng cấu trúc và làm hỏng đèn LED.
Led matrix là một cấu trúc được tạo thành từ các đèn LED đơn sắc, được sắp xếp theo hàng và cột với khoảng cách quy định Việc tính số lượng bóng đèn LED trên một biển quảng cáo rất đơn giản.
Màn hình led ma trận có cấu trúc gồm nhiều cột và hàng, ví dụ như một màn hình 100 cột và 32 hàng sẽ có 3200 bóng đèn led Màn hình điện thoại đời thấp có 68 hàng và 98 cột, tương đương hơn 6664 bóng, trong khi màn hình full màu có tới 854 hàng và 480 cột, với hơn 409k bóng Những màn hình led full color hiện nay có khả năng trình chiếu video không thua kém bất kỳ loại màn hình nào khác, đặc biệt là khả năng sử dụng ngoài trời với độ sáng mạnh và rõ nét Thị trường hiện nay có nhiều loại led ma trận phục vụ cho ngành quảng cáo, bao gồm led đơn sắc, đa sắc, full color, với các độ phân giải cao và thấp, cũng như loại dành cho trong nhà và ngoài trời.
Bóng LED loại 1 có nhiều màu sắc như đỏ, xanh, vàng, trong khi ma trận LED đa sắc cho phép mỗi điểm ảnh chứa 2 hoặc 3 bóng LED với màu khác nhau, tạo ra sự pha trộn màu sắc Chẳng hạn, khi màu xanh và đỏ được đặt gần nhau, mắt người sẽ cảm nhận được màu vàng Đối với LED full color, mỗi điểm ảnh bao gồm ba màu cơ bản: đỏ, lục, và lam, giúp tạo ra hàng triệu màu sắc khác nhau khi pha trộn Hiện nay, các ma trận LED được sản xuất thành các modul với kích thước tiêu chuẩn và có nhiều loại modul khác nhau trên thị trường, như modul LED đơn sắc P10 với cấu trúc 16 hàng.
32 cột Khoảng cách điểm ảnh của Module P10 là 10mm Do vậy Module P10 có kích thước là 16x32cm
3.7.3 Giới thiệu module led ma trận 7219
Module này bao gồm 4 Led Matrix 8x8, mỗi matrix được điều khiển bởi một IC MAX7219, tương tự như IC 74HC595 Bốn IC MAX7219 được kết nối theo dạng nối tiếp và giao tiếp qua chuẩn SPI, giúp tiết kiệm chân kết nối cho vi điều khiển, chỉ cần sử dụng 3 chân IC MAX7219 còn tích hợp Static RAM 8x8, giúp hiển thị mượt mà hơn và cho phép mở rộng bằng cách nối tiếp thêm các mạch Led Matrix 8x8 MAX7219.
4 Led Matrix 8x8 (Cathode chung) , 4 IC MAX7219
Điện áp sử dụng: 5VDC
Mạch hiển thị 4 Led ma trận MAX7219 sử dụng ngõ vào tín hiệu nối tiếp và ghi dịch chuyển tín hiệu, chỉ cần 3 GPIO để điều khiển Mạch này có khả năng nối tiếp thêm nhiều mạch qua cổng nối tiếp, giúp dễ dàng mở rộng.
DIN: là chân truyền dữ liệu từ vi điều khiển đến Max7219 (chân MOSI của vi điều khiển)
CLK: là chân cấp xung nhịp hoạt động cho Max7219 được nối với chân SCK của vi điều khiển
CS: là chân lựa chọn hoạt động, chân này nối với bất kì một chân I/O nào của vi điều khiển
VCC: là chân cấp nguồn: sử dụng nguồn 5VDC
GND: kết nối với chân GND của vi điều khiển.
NỘI DUNG THỰC HIỆN VÀ MÔ HÌNH
Điều khiển LED ma trận Max7219 với module WIFI NodeMCU
Lập trình chạy chữ led ma trận Max7219 sử dụng module Wifi
Phần mềm cần chuẩn bị
Cài đặt phần mềm arduino IDE
Phần cứng cần chuẩn bị:
1 module led ma trận Max7219 (32x8) Hình 4.1 ảnh thực tế mô hình
Hình 4.2 Sơ đồ lắp mạch
#include const char* ssid = "PHI QUANG"; // Thay đôi tên wifi const char* password = "88888888"; // Thay đổi pass wifi
// TCP server at port 80 will respond to HTTP requests
WiFiServer server(80); const uint8_t LEDMATRIX_CS_PIN = 15;
// Define LED Matrix dimensions (0-n) - eg: 32x8 = 31x7 const int LEDMATRIX_WIDTH = 31; const int LEDMATRIX_HEIGHT = 7; const int LEDMATRIX_SEGMENTS = 4;
LEDMatrixDriver lmd(LEDMATRIX_SEGMENTS, LEDMATRIX_CS_PIN); void displayText ( char * theText)
{ if ( myTime + ANIM_DELAY < millis())
// Draw the text to the current position drawString(theText, len, x, 0);
// In case you wonder why we don't have to call lmd.clear() in every loop: The font has a opaque (black) background
// Toggle display of the new framebuffer lmd.display();
// Advance to next coordinate if( x < len * -8 )
* This function draws a string of the given length to the given position
*/ void drawString(char* text, int len, int x, int y )
{ for( int idx = 0; idx < len; idx ++ )
// stop if char is outside visible area if( x + idx * 8 > LEDMATRIX_WIDTH ) return;
// only draw if char is visible if( 8 + x + idx * 8 > 0 ) drawSprite( font[c], x + idx * 8, y, 8, 8 );
* This draws a sprite to the given position using the width and height supplied (usually 8x8)
*/ void drawSprite( byte* sprite, int x, int y, int width, int height )
// The mask is used to get the column bit from the sprite row byte mask = B10000000; for( int iy = 0; iy < height; iy++ )
{ for( int ix = 0; ix < width; ix++ )
//Yes my font is backwards so I swap it around
//lmd.setPixel(x + ix, y + iy, (bool)(sprite[iy] & mask )); lmd.setPixel(x + (width - ix), y + iy, (bool)(sprite[iy] & mask ));
// shift the mask by one pixel to the right mask = mask >> 1;
Sau khi nạp code chương trình cho NodeMCU thì trên màn hình led sẽ xuất hiện địa chỉ IP, ví dụ : 192.168.1.70
Khi sở hữu địa chỉ IP, bạn có thể sử dụng máy tính hoặc điện thoại để truy cập và điều khiển dòng chữ hiển thị trên ma trận LED.
Vận hành
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI
5.1.1 Những mặt đã làm được
Mạch điện được thiết kế với các module nhỏ đã hoàn chỉnh và thi công kỹ lưỡng, trải qua nhiều lần thử nghiệm để đảm bảo hoạt động ổn định trong thực tế.
- Nội dung hiển thị sinh động và dễ dàng tùy biến qua điện thoại
5.1.2 Những hạn chế, tồn tại
- Tốn nhiều dây dẫn để kết nối ngoại vi
- Code lập trình còn hạn chế vì chưa hiển thị được dấu trong tiếng việt
- Mạch điều khiển vẫn chưa có thể sử dụng được nguồn 220 V trực tiếp mà vẫn phài sử dụng nguồn riêng để cung cấp cho mạch
5.2 Hướng phát triển đề tài
- Khắc phục các hạn chế, tồn tại của hệ thống
- Tự phát triển app Android, IOS để điều khiển hiển thị qua wifi
- Sử dụng các module đóng gói chuẩn hóa của như tấm led P5, P10 để làm biển quảng cáo có kích thước lớn hơn.