Електронна гра на базі плати microbit

50

Був час, коли кожна дитина срср хотів портативну електронну гру типу «ну постривай» або «автогонки». Гра поєднувала в собі дуже простий рк-екран з дуже простою ігровою механікою. У західних країнах теж були такі електронні іграшки. Випускалися вони фірмою nintendo game&watch. Однією з перших була гра fire, де гравець переміщував страхувальну сітку пожежників вліво або вправо, щоб перекинути жителів з палаючої будівлі зліва в чекала його машину швидкої допомоги справа.свою гру він назвав post (пошта) і в ній потрібно перекидати листи зліва направо за допомогою ракетки.інструменти та матеріали: — microbit; — комутаційна плата; — макетна плата з шинами живлення; — 1,3-дюймовий oled-дисплей 128×64 з підтримкою i2c; — тактові кнопки-2 шт; — перемички; — батарейка 3v; — тримач для батарейки;

Крок перший: програмуванняредактор mu-це редактор для micro: bit, по суті — micropython для micro: bit. Після установки mu відкриваємо редактор і підключаємо micro: bit до комп’ютера. У лівому нижньому кутку вікна редактора mu, в рядку стану, має прописатися підтвердження, що він «виявив новий пристрій bbc micro: bit».потім потрібно переконатися, що код python може бути записаний на біт micro:. У редакторі mu натискаємо кнопку new, щоб створити новий файл python, і вводимо наступний простий код:

Показати / приховати текст

Натискаємо кнопку flash в редакторі mu. Жовтий світлодіод на біті micro: повинен почати блимати, вказуючи на те, що виконується файлова операція. Коли операція закінчиться, micro: bit повинен прокрутити «hello, world!»на його світлодіодному дисплеї 5×5.

Щоб micro: bit відправляв інструкції на oled-дисплей, потрібно встановити деякі бібліотеки python на micro: bit. Редактор mu робить це дуже просто.спочатку знаходимо домашній каталог для mu.далі копіюємо всі файли python (всі файли з розширенням .py) з репозиторію fizban на github і поміщаємо копії в домашній каталог mu.у редакторі mu натискаємо кнопку files. Ця дія відкриє дві панелі внизу редактора. Зліва знаходяться файли на micro: bit-може бути один або кілька файлів, в залежності від того, що ви робилося раніше з micro: bit. Праворуч знаходяться файли. Py в домашньому каталозі, в тому числі файли ssd1306, які були скопійовані з сховища fizban.перетягуємо наступні три файли з правої панелі (домашній каталог) на ліву панель (біт micro:), яка ssd1306.pyssd1306_px.pyssd1306_text.рудля цього проекту нам потрібні тільки ці три файли, інші можуть знадобитися в інших проектах.натискаємо кнопку «files» ще раз, щоб видалити нижні панелі і знову зробити кнопку «flash» доступною.щоб дізнатися, чи все як і раніше працює нормально, потрібно оновити програму hello.

Завантажуємо код на micro: bit. Якщо на екрані прокручується » import successful!», можна перейти до наступного кроку.

Внизу micro: bit знаходяться 25 контактів (золота смужка). П’ять з них мають розмір, щоб їх можна було використовувати з затискачами. Щоб використовувати інші 20 контактів, потрібно вставити micro: bit в комутаційну плату. Для даного проекту oled потрібна комутаційна плата, яка забезпечує доступ до контактів 19 і 20, оскільки це контакти, які реалізують протокол зв’язку i2c.можна використовувати просту програму 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: біт gndoled vcc до micro: біт 3 вoled scl до micro: біт, висновок 19oled sda до micro: біт, висновок 20дальше потрібно завантажити наступний код python на micro: bit. Якщо всі компоненти і всі з’єднання працюють, на дисплеї буде відображатися » hello!”.from ssd1306 import initialize, clear_oled, draw_screenfrom ssd1306_px import set_pxfrom ssd1306_text import add_textfrom microbit import *

Initialize()clear_oled()add_text(0, 0, «hello!») далі можна завантажити невелику програму для перевірки відображення пікселів. Хоча oled має роздільну здатність дисплея 128 на 64 пікселі, кожен піксель крихітний, тому бібліотека python ssd1306 використовує чотири пікселі кожного разу, коли отримує вказівку малювати» піксель » на дисплеї. Тобто тільки сітка 64×32. Ось чому в грі така рудиментарна графіка. (тим не менш, це набагато краще, ніж світлодіодний дисплей 5×5, який має micro: bit.)

Показати / приховати текст

Далі переходимо до кнопок. Тут можна використовувати окремі тактові кнопки або кнопки на платі micro: bit. Тактові кнопки зроблять гру більш природною, тому що їх можна розмістити по обидві сторони від oled-дисплея.маємо в своєму розпорядженні кожну кнопку на макетній платі так, щоб дві ніжки знаходилися нижче середнього роздільника, а дві ніжки — вище середнього роздільника. Ніжки під середнім роздільником не мають електричного контакту — вони для того, щоб кнопка акуратно стояла на платі. Ніжки над перегородкою підключаються наступним чином:для лівої кнопки підключаємо одну ногу до контакту 5, а іншу — до gnd;для правої кнопки підключаємо одну ногу до контакту 11, а іншу — до gnd.якщо натиснута ліва кнопка, вона закриває з’єднання між контактом 5 і gnd, що сигналізує біту micro: про те, що кнопка a була натиснута. При натисканні правої кнопки з’єднання між контактом 11 і gnd замикається, що сигналізує біту micro: про те, що кнопка b була натиснута.для тестування використовуємо наступний код.

Показати / приховати текст

Крок четвертий: кодизначально на екрані відображаються два конверта, які необхідно ловити. Конверти падають з певною швидкість. У міру гри, інтервал між падінням конвертів зменшується і настає момент, коли на екрані знаходяться три конверта одночасно. За кожен спійманий конверт нараховуються очки, якщо пропустити три конверта, то гра закінчується.

Спочатку передбачалося, що гра повинна мати набагато багатшу графіку. Який би об’єкт не відскакував зліва направо по екрану, він змінював би форму в кожній точці траєкторії-точно так само, як в оригінальних іграх nintendo game&watch.реалізація такої графіки ускладнила код і в підсумку майстер вирішив залишити одну форму.

Повний код можна завантажити нижче.

Microbit-post-game.py

Крок п’ятий: друкована плата і корпусмакетная плата дозволяє дуже легко монтувати і тестувати схему, але вона не ідеальна для готового продукту. Щоб отримати менший форм-фактор з більшою стабільністю, можна зробитиСхему на макеті друкованої плати (pcb).для цього необхідно припаяти компоненти і дроти до плати. На зображенні нижче, зліва показана вихідна макетна версія, а праворуч — версія друкованої плати.