G
enby!

Рисуем слона на осциллографе с помощью микроконтроллера и кода на C

Blink — это не только мигающий светодиод, но и шанс нарисовать слона, которого проглотил удав. Нарисовать прямо в осциллографе. По дороге к слону узнаем кое-что про ШИМ и регистры его настройки, придумаем, как вообще рисовать на осциллографе что попало и, конечно, переполним память микроконтроллера ATMega328p. При чём тут C? А без него бы ничего не получилось. Таймлайн: 00:00 — Вступление: новая игрушка — осциллограф, идея рисовать картинки 00:58 — Первая цель: «слон и удав» как картинка для эксперимента 01:22 — Как рождаются пет-проекты «из ничего» 02:05 — Жалость к мигающему светодиоду: от банального примера к развитию 02:42 — Если умеем мигать — значит, умеем подавать напряжение на пин 03:25 — Подключение осциллографа к D11, подготовка проводов 05:54 — Код «мигалки»: makefile, компиляция, прошивка на Arduino 06:47 — Первые сигналы на экране, настройка осциллографа 07:40 — Проблема калибровки, кнопка Auto спасает 09:20 — Проверка кода: задержка 500 мс слишком длинная 09:45 — Сокращаем задержку → видно чёткие нули и единицы 10:11 — Первый успех: «мигание» превратилось в бинарный сигнал на пине 10:36 — Ограничение: только 0 и 1 → нужно больше уровней 11:14 — Введение в ШИМ (широтно-импульсную модуляцию) простыми словами 12:27 — Таймеры и счётчики в микроконтроллере делают работу «за нас» 13:36 — Настройка таймера и регистра: определяем длительность «единицы» 16:19 — Первые эксперименты: порог 64, затем 128 и 30 → видим изменение формы 17:57 — Объяснение: встроенная программа считает до 255 и сравнивает с порогом 19:32 — Схема: таймер, порог, переключение 0↔1 21:19 — Код «ничего не делает», всё работает внутри микроконтроллера 22:31 — Настоящий эксперимент: динамическое изменение порога, сигнал «растёт и падает» 23:49 — Интервалы фиксированы, пропорция нуля и единицы меняется 24:43 — Осознание: «пахнет интегралами» — нужно сгладить ступеньки 25:36 — Схема RC-цепочки: конденсаторы + резистор → сглаживание ШИМ 27:13 — Подключение RC-цепочки, наблюдаем спрямлённую линию 29:21 — Регулировка резистора: из «зубцов» рождается ровная линия 30:57 — Добиваемся прямой линии → ШИМ + RC работают как ЦАП 32:07 — Изменение порога: 128 поднимает линию в 2 раза, 32 опускает в 4 раза 33:23 — Логика: изменяя порог динамически, можно рисовать линии с наклоном 34:49 — Приём: разные задержки для роста и падения → меняем наклон линии 36:14 — Демонстрация: линии под углом, управляем «тангенсом» 37:04 — Вывод: научились ставить точку в любое место экрана 37:53 — Равномерная задержка = возможность рисовать любую функцию y=f(x) 38:52 — Первый «слон» из массива порогов, подготовленные данные 39:55 — Осциллограф показывает знакомый силуэт слона 41:03 — Настройка триггера: фиксируем картинку на экране 42:04 — Удачная фотография «слоника» 42:22 — Идея закрасить картинку: чередуем точки «слон/удав» 45:05 — Слон в высоком разрешении: осциллограф начинает «захлёбываться» 44:43 — Решение: уменьшить разрешение, облегчить задачу 45:58 — Новый слон в 500 точек: картинка стабильнее 46:55 — Закрашивание: попеременные точки формируют заштрихованную фигуру 48:59 — Ограничение памяти: один микроконтроллер не тянет «слона и удава» вместе 49:23 — Но на меньшем разрешении результат есть: слон + удав на экране 49:41 — Итоги: освоили ШИМ, RC-цепочку и рисование картинок 50:25 — Теперь можно выводить любые линии и фигуры, вплоть до простого тетриса Конспект и код: https://github.com/olgapavlova/lectur...

Смотрите также