147-GC-Rogue начинаю добавлять другие дисплеи

Автор: | 02.11.2017

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

Помимо базового варианта игры с дисплеем OLED SPI, хотелось-бы иметь и вариант с OLED I2C (так как похоже — это наиболее популярный вариант OLED-дисплея). До начала реализации не было уверенности что с I2C что-то получится. Причина — относительно медленная скорость передачи данных в протоколе. И я оказался прав. На стандартной скорости протокола 400кГц экран прорисовывался хоть и без артефактов, но значительно медленней в сравнении с SPI дисплеем. Такое положение вещей меня не устроило и я решил поднимать скорость. На удивление дисплей без проблем работает с вдвое большей скоростью (выше  поднять скорость не позволяет софтовая реализация протокола). Увеличенная скорость нуждается в тестировании на разных дисплеях (я попробовал только на трех — все нормально).

На данный момент доступны несколько вариантов демо-версии игры: для OLED 4SPI, OLED I2C, Noki5110 (плюс варианты с кнопками).

Схемы для сборки игры (кликабельно) — остальные схемы Вы найдете в папках соответствующих проектов:

        

Прошивки доступны в Менеджере.

Просто скачайте, разархивируйте, запустите, кликните  «Update  all devices» и у Вас последние версии всех устройств. Далее, после каких либо моих изменений в прошивках, они все будут доступны из Менеджера (кликаем «Update  all devices»). Записать прошивку  в Ардуину можно прямо из Менеджера.

Картинки проектов из Менеджера — Вы не ошибетесь что Вам нужно!

      

* Вариант с дисплеем Nokia5110, в виду малого разрешения 84х48 и инертности самого дисплея, смотрится не так эффектно, но для «посмотреть» сгодится.

UPD. Добавил варианты с кнопками.

      

UPD.  Добавил варианты для UNO (не тестировал еще в железе)

   

Ну и напоследок — видео:

(Visited 3 104 times, 1 visits today)

147-GC-Rogue начинаю добавлять другие дисплеи: 29 комментариев

  1. GetChiper Автор записи

    Добавил варианты для кнопок и UNO.

  2. GetChiper Автор записи

    Добавил Nokia5110

  3. Pav

    здравствуйте. будет ли поддержка дисплея OLED I2C 1.3″ SH1106 ( распиновка Vdd/Gnd/Sck/Sda) ?
    заказал у китайца OLED I2C 1.3″ вместо OLED I2C 0.96″ думал чтобы экран был больше, а контроллер там оказался не SSD1306.

  4. Pav

    Ссылка на дисплей. Сейчас на экране мусор из точек и такое ощущение что всё изображение игрового процесса пытается поместиться в полоску из восьми пикселей.

  5. GetChiper Автор записи

    Привет!
    Сделать вариант I2C под SH1106 — не проблема (мой вариант 1.3 OLED SPI как раз на SH1106 ).
    Вот только у меня нет такого дисплея и я не смогу проверить работоспособность прошивки.

    Я готовлю следующую версию игры (уже будет доступен весь игровой процесс) и буду обновлять все варианты прошивок — сделаю и Ваш вариант — попробуете.

  6. Pav

    сделаю и Ваш вариант — попробуете

    спасибо. буду ждать.
    если вдруг понадобится потестить прошивку — pav13@mail.ru

  7. Andrew

    Я проверил подключение индикатора 0,96» SPI вместо 1,3» SPI по схеме
    + -> +
    GND -> GND
    D0 -> CLK
    D1 -> DIN
    RES -> RES
    DC -> D/C
    CS -> CS
    Так показывает заставку с надписями, скролит, вобщем работает,
    но индикатор отображает с сильно пониженной яркостью ((( В чем проблема отображения?
    Индикатор, ардуина, питание — заведомо исправны

  8. GetChiper Автор записи

    Имеется в виду яркость картинки на дисплее?
    Если дисплей отображает картинку — значит все подключено правильно.
    Какое напряжение на плюсовом выводе дисплея? (чем ближе к 5 тем лучше).
    Проверьте какой ток потребляет включенная в работу игра (ардуина + дисплей).
    Нормальный ток — до 50мА (зависит от картинки на экране). Это проверка на предмет неисправности комплектующих.

  9. Andrew

    Да. Имеется в виду яркость картинки на дисплее.
    Переключение с 3,3 на 5 вольт не меняет яркость в этой схеме. Ардуина + дисплей и скролится заставка потребление менее 10мА.

    У меня похоже индикатор 0.96 OLED SPI на SSD1306
    Может ли Ваша прошивка под 1.3 OLED SPI на SH1106 запуститься 0.96 OLED SPI на SSD1306? с таким вот глюком?

  10. GetChiper Автор записи

    Наверное в этом и причина.
    У меня уже висит в планах сделать вариант I2C под SH1106
    сделаю и 0.96 OLED SPI на SSD1306

    Не обещаю что это будет быстро, но к очередному обновлению игры постараюсь сделать

  11. Andrew

    Ага, оказывается тестирую я свой индикатор 0,96 OLED SPI на SH1106 с аппаратным SPI на D13/D11 ардуины нано и яркость индикатора в норме.
    Насколько я понял у Вас что то не так с программным SPI на D6/D5 и яркость индикатора понижена.

  12. GetChiper Автор записи

    Если-бы не работал как нужно программный SPI, то не было бы картинки вообще. Так что причина не в этом.
    Попробуйте запитать дисплей не от ног МК, а напрямую от источника питания (выводы Vcc и GND).

  13. Andrew

    В общем китайцы такие китайцы ((( Как определить тип контроллера в 0,96 OLED?
    У меня инициализации в библиотеке U8GLIB работают на вид одинаково.
    Это работает
    U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, DC = 9, RESET = 8
    или это тоже работает
    U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9,8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RESET = 8

  14. GetChiper Автор записи

    Эти контроллеры они почти одно и тоже — различия (касательно дисплеев) небольшие.

  15. Heorenmaru

    (чем ближе к 5 тем лучше)

    ардуинщике — криворукие люди…
    https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf
    страница 6, 47, Vdd — питание чипа, управляющего матрицей и оно должно быть не более 4v, а в идеале 3.3v
    яркость дисплея — страница 26, страница 28, таблица 9-1, 1 строка

    SH1106, с контрастом ищите тут
    https://www.elecrow.com/download/SH1106%20datasheet.pdf
    таблица на странице 29

    (команды у них похоже одинаковые)

  16. Andrew

    команды да одинаковые
    в некоторых случаях вроде как вылазит расхождение в 2 пискеля по экрану 128 или 130/132
    в стандартных библиотеках U8GLIB и HCuOLED никто не регулирует контраст, похоже стоит на макс,
    а вот если самому писать инициализацию, то возможны варианты

  17. Andrew

    да, при SPI подключении питание 3,3 или 5 не играет роли, более того он светит и работает вообще без питания по + ))) похоже он от Reset запитывается

  18. GetChiper Автор записи

    Контрастность у OLED скорей нужно воспринимать как яркость (почему в даташите оперируют понятием контрастность мне не понятно). Ее обычно по умолчанию в библиотеках ставят на среднее значение — и у меня так стоит. Максимальная яркость ускоряет выгорание пикселей, поэтому стараются ее без особой надобности не использовать.

    По поводу 5 вольт — я так понимаю, плата дисплея толерантна к такому ровню питания и логики (не смотря на то что контроллер матрицы на 3.3). По крайней мере у меня проблем не возникало.
    Кстати, уровень питания влияет на яркость

  19. Andrew

    OLED I2C 1.3″ SH1106 ( распиновка Vdd/Gnd/Sck/Sda) не показывает нормально
    все складывает в одну строчку, остальное мусор

  20. GetChiper Автор записи

    Именно под этот дисплей я еще буду делать вариант прошивки.

  21. Andrew

    похоже вот проблема с яркостью для SSD1306
    «0x8D — включение/выключение ёмкостного умножителя. При включении дисплея без использования этой команды, изображение будет едва видимо, даже, если командой 0х81 выставить максимальное значение контрастности. Дело в том, что рабочее напряжение дисплея – от 7В до 15В. Поскольку подаваемого на выводы модуля напряжения (3В – 5В) не достаточно, в его состав включён емкостной умножитель, повышающий уровень напряжения до необходимого. По сбросу/подаче питания этот узел отключен, поэтому второй обязательной командой в функции инициализации модуля должна быть, помимо 0хAF, команда включения ёмкостного умножителя. «

  22. Alexandr

    Попробовал собрать, прикольно вышло https://pikabu.ru/story/igra_na_arduinogsrogue_5888362
    Хорошо бы разработать под неё печатную плату. Вот думаю как бы её сделать на stm32, там и памяти побольше. Проблема с bootloader. А так было бы классно. Спасибо.

  23. GetChiper Автор записи

    Хорошо получилось.
    Подтяжку I2C необязательно делать — сам МК подтягивает линии.
    А питание, да — лучше напрямую на дисплей подать.

  24. Alexandr

    А насчёт stm32 и печатной платы? Просто я ещё очень плохо знаю easyidea. Может предложите программы для рисования попроще?

  25. GetChiper Автор записи

    С STM ничем помочь не смогу…
    О печатной плате пока не задумывался (нужно ли это для подобного устройства?)
    Кстати, уже у меня готова статья со сборкой маленькой консольки для этой игры — у Вас получилось почти то что я задумывал) только я сделал на Arduino pro mini — немного подправлю код игры и скоро опубликую статью (увидите — печатка не нужна).
    По поводу рисования (спрайтов насколько я понял?) то я пользуюсь фотошопом.

  26. GetChiper Автор записи

    Скинуть на почту что?
    В ATmega168 — прошивка не поместится.

  27. GetChiper Автор записи

    Уже опубликовал статью.

Добавить комментарий