Ничего не найдено :(
    В гостях у Самоделкина! » С сайтов » Спец » Электронная игра на базе платы Microbit

    Электронная игра на базе платы Microbit


    Было время, когда каждый ребенок СССР хотел портативную электронную игру типа «Ну погоди» или «Автогонки«». Игра сочетала в себе очень простой ЖК-экран с очень простой игровой механикой.
    В западных странах тоже были такие электронные игрушки. Выпускались они фирмой Nintendo Game & Watch. Одной из первых была игра Fire, где игрок перемещал страховочную сетку пожарных влево или вправо, чтобы перебросить жителей из горящего здания слева в ожидавшую его машину скорой помощи справа

    Свою игру он назвал Post (почта) и в ней нужно перебрасывать письма слева направо с помощью ракетки.

    Инструменты и материалы:
    -Microbit;
    -Коммутационная плата;
    -Макетная плата с шинами питания;
    -1,3-дюймовый OLED-дисплей 128x64 с поддержкой I²C;
    -Тактовые кнопки - 2 шт;
    -Перемычки;
    -Батарейка 3V;
    -Держатель для батарейки;

    Шаг первый: программирование
    Редактор Mu - это редактор для Micro: bit, по сути - MicroPython для Micro: bit. После установки Mu открываем редактор и подключаем Micro: bit к компьютеру. В левом нижнем углу окна редактора Mu, в строке состояния, должно прописаться подтверждение, что он «обнаружил новое устройство BBC micro: bit».
    Затем нужно убедиться, что код Python может быть записан на бит Micro :. В редакторе Mu нажимаем кнопку New, чтобы создать новый файл Python, и вводим следующий простой код:
    from microbit import *
    
    display.scroll("Hello, World!")

    Нажимаем кнопку Flash в редакторе Mu. Желтый светодиод на бите Micro: должен начать мигать, указывая на то, что выполняется файловая операция. Когда операция закончится, Micro: bit должен прокрутить «Hello, World!» на его светодиодном дисплее 5x5.

    Чтобы Micro: bit отправлял инструкции на OLED-дисплей, нужно установить некоторые библиотеки Python на Micro: bit. Редактор Mu делает это очень просто.
    Сначала находим домашний каталог для Mu.
    Далее копируем все файлы Python (все файлы с расширением .py) из репозитория fizban на Github и помещаем копии в домашний каталог Mu.
    В редакторе Mu нажимаем кнопку Files. Это действие откроет две панели внизу редактора. Слева находятся файлы на Micro: bit - может быть один или несколько файлов, в зависимости от того, что вы делалось ранее с Micro: bit. Справа находятся файлы .py в домашнем каталоге, в том числе файлы ssd1306, которые были скопированы из репозитория fizban.
    Перетаскиваем следующие три файла с правой панели ( домашний каталог) на левую панель (бит Micro:), которая ssd1306.py
    ssd1306_px.py
    ssd1306_text.py
    Для этого проекта нам нужны только эти три файла, остальные могут понадобиться в других проектах.
    Нажимаем кнопку «Files» еще раз, чтобы удалить нижние панели и снова сделать кнопку «Flash» доступной.
    Чтобы узнать, все ли по-прежнему работает нормально, нужно обновить программу Hello.
    from ssd1306 import initialize, clear_oled, draw_screen
    from ssd1306_px import set_px
    from ssd1306_text import add_text
    from microbit import *
    
    display.scroll("Import Successful!") 

    Загружаем код на Micro: bit. Если на экране прокручивается “Import Successful!”, можно перейти к следующему шагу.

    Шаг второй: подключение коммутационной платы
    Внизу Micro: bit находятся 25 контактов (золотая полоска). Пять из них имеют размер, чтобы их можно было использовать с зажимами. Чтобы использовать остальные 20 контактов, нужно вставить Micro: bit в коммутационную плату. Для данного проекта OLED нужна коммутационная плата, которая обеспечивает доступ к контактам 19 и 20, поскольку это контакты, которые реализуют протокол связи I²C.
    Можно использовать простую программу Python, чтобы проверить, работает ли коммутационная плата. Ниже представлен код, который просто показывает, была ли нажата кнопка A или кнопка B на бите Micro :.

    Нужно загрузить эту программу в Micro: bit, прежде чем подключать ее к коммутационной плате. При нажатии кнопки A на светодиодном дисплее должно отображается «A», а при нажатии кнопки B на светодиодном дисплее отображается «B».
    Дальше устанавливаем Micro: бит в коммутационную плату. В зависимости от платы может загореться светодиод, показывая, что она подключена и получает питание от Micro: bit.

    Если мы посмотрим на схему контактов Micro: bit , то увидим, что контакт 5 используется совместно с кнопкой A на Micro: bit, а контакт 11 используется совместно с кнопкой B. Чтобы проверить, работает ли коммутационная плата, вставляем одну перемычку к контакту 5, одну перемычку к контакту 11 и одну перемычку к GND. Если теперь прикоснутся к контакту 5 и проводам GND, мы увидим «A» на светодиодном дисплее, потому что контакт 5 был «сброшен на GND», что аналогично нажатию кнопки A. Прикосновение к контакту 11 и GND покажут на светодиодном дисплее букву B. Это значит, что Micro: bit и коммутационная плата подключены правильно.

    Шаг третий: макетная плата
    Хотя этот проект можно было бы реализовать без макетной платы, но ее использование упрощает монтаж.

    Для большинства проектов Micro: bit питание обеспечивается либо через USB-соединение с компьютером, либо, в качестве альтернативы, путем подключения батареи 3 В к разъему JST.

    Для проекта, в котором плата Micro: bit работает с внешними компонентами, коммутационная плата может не обеспечивать достаточное количество соединений 3 В и GND для питания всех внешних компонентов. Можно решить эту проблему, подключив контакт 3V и контакт заземления (GND) к шинам питания макета. Сделать это просто.
    -С помощью перемычки подключаем 3 В на коммутационной плате к + силовой шине на макетной плате.
    -С помощью перемычки соединяем GND на коммутационной плате с шиной питания на макетной плате.

    Теперь есть коммутационная плата и макет, позволяющие подключать электронные компоненты к Micro: bit, сначала подключим наш OLED-дисплей.

    Устанавливаем OLED-дисплей на макетную плату так, чтобы каждый из его контактов был подключен к отдельной пронумерованной строке. Например, вывод GND подключен к строке 10, а соседний вывод VCC подключен к строке 11 и так далее. Если все контакты OLED находятся в одном пронумерованном ряду, OLED вставлен неправильно и его необходимо повернуть на 90 градусов.
    Затем нужно использовать перемычки для подключения каждого вывода OLED к определенным выводам Micro: bit на коммутационной плате:
    OLED GND к Micro: бит GND
    OLED VCC к Micro: бит 3 В
    OLED SCL к Micro: бит, вывод 19
    OLED SDA к Micro: бит, вывод 20
    Дальше нужно загрузить следующий код Python на Micro: bit. Если все компоненты и все соединения работают, на дисплее будет отображаться “Hello!”.
    from ssd1306 import initialize, clear_oled, draw_screen
    from ssd1306_px import set_px
    from ssd1306_text import add_text
    from microbit import *
    
    initialize()
    clear_oled()
    add_text(0, 0, "Hello!")

    Дальше можно загрузить небольшую программу для проверки отображения пикселей. Хотя OLED имеет разрешение дисплея 128 на 64 пикселя, каждый пиксель крошечный, поэтому библиотека Python ssd1306 использует четыре пикселя каждый раз, когда получает указание рисовать «пиксель» на дисплее. То есть только сетка 64x32. Вот почему в игре такая рудиментарная графика. (Тем не менее, он намного лучше, чем светодиодный дисплей 5x5, который есть у Micro: bit.)
    from ssd1306 import initialize, clear_oled, draw_screen
    from ssd1306_px import set_px
    from ssd1306_text import add_text
    from microbit import *
    
    initialize()
    clear_oled()
    for y in range(31):
        for x in range(63):
            set_px(x, y, 1, 0)
            draw_screen()


    Дальше переходим к кнопкам. Здесь можно использовать отдельные тактовые кнопки или кнопки на плате Micro: bit. Тактовые кнопки сделают игру более естественной, потому что их можно разместить по обе стороны от OLED-дисплея.
    Располагаем каждую кнопку на макетной плате так, чтобы две ножки находились ниже среднего разделителя, а две ножки - выше среднего разделителя. Ножки под средним разделителем не имеют электрического контакта - они для того, чтобы кнопка аккуратно стояла на плате. Ножки над перегородкой подключаются следующим образом:
    Для левой кнопки подключаем одну ногу к контакту 5, а другую - к GND;
    Для правой кнопки подключаем одну ногу к контакту 11, а другую - к GND.
    Если нажата левая кнопка, она закрывает соединение между контактом 5 и GND, что сигнализирует биту Micro: о том, что кнопка A была нажата. При нажатии правой кнопки соединение между контактом 11 и GND замыкается, что сигнализирует биту Micro: о том, что кнопка B была нажата.
    Для тестирования используем следующий код.


    Шаг четвертый: код
    Изначально на экране отображаются два конверта, которые необходимо ловить. Конверты падают с определенной скорость. По мере игры, интервал между падением конвертов уменьшается и наступает момент, когда на экране находятся три конверта одновременно.
    За каждый пойманный конверт начисляются очки, если пропустить три конверта, то игра заканчивается.

    Изначально предполагалось, что игра должна иметь гораздо более богатую графику. Какой бы объект ни отскакивал слева направо по экрану, он менял бы форму в каждой точке траектории - точно так же, как в оригинальных играх Nintendo Game & Watch.
    Реализация такой графики усложнила код и в итоге мастер решил оставить одну форму.

    Полный код можно скачать ниже.

    microbit-post-game.py

    Шаг пятый: печатная плата и корпус
    Макетная плата позволяет очень легко монтировать и тестировать схему, но она не идеальна для готового продукта. Чтобы получить меньший форм-фактор с большей стабильностью, можно сделать схему на макете печатной платы (PCB).
    Для этого необходимо припаять компоненты и провода к плате. На изображении ниже, слева показана исходная макетная версия, а справа - версия печатной платы.

    Последнее что нужно сделать - это корпус. Для корпуса можно приспособить любую подходящую коробку или сделать ее самому.

    Источник (Source)
    Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.

    Программируемая клавиатура на Raspberry

    Электронный термометр с удаленной передачей данных

    0
    Идея
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    0
    Описание
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    0
    Исполнение
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    Итоговая оценка: 0.0 из 10 (голосов: 0 / История оценок)

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

    1 комментарий
    Korolev

    Было время, когда каждый ребенок СССР хотел портативную электронную игру типа "Ну погоди" или "Автогонки"

    Помню, было время! И уже совсем не ребёнком, но купил-таки в Питере ту, где волк с корзиной яйца ловит! smile 

    Свою игру он назвал Post (почта) и в ней нужно перебрасывать письма слева направо с помощью ракетки

    И всё??? Ни заяц не выглядывает, ни цыплята не вылупляются? Не, такую скучную я бы не купил!

    Привет, Гость!


    Зарегистрируйтесь

    Или войдите на сайт, если уже зарегистрированы...

    Войти

    Добавьте самоделку

    Добавьте тему

    Онлайн чат

    Последние комментарии

    Все комментарии