ledBasic
Описание
Встроенный язык программирования световых эффектов для WS2812B на ESP8266
Языки
- C++100%
LedBasic
Встроенный язык программирования световых эффектов для WS2812B на ESP8266
LedBasic — это интерпретируемый BASIC-подобный язык и виртуальная машина (VM) для создания анимаций на адресных светодиодных лентах. Программы пишутся в текстовом виде, компилируются в байт-код прямо на контроллере и выполняются неблокирующим образом — параллельно с остальным кодом Arduino.
Возможности
- Неблокирующее выполнение —
вызывается изtick(), не мешает другим задачамloop() - Независимость от типа ленты — подключение через коллбэки (совместимо с любой версией NeoPixelBus, FastLED)
- Полный язык: переменные A–Z, арифметика, условия, циклы, подпрограммы, функции
- Управление скоростью —
масштабирует все задержки без изменения скриптаsetSpeed(percent) - Встроенные LED-функции:
,SIN8,COS8,PIXEL,RND,ABS,MINMAX - HSV и RGB —
с аппаратной конвертацией без floatSET_HSV - Браузерная IDE — редактор, эмулятор, отладчик, экспорт — всё в одном HTML-файле
Структура проекта
LedBasic.h — заголовочный файл библиотеки
LedBasic.cpp — реализация компилятора и VM
main.cpp — пример подключения к ESP8266 + NeoPixelBus
examples/
main_comet.cpp — комета с хвостом
main_fire.cpp — языки пламени
main_firework.cpp — фейерверк
main_rainbow.cpp — радуга
main_ants.cpp — муравьиная тропа
main_sunset.cpp — закат (движущееся солнце)
main_effects.cpp — сборник эффектов
main_test_read.cpp — тест запись/чтение
1. Подключение библиотеки
2. Инициализация
3. Управление скоростью
Язык LedBasic
Структура программы
Каждая строка начинается с номера (1–65534). Комментарий — апостроф . Запятые в аргументах окружаются пробелами.
Команды
| Команда | Описание |
|---|---|
| Залить всю ленту цветом |
| Установить один пиксель RGB |
| Установить один пиксель HSV (0–255) |
| Погасить всю ленту |
| Вывести буфер на ленту |
| SHOW + пауза ms миллисекунд |
| Пауза без SHOW |
| Перейти на строку n |
| Вызов подпрограммы (стек 10 уровней) |
| Возврат из подпрограммы |
| Цикл (вложенность до 8) |
| Конец цикла |
| Условие |
Функции
| Функция | Описание |
|---|---|
| Максимальный индекс пикселя (N − 1) |
| Случайное целое в диапазоне |
| Синус: аргумент 0–255, результат 0–255 |
| Косинус: аргумент 0–255, результат 0–255 |
| Модуль числа |
| Минимум |
| Максимум |
Переменные
26 переменных: –, тип (−32768..32767). Инициализируются нулём при .
Пример: комета с хвостом
Дополнительно
Файлы мануалов можно загрузить с моего Яндекс.Диск, почему то Gitverse портит docx файлы.
LedBasic_Manual_v3.docx — справочное руководство по языку
LedBasic_Lib_Doc_v2.docx — документация C++ библиотеки
LedBasic_Effects_v2.docx — сборник 28 эффектов с комментариями
Браузерная IDE
Онлайн IDE LedBasic


Возможности IDE
- Редактор с подсветкой синтаксиса, нумерацией строк, подчёркиванием ошибок
- Эмулятор ленты — полоса, кольцо, матрица (настраиваемый размер и масштаб)
- Отладчик — переменные A–Z в реальном времени, аннотированный байт-код
- Многострочный режим — несколько операторов на одной строке: 110 V = A 111 P = I 112 GOSUB 600
- Экспорт в
,const char*,PROGMEM,.bas.bin - Горячие клавиши:
/Ctrl+Enter— запуск/стоп,F5— сохранитьCtrl+S - **Есть некоторые баги, будут исправленны в следующей версии
C++ API
Зависимости
- Arduino ESP8266 core
Лимиты VM
| Ресурс | Лимит |
|---|---|
| Переменные | 26 (A–Z), int16 |
| Строк программы | 128 |
| Стек GOSUB | 10 уровней |
| Стек FOR/NEXT | 8 уровней |
| Байт-код | ~4 КБ RAM |
| Скорость | 1..1000% |
Благодарности
Эффекты из сборника вдохновлены проектом WS2812FX — kitesurfer1404.
Лицензия
MIT