Откуда брать ШИМ-пороги и при чём тут режим Лиссажу • C • Live coding
Рассуждалки про то, как превратить непонятную постановку задачи в понятный план действий. И отказ от требования y = f(x). Кода сегодня не очень много, с ESP32 у меня как-то не задались отношения. Таймлайн: 00:00 — Продолжение экспериментов с осциллографом: рисуем функции и картинки 00:22 — Вспоминаем прошлый раз: рисовали функцию в «линейном режиме» осциллографа 01:03 — RC-цепочка (резистор + конденсатор) сглаживает 0/1 в аналоговый сигнал 01:42 — Новая цель: рисовать не абстрактную линию, а настоящую картинку 02:43 — Под «простой картинкой» понимаем функцию y=f(x), чёрно-белую, одномерную 03:09 — Нужен массив пороговых значений для ШИМ → вывод на осциллограф 04:23 — Анализ задачи «в лоб»: перебираем X, находим Y, переводим в порог 06:07 — Готовим картинку: уменьшаем, переводим в ч/б, обрезаем пустое 07:01 — Сжатые форматы (PNG, JPEG) не годятся → нужен формат «прямого перебора» 08:55 — Решение: текстовые форматы с нулями и единицами (PBM/PNM) 09:22 — Обработка колонки: перебираем точки, ищем чёрную, переводим в порог 10:02 — Желательно работать в целых числах, но осциллограф допускает «плавание» 12:15 — Деление задачи: подготовка картинки целиком (удобно на Python/утилитах) 12:58 — Работа с пиксельными данными (нолики/единички) удобнее на C 13:42 — Вывод: часть задачи лучше делать высокоуровневыми средствами, часть — низкоуровневыми 14:31 — Проблема: большинство картинок «не функция» (пример силуэта города) 16:14 — Решение: отказаться от строгой связи Y=f(X), ввести время как «третью координату» 18:28 — Режим Лиссажу: X и Y управляются независимо, время идёт само 19:15 — Демонстрация режима XY на осциллографе: сверху X и Y, снизу фигура 20:08 — Аппаратные ограничения: ESP32-S3 без ЦАП, используем ШИМ и таблицу значений 22:05 — Первый тест: выдаём синус на оба канала (таблица синусов) 23:56 — Осциллограф показывает синусоиды, но фигура Лиссажу получается плоская 28:12 — Чтобы вышел кружок: X = sin(t), Y = cos(t) (сдвиг на 90°) 29:27 — Заготовка кода: таблица синусов + сдвиг → косинус 30:17 — Результат: на экране появляется круг (идеальная фигура Лиссажу) 30:53 — Эксперименты с масштабами: растягиваем X или Y → получаем эллипсы 31:29 — Практика настройки осциллографа: смещение, масштаб, сохранение 32:24 — Вывод: отказ от «функции» позволяет рисовать двумерные фигуры 32:44 — Но не любую картинку получится вывести — ограничения железа и математики 33:22 — Форматы PBM/PNM: текстовое представление картинки нулями/единицами 34:32 — Пример PBM: circle 32×32 как массив из 0 и 1 36:00 — Вариации формата: PGM (оттенки серого), PPM (цвет, RGB в тексте) 37:12 — Такие форматы используются как промежуточные для конвертации 37:54 — Они идеально подходят для экспериментов с фильтрами и обработкой изображений 38:32 — PBM-кружочек можно загрузить и показать на осциллографе 39:26 — Фишка: поддержка ASCII-графики, можно хранить картинку в виде символов 40:32 — Пример Linux-пайплайна: конвертация JPEG → PNM → PBM → таблица для осциллографа 41:16 — PBM = самый простой вид: нули и единицы в текстовом файле 41:42 — Проблемы передачи: артефакты и сбои электроники 42:09 — Идея: использовать микроконтроллер с кнопками как тренажёр для осциллографа 42:45 — Каждая кнопка → своя форма сигнала, искать и настраивать на экране 43:19 — ESP32-S3 больше дружит с C++ (библиотеки, периферия), чем с чистым C 43:40 — Возможность: писать собственные драйверы на C для работы с таким железом Конспект: https://github.com/olgapavlova/lectur...