Как и обещал ранее, начинаю делать варианты игры под разные дисплеи. Решил сначала сделать варианты для дисплеев (чтобы побольше людей смогли потестить то, что уже сделано), а доделывать игру уже буду по факту обкатки.
Помимо базового варианта игры с дисплеем 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 (не тестировал еще в железе)
Ну и напоследок — видео:
Привет.
Как вернусь домой (через неделю) — проверю.
Добрый вечер. gcrogue.hex файл был залит на nano. Использую экран 5110. Пины экрана и nano подключены по инструкции. Картинки нет. Дисплей рабочий.
Привет!
Скачивай менеджер http://www.getchip.net/gcmanager/
И в пару кликов заливай — для нано оно и делалось.
please help , непойму как залить прошивку , и хватит ли места на Arduino nano c 328p чипом ?
Пока занят. Не могу сказать когда вернусь к игре. Но желание есть.
На про мини и хотел реализовать нано картриджи=), но за не имением про мини у меня нано. А так можно связать 2 микроконтроллера и будет супер. т.е. на одном интегрированном прошивка , а дискретный микроконтроллер как картридж. Тогда можно достаточно большие игры пилить.
И вопрос про LCD12864B, не подскажешь когда будет свободное время, что бы прошивку с ним выпустить?
Я сам электронщик, с платами на ты а вот программирование хромает.
Блин, классная идея — ардуины как картридж!
А если еще взять про мини, то при его стоимости и габаритах это вообще полноценный картриж.
Спасибо за идею — возможно я это использую.
Я был бы рад на большом экране консольку такую заиметь и детям давать для глаз безопасно. Замыливание не страшно, т.к. игра пошаговая. Идею одну сделал, может интересной покажется. Я посадил на игровую плату пины мама, а папы припаял к ардуино нано, залил разные игрушки на 3 разных нано и теперь ребенок меняет как картриджи без потери сохранений. А еще я запитал через пин «vin» батарею, между пином и батареей поставил тумблер. Теперь когда тумблер включен и воткнут юсб, батарея заряжается.
Привет!
Я думаю можно подключить, но есть два нюанса — первый это с какой максимальной скоростью можно будет в него передавать данные (но тут похоже ситуация будет даже лучше чем в I2C OLED), а второй — это инертность пикселей LCD (возможно будет замыливание при быстром движении спрайтов)
Привет! Проект очень понравился, интересует такой вопрос. Можно сделать большой дисплей по типу 12864b v2.0 по SPI. А то после 10 минут игры на олед дисплее глаза в кучку. Или есть какие то сложности с подключением такого дисплея?
Уже опубликовал статью.
Информацию про mini
Скинуть на почту что?
В ATmega168 — прошивка не поместится.
Хорошо скиньте на почту alexandrnikolaev1@gmail.com. Можно ещё добавить джойстик http://s.aliexpress.com/EvEFf2qm?fromSns. Интересно на nano atmega 168 будет работать?
С STM ничем помочь не смогу…
О печатной плате пока не задумывался (нужно ли это для подобного устройства?)
Кстати, уже у меня готова статья со сборкой маленькой консольки для этой игры — у Вас получилось почти то что я задумывал) только я сделал на Arduino pro mini — немного подправлю код игры и скоро опубликую статью (увидите — печатка не нужна).
По поводу рисования (спрайтов насколько я понял?) то я пользуюсь фотошопом.
А насчёт stm32 и печатной платы? Просто я ещё очень плохо знаю easyidea. Может предложите программы для рисования попроще?
Хорошо получилось.
Подтяжку I2C необязательно делать — сам МК подтягивает линии.
А питание, да — лучше напрямую на дисплей подать.
Попробовал собрать, прикольно вышло https://pikabu.ru/story/igra_na_arduinogsrogue_5888362
Хорошо бы разработать под неё печатную плату. Вот думаю как бы её сделать на stm32, там и памяти побольше. Проблема с bootloader. А так было бы классно. Спасибо.
похоже вот проблема с яркостью для SSD1306
«0x8D — включение/выключение ёмкостного умножителя. При включении дисплея без использования этой команды, изображение будет едва видимо, даже, если командой 0х81 выставить максимальное значение контрастности. Дело в том, что рабочее напряжение дисплея – от 7В до 15В. Поскольку подаваемого на выводы модуля напряжения (3В – 5В) не достаточно, в его состав включён емкостной умножитель, повышающий уровень напряжения до необходимого. По сбросу/подаче питания этот узел отключен, поэтому второй обязательной командой в функции инициализации модуля должна быть, помимо 0хAF, команда включения ёмкостного умножителя. «
Именно под этот дисплей я еще буду делать вариант прошивки.
OLED I2C 1.3″ SH1106 ( распиновка Vdd/Gnd/Sck/Sda) не показывает нормально
все складывает в одну строчку, остальное мусор
Контрастность у OLED скорей нужно воспринимать как яркость (почему в даташите оперируют понятием контрастность мне не понятно). Ее обычно по умолчанию в библиотеках ставят на среднее значение — и у меня так стоит. Максимальная яркость ускоряет выгорание пикселей, поэтому стараются ее без особой надобности не использовать.
По поводу 5 вольт — я так понимаю, плата дисплея толерантна к такому ровню питания и логики (не смотря на то что контроллер матрицы на 3.3). По крайней мере у меня проблем не возникало.
Кстати, уровень питания влияет на яркость
да, при SPI подключении питание 3,3 или 5 не играет роли, более того он светит и работает вообще без питания по + ))) похоже он от Reset запитывается
команды да одинаковые
в некоторых случаях вроде как вылазит расхождение в 2 пискеля по экрану 128 или 130/132
в стандартных библиотеках U8GLIB и HCuOLED никто не регулирует контраст, похоже стоит на макс,
а вот если самому писать инициализацию, то возможны варианты
ардуинщике — криворукие люди…
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
(команды у них похоже одинаковые)
Эти контроллеры они почти одно и тоже — различия (касательно дисплеев) небольшие.
В общем китайцы такие китайцы ((( Как определить тип контроллера в 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
Если-бы не работал как нужно программный SPI, то не было бы картинки вообще. Так что причина не в этом.
Попробуйте запитать дисплей не от ног МК, а напрямую от источника питания (выводы Vcc и GND).
Ага, оказывается тестирую я свой индикатор 0,96 OLED SPI на SH1106 с аппаратным SPI на D13/D11 ардуины нано и яркость индикатора в норме.
Насколько я понял у Вас что то не так с программным SPI на D6/D5 и яркость индикатора понижена.
Наверное в этом и причина.
У меня уже висит в планах сделать вариант I2C под SH1106
сделаю и 0.96 OLED SPI на SSD1306
Не обещаю что это будет быстро, но к очередному обновлению игры постараюсь сделать
Да. Имеется в виду яркость картинки на дисплее.
Переключение с 3,3 на 5 вольт не меняет яркость в этой схеме. Ардуина + дисплей и скролится заставка потребление менее 10мА.
У меня похоже индикатор 0.96 OLED SPI на SSD1306
Может ли Ваша прошивка под 1.3 OLED SPI на SH1106 запуститься 0.96 OLED SPI на SSD1306? с таким вот глюком?
Имеется в виду яркость картинки на дисплее?
Если дисплей отображает картинку — значит все подключено правильно.
Какое напряжение на плюсовом выводе дисплея? (чем ближе к 5 тем лучше).
Проверьте какой ток потребляет включенная в работу игра (ардуина + дисплей).
Нормальный ток — до 50мА (зависит от картинки на экране). Это проверка на предмет неисправности комплектующих.
Я проверил подключение индикатора 0,96» SPI вместо 1,3» SPI по схеме
+ -> +
GND -> GND
D0 -> CLK
D1 -> DIN
RES -> RES
DC -> D/C
CS -> CS
Так показывает заставку с надписями, скролит, вобщем работает,
но индикатор отображает с сильно пониженной яркостью ((( В чем проблема отображения?
Индикатор, ардуина, питание — заведомо исправны
спасибо. буду ждать.
если вдруг понадобится потестить прошивку — pav13@mail.ru
Привет!
Сделать вариант I2C под SH1106 — не проблема (мой вариант 1.3 OLED SPI как раз на SH1106 ).
Вот только у меня нет такого дисплея и я не смогу проверить работоспособность прошивки.
Я готовлю следующую версию игры (уже будет доступен весь игровой процесс) и буду обновлять все варианты прошивок — сделаю и Ваш вариант — попробуете.
Ссылка на дисплей. Сейчас на экране мусор из точек и такое ощущение что всё изображение игрового процесса пытается поместиться в полоску из восьми пикселей.
здравствуйте. будет ли поддержка дисплея OLED I2C 1.3″ SH1106 ( распиновка Vdd/Gnd/Sck/Sda) ?
заказал у китайца OLED I2C 1.3″ вместо OLED I2C 0.96″ думал чтобы экран был больше, а контроллер там оказался не SSD1306.
Добавил Nokia5110
Добавил варианты для кнопок и UNO.