RGB куб

RGB Led CubeИдея представленного светового куба хоть и не нова, но очень интересна, суть идеи заключается в применении 3-х осевого акселерометра, измеряющего проекции ускорения на три пространственные оси. По граням куба расположены трехцветные (RGB) светодиоды, яркость которых управляется посредством ШИМ. Значение яркости зависит от величины ускорения, каждый цвет соответствует одной пространственной оси, красный – оси X, зеленый – оси Y, синий – оси Z. Таким образом, при изменении ориентации, куб светится различными цветами.Читать далее »

Динамическая индикация. Подключение светодиодной матрицы к микроконтроллеру

Динамическая индикация
Иногда требуется подключить к микроконтроллеру несколько семисегментных индикаторов или светодиодную матрицу, при этом для отображения информации используется динамическая индикация. Суть динамической индикации заключается в поочередном выводе информации на индикаторы. Ниже на схеме представлен пример соединения нескольких семисегментных индикаторов (для примера с общим катодом) для реализации динамической индикации, вообще с учетом точки получается 8 сегментов, но по старинке их называют именно так. Все выводы (аноды) одноименных сегментов соединяют вместе, итого 8 линий которые через резисторы подключают к микроконтроллеру. Общий катод каждого индикатора подключают к микроконтроллеру через транзистор. Читать далее »

Таймеры. Организация временной задержки

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

Змейка и Тетрис на микроконтроллере

Тетрис и Змейка
Увидел как-то интересный видеоролик в сети, в нем демонстрировалась игра змейка реализованная на микроконтроллере и светодиодной матрице 8х8, потом нашел еще несколько подобных роликов, которые заинтересовали меня. Среди них также был ролик, где на “мощном” микроконтроллере была собрана игра тетрис. После просмотра, я решил разработать собственный вариант устройства, в котором совмещены обе игры, с применением микроконтроллера PIC16F688 и двух светодиодных матриц, которые отображают игровое поле с разрешением 8х16 точек.Читать далее »

Прерывания

Прерывания в микроконтроллерах очень часто используются при разработке радиоэлектронных устройств, они позволяют реализовать многозадачность, то есть параллельное выполнение нескольких задач. Под прерыванием подразумевается условный переход из какой-либо области памяти программ (во время выполнения основной программы) на четко определенный адрес в этой памяти, данный адрес еще называют вектором прерываний. Векторов может быть несколько, но в микроконтроллерах PIC16 только один вектор прерываний, и это адрес в памяти программ равный 0004h. По этому адресу размещают подпрограмму обработки прерываний (обработчик прерываний). Читать далее »

Косвенная адресация

Косвенная адресация очень удобная штука, когда необходимо оперировать с большим количеством регистров, о ней я упоминал еще в первой статье, здесь же покажу, как можно применить данный вид адресации.
Для работы с косвенной адресацией используется регистр специального назначения FSR и физически не реализованный регистр INDF. Принцип работы простой, в регистр FSR записываем адрес какого-либо регистра, пусть это будет регистр с названием temp (то есть адресу этого регистра присвоено название temp с помощью директивы equ), после чего содержимое регистра temp “условно” оказывается в регистре INDF. Теперь все операции, проделанные над регистром INDF, будут выполнены и для регистра temp, на самом же деле обращение к регистру INDF вызовет действие непосредственно с регистром temp, поэтому я и употребил термин “условно”.Читать далее »

Арифметические операции. Умножение и деление

Умножение и деление
В микроконтроллерах PIC16 отсутствует аппаратный блок умножения и деления чисел, но эти арифметические операции можно реализовать программным путем.
Операцию умножения можно представить в виде многократного сложения, деление – многократным вычитанием. Например, выражение 8х3=24 равнозначно 8+8+8=24, для деления в качестве примера возьмем следующее выражение 36:10=3,6. Алгоритм деления можно представить так: 36-10-10-10-10=-4, то есть вычитаем из 36 число 10 до тех пор, пока не получим отрицательный результат. При этом результатом операции деления является количество вычитаний, но только без учета последнего вычитания, которое привело к отрицательному результату, так как я рассматриваю здесь только целочисленные операции без дробных частей. В данном примере после четырех вычитаний получаем -4, соответственно ответ равен 3, без учета последнего вычитания.Читать далее »

Бесконечное зеркало

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

Изготовить данную конструкцию несложно, потребуется обычное зеркало, а также полупрозрачное, светодиоды, ну и конструкционные материалы для того чтобы собрать все вместе.Читать далее »