Главная > Электронные Проекты > Месть Крошечные Pong VGA, теперь управляется с помощью одной кнопки

Месть Крошечные Pong VGA, теперь управляется с помощью одной кнопки

Tiny Pong VGA push button Как было отмечено на парней в Hackaday , я добавил простые кнопки в только вывод из моих Attiny45 для того, чтобы контролировать крошечные Pong VGA. Переключатель переключает весло направлении вверх и вниз, каждый раз, когда вы отпустите ее.

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


Аппаратные средства

По сравнению с Крошечные понг 1,0 , я просто добавил кнопки на PB5 с 10K Ом резистор, как тянуть вниз.
Вот фотография схемы на макетной плате.

Tiny Pong VGA on the protoboard

Крошечные Pong VGA на печатную


И я сделал прототип с Fritzing

Tiny Pong VGA - Fritzing

Крошечные Pong VGA - Fritzing


VGA pinout

VGA Цоколевка


ATtiny прошивки

Для использования в качестве PB5 портов ввода / вывода необходимо перепрограммировать ATtiny предохранители с некоторыми конкретными флагами. После того как вы сделаете это, вы не сможете перепрограммировать его больше с помощью обычного ISP программист. Если вам нужно прошить другой прошивкой, то вам нужно сбросить предохранители использованием высокого напряжения программист; этого работал штрафа для меня.
AVR GNU инструментарий используется для этого проекта, так что код написан на GNU ассемблер.
В целях создания прошивки, я использую следующий скрипт:

 #! / Бен / ш
 AVR-GCC-mmcu = Attiny45-mmcu = Attiny45-Wall-gdwarf-2-Os-STD = gnu99-funsigned-ха-funsigned-битовые поля, fpack-структура-fshort-перечислений-MD-MP-MT pong.o-MF pong.od-х ассемблер-с-CPP-Wa,-gdwarf2-с pong.S tables.S
 AVR-GCC-mmcu = Attiny45-Wl,-карта = pong.map pong.o tables.o-о pong.elf
 AVR-objcopy-O ihex-R. EEPROM-R. предохранитель-R. замок-R. подпись pong.elf pong.hex
 . AVR-objcopy-J EEPROM - набор сечения флаги = EEPROM = "идентификатор, нагрузки." -. изменение сечения, LMA EEPROM = 0 - не с изменением предупреждения-O ihex pong.elf pong.eep | | выход 0
 AVR-размер-C - MCU = Attiny45 pong.elf
 гт *. о
 гт *. од
 гт pong.eep
 гт pong.elf
 гт pong.map

И загрузить его на чип (заметьте, что я использую Arduino с мега-провайдер), я использую следующий скрипт

 #! / Бен / ш
 [-Е "/ dev/tty.usbserial-A8008VmU"] && PORT = / dev/tty.usbserial-A8008VmU | | PORT = / dev/ttyUSB0
 AVRDUDE-F-P $ PORT-р-Attiny45 с AVRISP-б 19200-U вспышки: ш: pong.hex
 # Предохранители
 # ВНИМАНИЕ: предохранители с PB5 как порты ввода / вывода
 # AVRDUDE-F-P $ PORT-р-Attiny45 с AVRISP-б 19200-U вспышки: ш: pong.hex-Ulfuse: ш: 0xce: м-Uhfuse: ш: 0x5F: м-Uefuse: ш: 0xff: м

Раскомментируйте последней строке запрограммировать предохранители.

Код

Исходный код почти такой же, как первая версия, но я исправлено несколько ошибок. Во-первых, алгоритм Брезенхэма было неправильно реализована, и так как мне нужно только рассчитать следующее положение шара, когда угол составляет 22,5 или 67,5, я понял, что легче было просто увеличивать X (или Y) координировать, когда мяч на четной позиции.
Что касается кнопки чтения, это делается в вертикальной развертки зоне, в 60 раз в секунду, что дает очень хорошую отзывчивость - см. chkinput метки в коде для более подробной информации.





Скачать Крошечные понг 2,0 исходный код
Наслаждайтесь!


  1. Пока нет комментариев.

Защита от спама на WP Captcha-Free