Pull to refresh

Кто сказал, что LCD-1602 не графический дисплей?

У вас в устройстве в наличии только текстовый дисплей? А хочется бы вывести на него что-то этакое?
Почему бы не сделать этого, тем более, что такая возможность есть.
image


Давно хотел в качестве хобби попробовать «на вкус» работу с микроконтроллерами.
И тут на дилэкстриме появился в продаже очень интересный набор Arduino UNO Starter Kit.
Набор достаточно интересен тем, что в нем практически есть всё, что нужно начинающему за реально смешные деньги.
С помощью него, практически, можно собрать любое устройство из примеров идущих к Arduino и даже больше.

После двухнедельного ожидания набор попал мне в руки и, наверно, как и каждый, сначала я поморгал светодиодом, потом подключил серву, потом шаговые движки с джойстиком и наконец, дошли руки до идущего в комплекте LCD-1602.
image
Выведя пару строк текста, я заинтересовался тем, что контроллер 1602 позволяет создавать 8 пользовательских символов. Сразу вспомнилось далекое детство и компьютер Альфа-БК(Радио86-РК) и как мы создавали игры комбинируя символы псевдографики. Тут же пришло в голову: Почему бы не попробовать сделать подобное?
Ведь можно объединить символы, которые используются для пользовательского набора, например в строку или прямоугольник 2х4 и постоянно изменяя символы пользовательского набора сделать подобие графического окна с текстовом дисплее.
Быстрый серфинг по инету показал, что такого до меня никто не делал, а значит это интересно(а заодно и получить инвайт).

Вот, что в итоге получилось:
Каждый символ состоит из 5х8 точек, они составляются из 8 байт из которых используется по 5 бит под точки.
Примерно так можно загрузить в массив следующий набор:
0b00000000
0b00111100
0b01000010
0b01000010
0b01000010
0b00111100
0b00000000
0b00000000

… и получить символ «бублика».
Таким образом 8 символов составляют массив 8х8 байт (хотя даже меньше, ведь по горизонтали используется только 5 бит ) или графическое поле 8х40 точек.
Написал функции которые устанавливают нужный бит по координатам, стирают бит по координатам и определяют наличие точки, а так же функции обновления значений графического окна и пара вспомогательных — сдвиг она на 1 бит влево или вправо. Для тестирования придумалась игра ввиде ралли: формируется постоянно движущаяся дорога, которая скроллируется и по ней движется точка-машинка, управляемая с помощью джойстика. Столкновения с обочиной дороги регистрируются как штрафы. Выигрывает тот, кто за определенное время набрал меньше штрафов.
Подключение дисплея стандартное, как в примерах, джойстика — на аналоговые входы X->A0, Y->A1.

Вот, что получилось:
http://www.youtube.com/watch?v=PiMUPTLzK1w

Скетч для скачивания.
Сама возможность вывести немного графической информации на LCD-1602 на самом деле наверно имеет больше академическое значение, хотя вполне можно, например, для датчика температуры выводить графики дневного колебания.
Может кто-то придумает и другое назначение?

P.S. Сейчас на подходе более серьезный набор набор — простор для исследователя!
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.