Arduino: Ma trận LED với trình điều khiển max7219. Cách thêm phông chữ bổ sung vào trang đích trong LPgenerator

Ngày 13 tháng 1 năm 2017 lúc 6:15 chiều

Nga hóa thư viện openGLCD cho Arduino

  • Điện tử cho người mới bắt đầu

Việc viết văn bản tiếng Nga trên màn hình đồ họa bằng bộ điều khiển ks0108 hoặc các bộ điều khiển tương tự của nó vẫn gặp khó khăn đáng kể. Thư viện openGLCD, được các trang web chính thức của Arduino khuyên dùng, trong cấu hình ban đầu của phiên bản sau trên khoảnh khắc này phiên bản không chứa bất kỳ Phông chữ Cyrillic, ngoại trừ phông chữ cp437font8x8. Trong thực tế, nó ít được sử dụng vì ở phần tiếng Nga, nó hỗ trợ mã hóa Win-1251. Vì vậy, để hiển thị được các ký tự thuộc phông chữ này, chúng phải được chèn vào văn bản dưới dạng bát phân hoặc mã thập lục phân(đồng thời vẫn còn sự mơ hồ với chữ cái thường“Tôi”, như chính người tạo ra phông chữ đã chỉ ra trong phần bình luận), hoặc vẫn viết nó chức năng riêng biệt mã hóa lại, như arduinec đã làm cho thư viện Adafruit-GFX.

Trong số những thứ khác, cp437font8x8 quá lớn đối với màn hình 128x64 pixel. Kích thước tối ưu Phông chữ hỗ trợ nhãn trên màn hình như vậy vẫn là System5x7. Ở đây chúng ta sẽ tập trung cụ thể vào việc Nga hóa phông chữ hệ thống, mặc dù người đọc có thể sử dụng ví dụ này để Nga hóa một cách độc lập bất kỳ phông chữ nào khác (đặc biệt nếu nó có màn hình lớn hơn).

Vấn đề là gì?

Đầu tiên chúng ta hãy đi sâu vào gốc rễ của vấn đề. môi trường Arduino IDE là một văn bản đơn giản Trình chỉnh sửa Windows, hoạt động ở dạng mã hóa UTF-8 phổ biến, giống như bất kỳ mã hóa nào khác trong phiên bản hiện đại Windows (ví dụ Notepad). UTF-8 là phiên bản giá rẻ của multibyte mã hóa UNICODE. Trong UTF-8, các ký tự tiếng Anh, số, dấu chấm, dấu phẩy, dấu ngoặc đơn và tất cả các loại ký tự khác được biểu thị bằng một byte, khớp với mã hóa ASCII tiêu chuẩn. Do đó, việc biểu diễn chúng trong mã phác thảo không gặp bất kỳ khó khăn nào: một chuỗi ký tự tiếng Anh sau khi biên dịch được chuyển sang tệp hex đã tải mà không thay đổi và có thể hiểu được đối với bộ điều khiển 8 bit, như người ta nói, “không cần dịch”.

Trong quá trình chuyển đổi này, mỗi ký tự, như trong bất kỳ chương trình nào ở bất kỳ ngôn ngữ lập trình nào, được thể hiện trực tiếp dưới dạng mã của nó, nghĩa là một số sê-ri trong bảng phông chữ, từ đó chương trình trích xuất kiểu đồ họa của ký tự tương ứng. Trong tập tin phông chữ System5x7.h thư viện openGLCD số ký tự được biểu thị bằng biến phông chữ_Char_Count kiểu uint8_t, nghĩa là không thể vượt quá kích thước của một byte. Do đó, các ký tự Cyrillic chiếm hai byte trong UTF-8 không thể được chuyển tới bộ điều khiển theo cách thông thường.

Những nỗ lực giải pháp trước đây

Lưu ý rằng điều này không phải luôn luôn như vậy. Các phiên bản Arduino 1.0.x (và, theo tin đồn, 1.6.0) đã cắt bớt mã hai byte thành một byte, chỉ cần loại bỏ byte cao (đối với Cyrillic, như sau từ bảng UTF-8 trong liên kết ở trên , bằng 0xD0 hoặc 0xD1). Do đó, để tinh chỉnh phông chữ trong các phiên bản môi trường này, thư viện GLCD v3 cũ là phù hợp, trong đó mảng phông chữ được bổ sung đơn giản các ký tự chữ cái Cyrillic sao cho vị trí của chúng trùng với byte thấp của mã hóa UTF-8 (byte 0x80 đến 0xBF). Quá trình hiện đại hóa này được mô tả chi tiết hơn trong bài viết “Làm việc với văn bản trên màn hình đồ họa” của tác giả. Tôi nhắc lại - nó yêu cầu một trong các phiên bản Arduino IDE 1.0.x kết hợp với thư viện GLCD v3 chứ không phải các phiên bản hiện đại hơn của chúng.

Trong mới Phiên bản Arduino IDE ngày càng trở nên phức tạp. Thư viện kiên quyết từ chối hiểu số ký tự 2 byte, thay vào đó xuất ra chỗ trống, vì vậy chỉ thay đổi phông chữ sẽ không hiệu quả. Chúng ta phải bổ sung cho nó chức năng chuyển đổi các ký tự byte kép thành ký tự byte đơn.

Giải pháp

Tác giả không đi sâu vào các hàm thư viện mà viết add-on cho openGLCD dưới dạng hàm outstr(), lặp qua tất cả các phần tử của chuỗi đầu vào, chuyển chúng qua toán tử lựa chọn Công tắc. Nó trích xuất các ký tự Cyrillic từ một chuỗi và thay thế chúng bằng mã byte đơn tương ứng với tệp phông chữ hiện đại hóa System5x7R.h.

Ví dụ: đối với chữ cái viết hoa “F” của tiếng Nga, chuỗi thay thế sẽ như sau:

Trường hợp "F": GLCD.PutChar(0xA4); phá vỡ;
Ở đây 0xA4 là byte thấp của mã hóa chữ “F” trong UTF-8 (xem liên kết ở trên). Biên soạn theo mã hóa này tập tin mới nét chữ System5x7R.h. Về nguyên tắc, với phương pháp này, bạn có thể sử dụng bất kỳ mã hóa nào của các ký tự tiếng Nga và bất kỳ ký tự tượng trưng nào khác mà bạn muốn chèn vào phông chữ. Chỉ cần tổng số của chúng không vượt quá 128 miếng: từ đầu bảng đến ký hiệu 0x7F (127 là ký hiệu cuối cùng bảng tiêu chuẩn ASCII) nên giữ nguyên phông chữ.

Đúng, một vài quyền tự do với bảng ASCII Tôi đã cho phép mình. Thực tế là ở phông chữ gốc System5x7.h biểu tượng độ được đặt trong dòng cuối cùng các bảng có ký tự 0x80, ký tự này đối với chúng ta đã đề cập đến bảng chữ cái Cyrillic. Để không vi phạm trình tự xây dựng bảng Cyrillic theo UTF-8, dòng này bị lược bỏ khỏi file. Và biểu tượng độ được đính kèm thay thế ký tự ASCII“~” (số 0x7E), dù sao cũng không được sử dụng cho mục đích dự định trong phông chữ. Nhưng sự thay thế này cho phép bạn nhập biểu tượng độ vào văn bản của bản phác thảo trực tiếp từ bàn phím dưới dạng ký hiệu “~”.

Một quyền tự do khác có liên quan đến thực tế là tác giả không thể chịu đựng được số 0 bị gạch bỏ - sự cổ xưa của thời đại ATsPU và đơn sắc hiển thị văn bản. Do đó, số 0 trong phông chữ hiện đại hóa đã được thay thế bằng glyph của chữ “O”. Những người tuân thủ các nguyên tắc thuần túy có thể chỉ cần xóa phông chữ trong tệp System5x7R.h phần chèn này (hình tượng cũ của số 0 bị gạch chéo ở đó vẫn được nhận xét, mã của nó là 0x30).

Trong thư viện hiện đại hóa openGLCD, mà bạn có thể tải xuống từ liên kết ở cuối bài viết, một chỉnh sửa khác đã được thực hiện - thứ tự kết nối các chân của màn hình với bộ điều khiển ks0108 đã được thay đổi. Tại sao tác giả của thư viện lại chọn thứ tự này (xem bảng ở liên kết trên trang web Arduino chính thức) vẫn chưa rõ. Trong phiên bản hiện đại hóa, kết nối màn hình (MT-12864J phổ biến được chọn làm ví dụ) được thực hiện theo sơ đồ sau:

Sơ đồ kết nối MT-12864J


Biến trở R1 được kết nối ở đây theo khuyến nghị của nhà sản xuất và điện trở R2 có tác dụng hạn chế dòng đèn nền nếu nó không được kết nối với điện áp 5 V mà trực tiếp với nguồn điện đầu vào (chân Arduino Vin) có điện áp cao hơn.

Một ví dụ về hiển thị bảng chữ cái tiếng Nga trộn với tiếng Latinh trên màn hình MT-12864J, cũng như các số và biểu tượng độ, được hiển thị trong ảnh:


Phác thảo văn bản cho ví dụ này:

Văn bản của bản phác thảo với đầu ra là bảng chữ cái tiếng Nga

#bao gồm //bao gồm thư viện #include //file có chức năng xuất ra các chữ cái tiếng Nga #include //file có mã chữ cái tiếng Nga void setup() ( GLCD.Init(); //khởi tạo GLCD.ClearScreen(); ) void loop() ( GLCD.SelectFont(System5x7R); //chọn phông chữ GLCD.CursorTo(0 , 0); //đặt con trỏ về vị trí ban đầu //xuất ra các dòng hỗn hợp Anh-Nga: outstr("ABC AVGDEZZIKLMNOP\n"); outstr("PRQ RSTUFHTSCHSHSHSHYYYYYYYAY\n"); outstr("nts abvgdezhzIKLMNOP\n" ); outstr ("xyz rstufkhchshshshjeyey\n"); GLCD.println("1234567890"); GLCD.CursorTo(19,4); // đặt con trỏ về vị trí áp chót của dòng thứ 5 GLCD.print("~C "); // độ C GLCD.println("@;/.,|<>()=-_()\"""); GLCD.CursorTo(4,7); //đặt con trỏ về vị trí 4 của dòng 8 GLCD.print("MT-12864J"); )


Vì các tập tin có chức năng outstr.h và phông chữ System5x7R.hđặt vào thư mục gốc thư viện được hiện đại hóa thì chúng nên được đặt liên kết riêng lẻở đầu bản phác thảo bằng cách sử dụng lệnh #bao gồm. Đối với chữ khắc bằng tiếng Anh vẫn thuận tiện khi sử dụng tính năng tiêu chuẩn in/in, nhưng nếu bạn cần nguồn cấp dòng bằng văn bản tiếng Nga, bạn phải chỉ định rõ ràng ký tự “\n”.

Bạn có thể tải xuống phiên bản đã sửa của thư viện

Ma trận LED là một chỉ báo đồ họa có thể được sử dụng để hiển thị hình ảnh đơn giản, chữ cái và số. Chúng ta đã làm quen với cấu trúc của chỉ báo ma trận một cách chi tiết tại. Sau đó, rõ ràng là việc nhóm nhiều ma trận lại với nhau không phải là một nhiệm vụ dễ dàng. Đối với mỗi hàng hoặc cột mới của ma trận, bạn cần thêm một đăng kí ca cùng với dây dẫn và điện trở, cũng như một vi mạch ULN2003.

May mắn thay, các kỹ sư từ lâu đã phát triển các vi mạch chuyên dụng để kiểm soát các loại chỉ báo khác nhau. Trong hướng dẫn này, chúng ta sẽ xem xét mô-đun ma trận với chip MAX7219. Như sẽ rõ ở phần sau, làm việc với một mô-đun như vậy là một điều thú vị.

1. Mô-đun ma trận LED với chip MAX7219

Mô-đun này là một bảng mạch có vi mạch, hệ thống dây điện cần thiết cho nó và trên thực tế là một chỉ báo ma trận. Thông thường, đèn báo không được hàn vào bảng mà được lắp vào đầu nối. Điều này được thực hiện sao cho trước tiên một nhóm mô-đun có thể được cố định vào một bề mặt nào đó bằng vít, sau đó các ma trận có thể được chèn vào chúng.

Và đây là giao diện của mô-đun với ma trận.

Mô-đun này có năm chân ở mỗi bên. Một mặt, dữ liệu đi vào mô-đun, mặt khác, dữ liệu thoát khỏi mô-đun và được chuyển sang mô-đun tiếp theo. Điều này cho phép bạn kết nối các ma trận trong một chuỗi.

Đầu nối đầu vào:

  • VCC, GND - nguồn điện;
  • DIN - dữ liệu đầu vào;
  • CLK - xung đồng bộ.

Đầu nối đầu ra:

  • VCC, GND - nguồn điện;
  • DOUT - đầu ra dữ liệu;
  • CS - lựa chọn mô-đun (chọn chip);
  • CLK - xung đồng bộ.

Mô-đun hoạt động ở điện áp 5 Volts.

Sự liên quan

Chúng tôi kết nối mô-đun ma trận với bộ điều khiển Arduino Uno theo sơ đồ sau:

Ma trận LED 8x8 với MAX7219 VCC GND CIN CS CLK
Arduino Uno +5V GND 11 9 13

Sơ đồ

Giao diện bố cục

2. Xuất pixel bằng thư viện Max72xxPanel

Để điều khiển chip MAX7219 chúng ta sẽ sử dụng thư viện Bảng điều khiển Max72xx. Bạn có thể tải nó từ các liên kết ở cuối bài học.

Hãy cài đặt thư viện và viết chương trình nhỏ, sẽ chỉ hiển thị một điểm có tọa độ x=3 và y=4. Dấu chấm sẽ nhấp nháy với khoảng thời gian 600 mili giây.

#bao gồm #bao gồm #bao gồm int pinCS = 9; int numberOfHorizontalDisplays = 1; // số ma trận theo chiều ngang int numberOfVerticalDisplays = 1; // số ma trận theo chiều dọc Ma trận Max72xxPanel = Max72xxPanel(pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays); void setup() ( ma trận.setIntensity(4); // độ sáng từ 0 đến 15 ) void loop() ( ma trận.drawPixel(3, 4, HIGH); // chiếu sáng pixel bằng ma trận tọa độ (3,4). write (); // xuất tất cả các pixel thành độ trễ ma trận(300);ma trận.drawPixel(3, 4, THẤP); // xóa sạch pixelmatrix.write(); delay(300); )

Như đã đề cập trước đó, các mô-đun ma trận với chip MAX7219 có thể được kết hợp dễ dàng. Vì mục đích này mà khi bắt đầu chương trình, chúng ta đặt số lượng ma trận theo chiều ngang và chiều dọc. Trong trường hợp này, một ma trận được sử dụng nên cả hai tham số này sẽ bằng 1.

Điều quan trọng cần lưu ý là sau khi bật và tắt pixel bằng chức năng drawPixel, bạn cần gọi hàm viết. Nếu không có chức năng ghi, các pixel sẽ không được hiển thị trên ma trận!

Bây giờ hãy viết một chương trình hiển thị một mặt cười trong quá khứ lên ma trận. Chúng tôi sẽ mã hóa nụ cười bằng cách sử dụng một mảng 8 byte. Mỗi byte của mảng sẽ chịu trách nhiệm cho một hàng của ma trận và mỗi bit trong byte sẽ chịu trách nhiệm cho một điểm trong hàng.

#bao gồm #bao gồm #bao gồm int pinCS = 9; int numberOfHorizontalDisplays = 1; // số ma trận theo chiều ngang int numberOfVerticalDisplays = 1; // số ma trận theo chiều dọc Ma trận Max72xxPanel = Max72xxPanel(pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays); dữ liệu byte const = ( 0b00111100, 0b01000010, 0b10100101, 0b10000001, 0b10100101, 0b10011001, 0b01000010, 0b00111100 ); void setup() ( ma trận.setIntensity(7); // độ sáng từ 0 đến 15 ma trận.fillScreen(LOW); // xóa ma trận cho (int y = 0; y< 8; y++) { for (int x = 0; x < 8; x++) { // зажигаем x-й пиксель в y-й строке matrix.drawPixel(x, y, data[y] & (1<

Ghi chú. Thư viện Max72xxPanel có chức năng setRotation, đặt hướng của hình ảnh trên ma trận. Ví dụ: nếu muốn xoay một mặt cười 90 độ, chúng ta sẽ cần gọi setRotation với các đối số thích hợp ngay sau khi gọi hàm setIntensity:

ma trận.setRotation(0, 1);

tham số đầu tiên là chỉ số ma trận, trong trường hợp của chúng tôi nó bằng 0; tham số thứ hai là số lần quay 90 độ.

3. Xuất văn bản bằng Thư viện Adafruit-GFX

Theo cách tương tự, bạn có thể hiển thị bất kỳ ký hiệu nào khác, ví dụ: một chữ cái, trên ma trận. Nhưng để có thể hiển thị bất kỳ chữ cái nào trong bảng chữ cái tiếng Anh, chúng ta sẽ cần xác định tối đa 26 mảng 8 byte trong chương trình! Điều này rất tẻ nhạt và tất nhiên ai đó đã làm việc này trước chúng tôi.

Ngoài các chức năng làm việc với đồ họa và văn bản, Thư viện Adafruit-GFX phổ biến còn chứa cơ sở dữ liệu gồm các chữ cái Latinh ở dạng in hoa và in thường, cũng như tất cả các dấu chấm câu và các ký hiệu dịch vụ khác. Đường link tới thư viện ở cuối bài học.

Bạn có thể hiển thị ký hiệu trên ma trận bằng hàm vẽChar.

drawChar(x, y, ký tự, màu sắc, nền, kích thước);

Hai tham số đầu tiên của hàm chịu trách nhiệm về tọa độ của góc trên bên trái của ký hiệu. Tham số thứ ba là chính biểu tượng đó. Màu của biểu tượng trong trường hợp của chúng tôi sẽ bằng 1 hoặc CAO, vì ma trận có hai màu. Nền là 0 hoặc THẤP. Hãy đặt tham số cuối cùng “size” thành 1.

Hãy viết một chương trình hiển thị lần lượt trên ma trận tất cả các chữ cái của cụm từ: “HELLO WORLD!”

#bao gồm #bao gồm #bao gồm int pinCS = 9; int numberOfHorizontalDisplays = 1; int numberOfVerticalDisplays = 1; Ma trận Max72xxPanel = Max72xxPanel(pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays); Băng dây = "HELLO WORLD!"; int chờ = 20; void setup() ( ma trận.setIntensity(7); // độ sáng từ 0 đến 15 ) void loop() ( for (int i = 0 ; i< tape.length(); i++) { matrix.fillScreen(LOW); matrix.drawChar(0, 0, tape[i], HIGH, LOW, 1); matrix.write(); } delay(wait); }

Ghi chú. Thư viện Adaf nhung_GFX có nhiều chức năng để làm việc với đồ họa. Ví dụ, drawCircle(3, 3, 2, HIGH) sẽ vẽ một hình tròn có tâm (3,3) và bán kính 2. Tham số cuối cùng là màu sắc, nhưng trong trường hợp ma trận đơn sắc thì nó là 1 hoặc CAO. Hàm drawLine(0, 0, 3, 6, HIGH) sẽ vẽ một đường thẳng giữa các điểm (0,0) và (3,6).

3. Chương trình. Đường leo trên max7219

Để hiển thị nhiều chữ cái cùng một lúc, chúng ta sẽ cần kết nối nhiều ma trận LED thành một chuỗi. Như đã đề cập trước đó, việc này được thực hiện rất đơn giản. Sơ đồ kết nối sáu mô-đun sẽ như thế này.

Sơ đồ

Giao diện bố cục

Chương trình

Chúng ta sẽ tạo một đường chạy bằng cách dịch chuyển tọa độ của các chữ cái. Để hiển thị chữ cái theo tọa độ yêu cầu, chúng ta sử dụng hàm drawChar tương tự.

#bao gồm #bao gồm #bao gồm int pinCS = 9; int numberOfHorizontalDisplays = 6; // bây giờ chúng ta có 6 ma trận theo chiều ngang int numberOfVerticalDisplays = 1; // và theo chiều dọc, như trước, có một ma trận Max72xxPanel = Max72xxPanel(pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays); Băng chuỗi = "trang web"; // văn bản sẽ nổi int wait = 20; // thời gian giữa các lần di chuyển nhiều nhất của các chữ cái int spacer = 1; // khoảng cách giữa các chữ cái int width = 5 + spacer; // cỡ chữ void setup() ( ma trận.setIntensity(7); // độ sáng ) void loop() ( for (int i = 0 ; i< width * tape.length() + matrix.width() - 1 - spacer; i++) { matrix.fillScreen(LOW); int letter = i / width; int x = (matrix.width() - 1) - i % width; int y = (matrix.height() - 8) / 2; // center the text vertically while (x + width - spacer >= 0 && chữ cái >= 0) ( if (chữ cái< tape.length()) { matrix.drawChar(x, y, tape, HIGH, LOW, 1); } letter--; x -= width; } matrix.write(); delay(wait); } }

Tải chương trình lên Arduino Uno và xem mã!

Nhiệm vụ

  1. Đồng hồ kỹ thuật số. Lắp ráp mạch gồm bốn ma trận LED và mô-đun đồng hồ thời gian thực. Viết chương trình cho Arduino hiển thị giờ và phút trên màn hình từ ma trận.
  2. Trò chơi rắn. Lắp ráp màn hình có độ phân giải 16x16 pixel từ bốn ma trận LED. Triển khai một trò chơi nổi tiếng như “con rắn” (hoặc “python”) trên Arduino. Cần thêm bốn nút vào mạch để điều khiển hướng chuyển động, đồng thời có còi để báo hiệu sự kiện ăn táo.

Phần kết luận

Bằng cách kết nối các mô-đun ma trận với nhau trên max7219, bạn có thể lắp ráp các màn hình khá lớn và sử dụng chúng trong các dự án Arduino yêu cầu đầu ra hình ảnh sáng. Màn hình LED, không giống như màn hình tinh thể lỏng, có khả năng chịu được nhiệt độ thấp. Ví dụ: một mã đánh dấu được làm từ ma trận có thể được đặt bên ngoài ngay cả khi có sương giá 30 độ.

Ngoài các mô-đun ma trận một màu dựa trên max7219, còn có các thiết bị tương tự khác. Ví dụ: màn hình LED ba màu có độ phân giải 32x16 và thậm chí 64x32 pixel. Chúng ta sẽ nói về các mô-đun như vậy trong các bài học và bài viết sau.

Liên kết hữu ích

1. Thư viện Bảng điều khiển Max72xx:

2. Thư viện Thư viện Adafruit-GFX.

Cuối cùng, các mô-đun ma trận đã đến từ Trung Quốc. Mỗi mô-đun bao gồm một vi mạch MAX7219 (), một ma trận LED và có một tụ điện và một điện trở trong bộ dây.


Được điều khiển bởi MAX7219 thông qua giao diện SPI.


Các chip trong cụm được kết nối nối tiếp. Tôi đọc trên Internet rằng kết nối nối tiếp tối đa có thể chỉ cho phép 8 mảnh MAX7219. Đừng tin điều đó. Tôi đã kết nối 16 mô-đun và mọi thứ đều hoạt động tốt.

Các mô-đun được trình bày trên Ali có nhiều phiên bản. Phổ biến nhất là 2 loại: có chip trong gói DIP và gói SOIC. Mô-đun có chip DIP lớn hơn và không thuận tiện khi kết nối với cụm. Sẽ có rất nhiều dây để kết nối.


Các mô-đun có chip trong gói SOIC có kích thước bằng ma trận LED và được kết nối bằng hàn hoặc dây nối. Hóa ra đẹp và gọn gàng.


Các thư viện nổi tiếng nhất để làm việc với ma trận và cụm là Bảng điều khiển MAX72xx của Mark RiceParola của MajicDesigns: Thư viện đầu tiên dễ sử dụng hơn, thư viện thứ hai phức tạp hơn với nhiều khả năng hơn. Tôi sẽ mô tả nó chi tiết hơn.

Bảng điều khiển MAX72xx

Khi sử dụng MAX72xx Panel phải cài đặt thư viện Adafbean GFX.

Để Nga hóa văn bản, bạn sẽ cần phải tải xuống TẬP TIN NÀY và thay thế tập tin tiêu chuẩn glcdfont.c trong thư mục Arduino/Libraries/Adafruit-GFX-Library-master. Cũng trong tệp này, ngoài các chữ cái và số cần thiết, còn mô tả một loạt các loại ký hiệu. Không phải tất cả chúng đều có thể hữu ích. Hình ảnh dưới đây giải thích cách các biểu tượng được hình thành.

Nếu cần, bạn có thể tạo các ký hiệu của riêng mình và thay thế chúng bằng bất kỳ ký hiệu nào không được sử dụng trong tệp. Hầu như tất cả các phông chữ chấm được sử dụng trong các thư viện khác nhau đều được hình thành theo cách tương tự.

Vì vậy, thư viện MAX72xx Panel và Adafbean GFX đã được cài đặt, tệp glcdfont.c được thay thế. Khởi chạy Arduino IDE, mở TÀI LIỆU. Bản phác thảo chứa hàm utf8rus. Nó cung cấp khả năng chuyển đổi bảng ký tự sang tiếng Nga. Nó chỉ cần thiết cho đầu ra bình thường từ chương trình, nghĩa là trong chương trình văn bản bắt buộc viết bằng tiếng Nga. Nếu văn bản được nhập qua cổng COM thì mã ký tự sẽ được sửa trong chức năng Serial_Read. Các nhà phát triển đã sử dụng các mã hóa khác nhau trong IDE và trong bảng điều khiển.

Ở đầu file có những dòng cần thiết để thư viện hoạt động.

int numberOfHorizontalDisplays = 1;

int numberOfVerticalDisplays = 16;

Tôi có các mô-đun có vi mạch trong gói SOIC. Họ có một đặc thù nhỏ. Ma trận của các mô-đun được lắp đặt xoay 90 độ. Đây là một khoản phí cho sự thuận tiện của việc kết nối. Nếu bạn chạy các bản phác thảo đi kèm với thư viện, chúng sẽ xuất văn bản từ dưới lên trên trong mỗi mô-đun. Văn bản sẽ xuất hiện theo hình zigzags. Để khắc phục vấn đề này, thư viện cần được “thông báo” rằng có 16 màn hình dọc (về mặt vật lý, chúng được đặt theo chiều ngang). Và sau đó trong void Setup chỉ định dòng vào thư viện

Matrix.setRotation(matrix.getRotation() + 1);

Nó sẽ đảo ngược từng ma trận theo chương trình. Và mọi thứ sẽ được hiển thị bình thường.

Các mô-đun có gói chip DIP không có điều này. Ở đó mọi thứ đều đẹp, ngoại trừ một đống dây điện.

Thư viện MAX72xx Panel khá khiêm tốn. Hiệu ứng hình ảnh không có kết luận. Cụm được coi là một tổng thể. Mọi thứ tốt hơn nhiều với MD Parola.

Parola của MajicDesigns.

Chủ sở hữu các mô-đun có chip trong gói SOIC cũng sẽ gặp phải vấn đề về định hướng các mô-đun trong cụm. Nó trông hơi khác một chút so với MAX72xx. Ở đây các mô-đun dường như không hoạt động.


Bản phác thảo HelloWorld từ các mẫu có trong thư viện.

Tôi không thể chữa khỏi căn bệnh này theo chương trình trong bản phác thảo. Tôi đã đối xử với anh ấy khác đi. Trong file Adruino/libraries/MD_MAX72xx_lib.h ở cuối bạn cần tìm những dòng như trong hình.


Và sửa phần được tô sáng từ 1 thành 0 trong dòng đã chọn. Lưu tệp. Arduino IDE không cần phải khởi động lại. Hãy điền vào nó và xem xét.


Bây giờ bạn có thể sử dụng 24 hiệu ứng hoạt hình. Hoạt ảnh được bắt đầu bằng lệnh P.displayText("Văn bản cần hiển thị", "căn chỉnh văn bản", tốc độ, độ trễ hiển thị, hiệu ứng xuất hiện, hiệu ứng biến mất). Như bạn có thể thấy, có khá nhiều cài đặt.

Và phần hay nhất là chia cụm thành các vùng ảo. Làm việc với các vùng không khó lắm. Tôi không đăng bản phác thảo mà nó nằm trong các mẫu đi kèm với thư viện. Giờ đây, bạn gần như có thể hiển thị đồng hồ ở đầu cụm và mã tin tức trên các mô-đun còn lại mà không gặp bất kỳ vấn đề gì.

Như bạn có thể đã đoán, vấn đề là ở bằng chữ cái Cyrillic. Nó cũng có thể giải quyết được. Gần tập tin trước đó trong cùng thư mục có tệp MD_MAX72xx_font.cpp. Đây là một tập tin phông chữ. Các ký tự trong đó được hình thành tương tự như file phông chữ của thư viện GFX. Có một sự khác biệt nhỏ. Ở đây kích thước biểu tượng có thể nhỏ hơn 5 điểm. Trong thư viện Adafbean GFX Dấu chấm than, chẳng hạn, cũng rộng 5 chấm, giống như bất kỳ ký hiệu nào khác, chỉ sử dụng một hàng dấu chấm. Phần còn lại không phát sáng mà được dùng làm biểu tượng. Trong Parola, dấu chấm than tương tự cũng chiếm một hàng dấu chấm, nhưng không nằm cạnh nó. dấu chấm trống hoặc có thể có các ký hiệu liền kề. Nó sẽ rõ ràng hơn để hiểu từ hình ảnh.


Thêm tập tin Ký tự Cyrillic tương tự như tệp từ thư viện đầu tiên được xem xét, vẫn chưa có thời gian. Nếu ai đó làm điều này và gửi cho tôi một tập tin, tôi sẽ thêm nó vào bài viết này, và cả tôi và khách truy cập trang web của tôi sẽ biết ơn bạn.

Điểm mấu chốt. Thư viện MAX72xx Panel của Mark Rice rất dễ sử dụng và dễ hiểu nhưng có chức năng kém.

Thư viện Parola của MajicDesigns phức tạp hơn và khả năng của nó đủ cho hầu hết mọi ứng dụng.

Xin chào, Kính gửi người dùng Máy phát điện LP!

Xin lưu ý: để kết nối phông chữ một cách chuẩn mực, sử dụng một công cụ làm sẵn. Nó rất dễ sử dụng và cho phép bạn thêm các phông chữ bổ sung mà không cần nỗ lực thêm:

Trong bài đăng này, bạn sẽ tìm hiểu cách thêm phông chữ bổ sung vào trang đích của mình bằng cách sử dụng dịch vụ của Google Phông chữ thông qua việc thêm tập lệnh.

2. Đảm bảo chỉ ra bảng chữ cái, tức là một bộ ký tự.

Nếu trang đích bằng tiếng Nga thì hãy chọn tiếng Latin ( Latin) và chữ Cyrillic ( chữ cái Cyrillic):

3. Chọn (các) phông chữ bạn thích và nhấp vào " +":

4. Đi tới bộ sưu tập các phông chữ đã thêm. Để thực hiện việc này, hãy nhấp vào thanh màu đen bên dưới:

5. Trong cửa sổ mở ra, mục đầu tiên hiển thị các phông chữ đã chọn trước đó.

Hãy nhớ: sử dụng số lượng lớn phông chữ khác nhau Phông chữ của Google có thể làm chậm thời gian tải trang đích của bạn. Tác động của các kiểu đã chọn đến tốc độ tải trang được hiển thị ở bên phải.

6. Nếu thiết lập và vẻ bề ngoài bạn hài lòng với các phông chữ được thêm vào, hãy chuyển đến phần "NHÈN" và sao chép hoàn toàn nội dung của trường "STANDART":

Đừng đóng tab Google Phông chữ, chúng ta sẽ cần nó sau.

Mở trang đích mong muốn trong Trình chỉnh sửa máy phát điện LP và bấm vào công cụ "Kịch bản":

  • trong cửa sổ mở ra, nhấp vào "Thêm tập lệnh mới";
  • ghi tên kịch bản;
  • chọn vị trí tập lệnh "Bên trong thẻ HEAD";
  • dán mã đã sao chép;
  • đừng quên lưu các thay đổi của bạn.

7. Quay lại tab Google Fonts.

Sao chép mã CSS được tạo để sử dụng các phông chữ đã tải.

Mỗi phông chữ sử dụng CSS riêng.

Ví dụ: đối với phông chữ Tôm hùm, mã trông như thế này: họ phông chữ: "Tôm hùm", chữ thảo;

8. Quay lại trình chỉnh sửa LPgenerator và nhấp vào thành phần (văn bản hoặc nút) mà bạn muốn áp dụng phông chữ đã tải xuống.

Có các tính năng áp dụng kiểu cho các phần tử hạ cánh khác nhau.

yếu tố CTA

Để thay đổi kiểu phông chữ trên một nút, chỉ cần nhấp vào nút đó và trong thuộc tính nâng cao ở bên phải, thêm CSS cho phông chữ (được sao chép ở bước 8).

Khối văn bản trang đích

Để áp dụng phông chữ bên ngoài cho khối văn bản mà bạn đã thay đổi phông chữ, việc chỉ định kiểu trong thuộc tính nâng cao của nó là chưa đủ. Bạn cũng phải đặt lại định dạng hiện tại. Để thực hiện việc này, hãy chọn văn bản và nhấp vào nút “Xóa định dạng” trong khối chỉnh sửa văn bản.

Xin lưu ý: Thao tác này sẽ đặt lại mọi thay đổi bạn đã thực hiện đối với cỡ chữ, kiểu phông chữ, căn chỉnh, v.v.

Sau đó, bạn có thể chỉ định lại kích thước, căn chỉnh và các thuộc tính khác.

Nếu đây là lần đầu tiên bạn tạo khối văn bản trên trang đích và bạn chưa thay đổi phông chữ, bạn chỉ cần nhấp vào văn bản và thêm CSS cho phông chữ trong thuộc tính nâng cao của thành phần.

9. Lưu các thay đổi và chiêm ngưỡng kết quả.

Xin lưu ý: trong trình chỉnh sửa LPgenerator, phông chữ sẽ được giữ nguyên, các phông chữ bổ sung chỉ được hiển thị trong bản xem trước và khi truy cập trang đích đã xuất bản.