- Огляд:
- Необхідні компоненти:
- Пояснення схеми:
- Робота акселерометра:
- Програмування Arduino:
- Обробка програмування:
- Тестування:
Розширена реальність та віртуальні ігри стали недавньою тенденцією в ігровій галузі. Часи використання клавіатури / джойстика та миші для гри в комп’ютерну гру пішли позаду. Тепер кожна ігрова консоль поставляється з віртуальним контролером, який допомагає нам грати в гру за допомогою рухів тіла та жестів, таким чином ігровий досвід значно збільшився, і користувач відчуває себе більш залученим у гру.
У цьому проекті давайте спробуємо розважитися, коли ми вчимось через проект. Давайте створимо гру (так, ви чули, як я розумію, ми хочемо створити гру) і пограємо в неї, використовуючи рух вашої руки. Ми створюємо класичну гру в пінг-понг з використанням Arduino та акселерометра.
Огляд:
На сьогоднішній день доступно безліч програм з відкритим кодом, що принесло багато щастя для таких любителів, як ми, і Processing - одне з них. За допомогою цієї програми на основі JAVA ми можемо створити власне програмне забезпечення (формат.exe), а також додаток для Android (файл.apk). Отже, ми збираємося використовувати це програмне забезпечення для побудови нашої гри, ми вже використовували Processing для створення Ардуїнової кімнати для чату.
Апаратна частина буде складатися з Arduino, який буде отримувати вхідні дані з акселерометра, щоб послідовно подавати їх на наш комп’ютер / ноутбук.
Тож вирушаємо за покупками !!!!
Необхідні компоненти:
- Arduino (будь-яка версія або модель)
- Акселерометр
- Підключення проводів
- Відсотки (Lolz)
Акселерометр і Arduino Nano
Пояснення схеми:
Схема проекту Arduino Ping Pong Ball Game не передбачає складних з'єднань. Я використовував Arduino Nano з акселерометром. Але є кілька речей, про які слід подбати, як зазначено нижче:
1. Ваш акселерометр не може обробити 5 В, тому завжди підключайте Vcc акселерометра до вашого 3,3-вольтового виводу Arduino.
2. Кожен акселерометр страждає від дії сили тяжіння, з якою потрібно боротися під час програмування (просто використовуючи фільтр).
Маючи це на увазі, давайте розглянемо роботу акселерометра та те, як ми ним користуємось.
Робота акселерометра:
Акселерометр є пристроєм, яке може перетворити прискорення в будь-якому напрямку до відповідного змінної напруги. Це досягається за допомогою конденсаторів (посилання на зображення), коли Accel рухається, конденсатор, що знаходиться всередині нього, також зазнає змін (посилання на зображення) залежно від руху, оскільки ємність змінюється, можна також отримати змінну напругу.
Отже, як уже згадувалося вище, кожен акселерометр страждає від проблеми сили тяжіння. Незалежно від того, наскільки точно відкалібрований ваш датчик (навіть ваші телефони Apple Accel.), На нього впливатиме гравітація. Більш технічне пояснення цієї проблеми наведено нижче.
Тепер в Arduino ми можемо зменшити вплив сили тяжіння за допомогою простого фільтра. Цей фільтр буде складатися з двох масивів, один використовується для зберігання значень вибірки з датчика, а інший - для сортування значень вибірки та пошуку найбільш повторюваного значення. Давайте застосуємо цей алгоритм у нашому Arduino і підготуємо наше обладнання.
Програмування Arduino:
Програма Arduino наведена нижче в розділі Код. Немає важливих даних, які потрібно модифікувати. Але ви можете розглянути наступне:
Збільште розмір вибірки, якщо ваш Accel все ще відображає випадкові значення.
#define Samplesize 13 // номер фільтра вибірки
Грайте зі швидкістю передачі даних 9600, щоб збільшити швидкість зв'язку між Arduino та Processing. Але обов’язково змініть їх в обох програмних продуктах (програмах).
void setup () {Serial.begin (9600); }
Мій акселерометр на осі X дає 193 на крайньому лівому кінці та 280 на крайньому правому кінці, виміряйте їх для вашого Accel та оновіть значення.
toSend = карта (smoothData1, 193, 280, 0, 255);
Значення відображаються в один байт даних для послідовного зв'язку.
Далі перевірте коментарі в наведеному нижче Кодексі, щоб зрозуміти їх чітко.
Обробка програмування:
Processing - це відкрите програмне забезпечення, яке художники використовують для графічного дизайну. Це програмне забезпечення використовується для розробки програмного забезпечення та програм для Android. Його досить легко розробити і дуже схожий на IDE для розробки Android. Тому я скоротив пояснення.
Код обробки гри в пінг-понг наведено тут:
- Код обробки гри Arduino Ping Ball
Клацніть правою кнопкою миші та натисніть "Зберегти посилання як..", щоб завантажити файл коду. Потім відкрийте файл у програмі «Обробка» та натисніть кнопку «Виконати», щоб відтворити гру. Вам потрібно встановити програмне забезпечення «Обробка», щоб відкрити файли *.pde. Розділ коментарів відкритий для запитів, а також перевіряйте коментарі в Програмі, щоб краще їх зрозуміти.
Нижче, у функції void setup () функція обробки коду є важливою, оскільки вона вирішує, з якого порту отримувати дані.
port = new Serial (this, Serial.list (), 9600); // Зчитує 4-й ПОРТ зі швидкістю передачі даних 9600
Тут я прочитав дані з 4-го порту з мого Arduino.
Так, наприклад, якщо у вас є COM COM COM COM COM
Тоді вищевказаний код буде зчитувати дані з COM.
Тестування:
Тепер, оскільки наш ескіз обробки та Arduino готовий, просто завантажте на Arduino вказану нижче програму та підключіть ваш Arduino до кабелю програмування ПК користувача та запустіть гру, запустивши файл коду обробки (.pde). Це воно! Перемістіть акселерометр і пограйте в пінг-понг. Відео проведе вас через весь проект.
Після того, як ви зрозуміли програму, ви можете створити безліч подібних ігор і грати в них за допомогою вашого Arduino. Крім того, вісь Y і вісь Z також можуть бути включені для ігор.