Как отрисовать пиксель на дисплее LCD 12864B

nurlanovic
nurlanovic аватар
Offline
Зарегистрирован: 16.06.2016

Здравствуйте, пацаны! Я в Arduino новичок, и по этому по-брацки, пацаны, помогите. В общем, есть Arduino Mega 2560 и дисплей LCD 12864B v2.0. Это дело подключается по параллельному интерфейсу. Вот тут такая распиновка:

1. GND

2. VCC

3. V0

4. RS

5. R/W

6. E

7-14. DB0-DB-7

15. PSB

16. NC

17. RST

18. VOUT

19. BLA

20. BLK

Подключать что как в принципе понятно, (за искючением RS, E, NC, RST, VOUT - я так и не понял зачем они). 

Меня интересует сам интерфейс/протокол работы с этим дисплеем. Как мне на этом дисплее отрисовать точку по указанным коордам? Что посылать нужно?

Мне бы научиться отрисовать всего лишь точку, а дальше я Брезенгхемом отрисую линии, Безьешкой кривые и т.д. Но, как отрисовать точку без всяких там библиотек и т.д.? Спасибо.

 

MagicianT
Offline
Зарегистрирован: 03.10.2015

Ну ежели без библиотеки, тогда всё одно парочку скачать надобно. Откройте, и выдерните кусок который пиксель рисует. Да, и инициализация потребуется, тоже заимствуйте. Если с нуля, то даташит 12864 контролера из интернета, там все команды расписаны, чего куда рассылать

nurlanovic
nurlanovic аватар
Offline
Зарегистрирован: 16.06.2016

Вроде потихоньку начинает допирать. Теперь у меня другой вопрос. Вот смотрите, я сейчас смотрю даташит ST7920. И там вот в битах  указан крестик, это что означает? Какой сигнал стоит подавать. Скрин прилагаю... 

Вот ссылка на даташит если что: http://pdf1.alldatasheet.com/datasheet-pdf/view/326219/SITRONIX/ST7920.html

MagicianT
Offline
Зарегистрирован: 03.10.2015

Х это когда по барабану, 0 или 1

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

буковкой X обычно обозначают "don't care", что по-русски значит "не @бёт" :)

nurlanovic
nurlanovic аватар
Offline
Зарегистрирован: 16.06.2016

Спасибо! Теперь у меня такой бред творится. Один скетч работает, а другой нет. Скрины прилагаю, (у меня Arduino MEGA 2560)

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

Плюс к тому, скетчи вроде бы одинаковые, а размер после компиляции разный. Тот который работает (называется test123) имеет меньший размер - 1 554 байт. А тот, который не работает - 1 694 байт. Всё без проблем компилится, но светодиод не моргает. Это какая-то особенность, да?

 

Cлева скетч НЕ работает, а справа - работает.

nurlanovic
nurlanovic аватар
Offline
Зарегистрирован: 16.06.2016

Попытался продебажить setup(). Ну, через Serial.println(); и он не работает, следовательно, не работает и сам setup(). Кстати, в папке (где скетч не пашет) ещё лежат cpp и h файлы, я написал классы (драйвер дисплея и т.д.), наверное это как-то влияет. Arduino.h подключил. Будем копаться дальше...

nurlanovic
nurlanovic аватар
Offline
Зарегистрирован: 16.06.2016

Короче, вот такие симптомы обнаружил. Когда, у класса нет конструктора, то всё нормально работает. А, стоит мне добавить обратно конструктор к классу, скетч не работает. Вот такие вот дела. Думаю, есть некая точка входа ибо когда мы вне setup() вызываем конструктор, то setup() просто игнорируется.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Пурга какая-то. У меня наверно с несколько десятков классов в проекте, все с конструкторами, часть - определена глобальными переменными, всё работает. Версия IDE - 1.6.7.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

nurlanovic, конструктор глобальной переменной вызывается до setup и до инициализации части железа, т.е. в нем доступны далеко не все возможности Ардуины. Поэтому инициализацию зачастую проводят не в контрукторе, а в отдельном методе, вызываемом из setup.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

andriano пишет:

nurlanovic, конструктор глобальной переменной вызывается до setup и до инициализации части железа, т.е. в нем доступны далеко не все возможности Ардуины. Поэтому инициализацию зачастую проводят не в контрукторе, а в отдельном методе, вызываемом из setup.

Не, ну если конечно тама с железкой какой жёстко работа идёт, да ещё в конструктор впихнутая - так это не проблема ардуины, это проблема автора такого конструктора.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

DIYMan пишет:

буковкой X обычно обозначают "don't care", что по-русски значит "не @бёт" :)

Да, а я думал, что X в даташитах, это просто сокращённая запись от "поХ" :))))

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

nurlanovic пишет:

Короче, вот такие симптомы обнаружил. Когда, у класса нет конструктора, то всё нормально работает. А, стоит мне добавить обратно конструктор к классу, скетч не работает. 

Ну и нахрена добавлять, если нормально работает без него?

nurlanovic пишет:

Думаю, есть некая точка входа ибо когда мы вне setup() вызываем конструктор, то setup() просто игнорируется.

Не-а. Не игнорируется.