Экран LEGO EV3 с русскими буквами

LEGO EV3 научился писать по-русски!

Блок LEGO EV3 является настоящим компьютером с операционной системой и другими атрибутами компьютера. Но это маленький и специализированный компьютер. Поэтому есть всяческие особенности. Блок EV3 может работать только с латинскими (английскими) символами (буквами).

На просторах интернета обнаружен пакет для вывода русских букв на дисплей блока EV3 для среды разработки Clever (встречаются ещё такие варианты написания названия этой среды разработки — clEV3r или CLEV3R). Пакет называется EV3_Basic_Plus_Russian.

Общие впечатления о работе с модулем

Пакет EV3_Basic_Plus_Russian имеет недостатки, поэтому я решил сначала о них написать. Так вам будет понятно, нужно вам его скачивать или нет.

Для начала, всё-таки, главный плюс — это работает и даёт возможность не очень сложными действиями вывести текст на русском языке на дисплей. Ещё плюс, что пакет снабжён подробными пояснениями и есть возможность изменять кодировку растра. Вносить изменения я не пробовал, но уже хочется.

Заметно увеличивается время компиляции простой программы. Если программа использует и другие модули, то возможно время компиляции не сильно изменится. Но если программа простая, то компиляция перестаёт пролетать моментально.

Вывод текста на дисплей происходит очень медленно. Вместо 3 — 5 миллисекунд английскими буквами получается 1,5 секунды русскими.

Не работает связка команд StopUpdate — Update. Выглядит так — будто блок EV3 с трудом понимает русский язык и медленно прорисовывает буквы. Я не смог остановить обновление командой StopUpdate, хотя перепробовал все варианты.

В итоге, я планирую использовать этот модуль в неспешных частях программ. Например, в начальных пояснениях или при вводе данных кнопками. В процессе экранной игры попытка вывести на дисплей русские буквы приостановит игру.

Где скачать и как установить?

Скачать можно с платформы github.com. Там выложены все необходимые файлы.

Ссылка на страницу с пакетом: https://github.com/Avdor1963/EV3_Basic_Plus_Russian

Скриншот страницы GitHub модуля 
EV3_Basic_Plus_Russian

На странице читаем пояснения или сразу жмём на зелёную кнопку «< > Code». В открывшемся выпадающем окне жмём на «Download ZIP». Скачается архив со всеми файлами.

По инструкции в файле Readme.txt скопировал файл LCDRu.xml в папку на компьютере …> clev3r > Help > ru. Сразу появилась «справка» по модулю в среде CLEV3R.

Скриншот размещения файла LCDRu.xml

Справка по модулю LCDRu
Справка по модулю LCDRu

Файлы с шрифтами font8x8_0.fnt, font8x8_1.fnt и font16x16.fnt загрузил в EV3 в папку prjs. Я ещё не разобрался с правильным расположением файлов в EV3 и в среде CLEV3R. Если загружаю файлы шрифтов в папку с программой, то текст на русском не отображается на дисплее блока EV3.

Вместо загрузки файлов шрифтов в EV3 можно запустить программы для пересоздания шрифтов. Это пункт 5 в файле Readme.txt. Размещаем на компьютере в одной папке программы CreateFont8x8_0.bp, CreateFont8x8_1.bp и CreateFont16x16.bp и модули Font8x8_0.bpm, Font8x8_1.bpm и Font16x16.bpm. В среде CLEV3R создаём папку в блоке EV3, например, папку rus в папке prjs. Открываем эту папку rus. В среде CLEV3R открываем и запускаем по очереди программы для пересоздания шрифтов. Создадутся файлы шрифтов в папке prjs в блоке EV3. Теперь можно удалить на EV3 папку rus. Можно проверять.

Пишем русские буквы на LEGO EV3

Создаём новую программу в CLEV3R и указываем куда её сохранять на компьютере. В это же место размещаем файл модуля LCDRu.bpm. В блок EV3 вручную ни чего загружать не требуется. При компиляции автоматически будут созданы дополнительные папки и файлы в блоке EV3.

Папка с программой и модулем LCDRu.bpm
Папка с программой и модулем LCDRu.bpm

Увидев как долго прорисовывает EV3 русские буквы я набросал проверочный тест. Этот тест не является истиной в последней инстанции, но позволяет оценить задержку времени.

import"LCDRu"

Time.Reset1()
LCDRu.Clear()
LCDRu.StopUpdate()
LCDru.Text(1,10,5,2,"LEGO EV3")
LCDRu.TextRU (1,10,25,1,"yfexbkcz gbcfnm")
LCDRu.TextRU (1,10,40,2,"GJ-HECCRB")
Program.Delay(2000)
LCDRu.TextRu(1,20,60,1,"yj \nj yt ghjcnj!")
LCDRu.TextRu(1,5,80,2,"DHTVZ "+Time.Get1())
LCDRu.Update()
Program.Delay(10000)

Time.Reset1()
LCD.Clear()
LCD.StopUpdate()
LCD.Text(1,10,5,2,"LEGO EV3")
LCD.Text(1,10,25,1,"wants to write only")
Program.Delay(2000)
LCD.Text(1,0,35,2,"in English")
LCD.Text(1,5,80,2,"TIME "+Time.Get1())
LCD.Update()
Program.Delay(10000)

В первой части программы используются методы LCDRu, а во второй только стандартные LCD. Программа должна очистить дисплей, примерно через 2 секунды вывести на дисплей надписи на русском. Фактически программа после очистки дисплея сразу начинает рисовать буквы. Затем задержка 2 секунды и продолжает вырисовывать буквы. Таймер успевает насчитать порядка 3598 миллисекунд. Вычитая 2 секунды задержки, понимаем, что буквы рисовались 1,5 секунды!

Экран LEGO EV3 с русскими буквами
Экран LEGO EV3 с русскими буквами

Во второй части программы всё выполняется по программе. Очистка дисплея, пауза порядка 2 секунд и появление всего текста по команде LCD.Update(). Таймер успевает насчитать 2008 миллисекунд. Вычитая 2 секунды задержки, очевидно, что работа с латинскими символами заняла порядка 8 миллисекунд.

Надписи на дисплее LEGO EV3 при тесте на скорость методов LCD
Дисплей LEGO EV3 при тесте на скорость методов LCD

Прошу в комментариях указать, если я не правильно что-то описал. Как можно ускорить работу с русскими словами?

Короткое видео про вывод русских букв на LEGO EV3

Видео просто показывает, что на дисплее блока EV3 выводятся текст на русском. Ни какой исследовательской ценности в ролике нет. Скорее видео информирует о существовании сайта robiki.ru Но на канале есть другие интересные видеоролики и не только про LEGO.

Ссылка на видео: https://youtube.com/shorts/fO46urSJZf4

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *