CIRCUITPYTHON ТА MICROPYTHON ДЛЯ MEOWBIT

Кульбачинський Є.А.
Навчально-науковий фізико-технологічний інститут Волинський національний університет імені Лесі Українки

MicroPython створювався для тих, хто звик програмувати мікроконтролери на С, але хотів би використовувати при цьому синтаксис Python. Процес розробки організований відповідним чином: після завантаження MicroPython виконує файл main.py з флеш-пам'яті, потім запускає REPL (інтерактивну оболонку) на послідовному інтерфейсі. Єдиний спосіб запустити новий скрипт - перезавантаження з новим main.py. До того ж, стандартний висновок MicroPython направляється на послідовний інтерфейс, а не на екран; щоб надрукувати що-небудь на екрані, замість стандартного print треба використовувати FrameBuffer: fb.text (s, x, y); pyb.SCREEN (). show (fb) - з явним завданням координат, без автоматичного розбиття на рядки і без автоматичної прокрутки екрану. Для розробки на С все це природно, але програмісти на Python звикли до набагато більшого комфорту.

Усвідомлюючи це, в 2017 нью-йоркський стартап Adafruit почав розробку власного ФОРКОМ MicroPython, що отримав назву CircuitPython. У MicroPython потрібно проявляти обережність, щоб у флеш-пам'ять не писали одночасно скрипт і комп'ютер через USB, інакше файлова система могла пошкодитися. У CircuitPython ж перезапис main.py під час його виконання - основний сценарій використання, так що заради обережності потрібно вибрати один з двох варіантів - доступ до флешу з Python тільки на читання і через USB на читання і запис, або з Python на читання і запис і через USB тільки на читання, без можливості перезапису чи видалення main.py. З іншого боку, MicroPython дозволяє писати на Python обробники переривань, а CircuitPython - не дозволяє, і не збирається додавати таку можливість.

MicroPython надає дуже просту і прозору модель «створив масив значень пікселів, відправив його цілком на екран».

З іншого боку, CircuitPython нав'язує програмістові багаторівневу абстракцію: Bitmap довільній колірної глибини, що дозволяє заощадити пам'ят; Palette, що перетворює значення Bitmap в конкретні значення кольору, що задаються в стандартному 24-бітному форматі, і автоматично конвертовані в той формат, з яким працює екран; потім TileGrid, що дозволяє зрушувати і масштабувати кілька спрайтів як одне ціле; і нарешті Group, що дозволяє перемикатися між «стопками спрайтів». Для простих завдань, типу відтворення графіка функції, всі ці додаткові абстракції абсолютно зайві; але для розробки ігор, швидше за все, програмісту на MicroPython довелося б самостійно розробляти щось аналогічне цієї ієрархії абстракцій.

Коментарі до статті:
© inforum.in.ua, 2014 - 2024
+38 (068) 322 72 67
+38 (093) 391 11 36
inforum.in.ua@ukr.net