Алгоритм

Работа с энкодером

Работа микроконтроллера с энкодером

Энкодер - штука, внешне похожая на переменный резистор, но, в отличие от последнего, не имеет ограничителей и может вращаться в любую сторону бесконечно. С помощью энкодера очень удобно организовывать всякие экранные меню, вообще, один “нажимабельный” энкодер (т.е., если он умеет работать ещё и как кнопка) идеально подходит для для организации одномерных циклических меню.

Энкодеры бывают двух типов: абсолютные - сразу выдающие код угла поворота и инкрементальные - выдающие импульсы при вращении. Для последних подсчётом импульсов и их преобразованием их в угол поворота должен заниматься микроконтроллер.

С точки зрения конструкции энкодеры бывают механические и оптические, в первых импульсы при вращении генерируются на паре контактов при их замыкании скользящим контактом вала, во вторых же роль контактов выполняют фотодиоды, а роль замыкателя - светодиод, светящий через диск с прорезями (привет шариковой мышке).

Хотя информации по программированию энкодеров в сети навалом, как и готовых библиотек для этого, но все они какие-то излишне громозкие (имхо) - опрос состояния, как правило, реализуется в виде конечного автомата в виде блока switch с вложенными if-ами, что выглядит несколько сложно (особенно, будучи написанным на ассмеблере). Хотя, реализация может быть проще.

Объединение мелких изображений в атлас

Объединение мелких изображений в атлас

При разработке графических приложений (например, игр или web-приложений) часто возникает ситуация, когда есть множество файлов рисунков небольших размеров, либо файлы спрайтов анимации, которые было бы целесообразно поместить в один большой графический файл, так называемый "атлас". Атлас - это большое изображение, содержащее некоторое множество изображений меньшего размера, которые можно выбирать методом клиппинга прямоугольного региона. Какие преимущества дает использования атласов? Во-первых, сокращение количества файлов рисунков

Вычисление табличных функций на микроконтроллере

Вычисление табличных функций на AVR

При программировании микроконтроллеров иногда возникает задача вычисления достаточно сложных математических функций. И хотя стандартная библиотека AVR GCC включает поддержку вещественных чисел и вычисления базовых математических функций для них, на практике не всегда возможно использование этих средств. Поскольку микроконтроллеры AVR не имеют математического сопроцессора и команд для работы с вещественными числами, использование стандартных библиотечных процедур приводит к генерации относительно громозкого и

Алгоритм Брезенхема для регулирования мощности

Алгоритм Брезенхама

При создании микроконтроллерных устройств периодически возникает задача регулирования некой аналоговой величины, например, напряжения на выводе МК, яркости светодиода, мощности нагревательного элемента, и т.д. и т.п. Для формирования аналогового сигнала с заданной амплитудой на выводах МК часто используется метод широтно-импульсной модуляции - ШИМ. Вдаваться в теорию работы ШИМа не стану, в Сети все давно прекрасно описано. В основе ШИМ лежит подача на выход МК импульсов с изменяемой скважностью, чем выше скважность D (отношение длительности импульса к его периоду), тем выше будет амплитуда сигнала после пропусканияимпульсов через интегрирующую RC-цепочку

Подписка на Алгоритм