- Вимоги до програмного та апаратного забезпечення:
- Концепція позаду:
- Кругова діаграма:
- Програма Arduino:
- Робоча:
Все почалося з маленької гри з темних віків під назвою "Маріо", ще з часів крихітного маленького хлопчика, який стрибав на качках, щоб врятувати мою принцесу, поки не став чоловічим красивим принцом, що бродив у Персії (Принц Персії), борючись проти темряви щоб врятувати свій світ, я був великим шанувальником гри у відеоігри, і я виріс, граючи в них. Але вони часом нудьгують, і я відчуваю себе менш залученим у це. Сьогодні вдосконалені ігрові приставки дозволяють віртуальні ігри та допомагають нам відчувати гру набагато краще, ніж це може зробити клавіатура або миша.
Будучи ентузіастом Arduino, я втомився грати у відому гру під назвою «Angry Birds» за допомогою клавіатури та миші та вирішив створити власний ігровий контролер, використовуючи датчик Flex та потенціометр. Коли витягується датчик гнучкості, птах на катапульті також буде витягнутий, і ви можете за допомогою потенціометра встановити напрямок, в якому його слід запускати. Потім, коли ви відпустите гнучкий датчик, птах буде запущений. Мені дуже сподобалось це робити, тому якщо ви хочете створити щось дуже подібне, тоді цей підручник буде корисним. Цей підручник також буде корисним у керуванні курсором миші за допомогою потенціометра.
Вимоги до програмного та апаратного забезпечення:
Програмне забезпечення:
- IDE Arduino
- Обробка IDE
- Гра Angry Birds на комп'ютері
Обладнання:
- Arduino (будь-яка версія)
- Потенціометр
- Датчик гнучкості
- Резистор 47 КОм
- Підключення проводів
- Макет
Концепція позаду:
Плата Arduino зчитує значення з потенціометра та Flex Senor і передає їх на ноутбук / ПК через порт COM COM через звичайну функцію Serial.write () . Потім ми читаємо цю інформацію за допомогою обробки та керуємо курсором миші за допомогою класу Robot в Java, який підтримується обробкою IDE. Ми запрограмували IDE обробки таким чином, що при натисканні на датчик Flex здійснюється клацання мишею і виходячи з того, скільки його витягується, вказівник миші рухатиметься у напрямку X Потім на основі значення з потенціометра ми будемо рухати курсор миші в напрямку Y, таким чином ми можемо встановити напрямок, в якому слід запускати птицю.
Кругова діаграма:
Схема гри в Angry Bird за допомогою Flex-датчика та потенціометра проста.
Ми просто підключили потенціометр та гнучкий датчик до аналогових входів (A0, A1) Arduino. Вихід датчика Flex також витягується вниз, використовуючи 47K висувний резистор.
Ви можете безпосередньо підключити його на макеті або припаяти їх до дошки Perf і зібрати на рукавичках або щось інше, щоб зробити його більш креативним. Я просто використовував макет для підключення, як показано нижче:
Програма Arduino:
Повний код Arduino наведено в кінці підручника. Нижче пояснено декілька важливих рядків.
Ми ініціалізуємо програму для роботи зі швидкістю передачі даних 9600 бод і починаємо зчитування значень з датчика Flex і потенціометра. Як ми знаємо, функція serial.write () може одночасно надсилати лише один байт даних. Оскільки Один байт дорівнює 8 бітам і 2 ^ 8 = 256. Ми зможемо надсилати значення від 0 до 256. Отже, ми маємо стиснути значення виходу датчика Flex і виходу потенціометра в 0 до 256.
Для цього ми використовуємо функцію map () в Arduino. Усі значення гнучкого датчика перетворюються з 5 на 100, тому, коли ми згинаємо датчик, він збільшується з 5, а коли відпускається, повертається до 5. Для згадування клацань миші використовуються значення 1 і 0. Коли відправляється 1, миша натискається, а коли відправляється 0, миша відпускається.
якщо (FlexValue> = 65 && FlexValue <= 120) // мій датчик гнучкості варіюється від 65 до 120, ви можете бути різними {FlexValue = карта (FlexValue, 120,65,0,100); // на основі згинання перетворимо на 0 на 100, якщо (FlexValue> = 5) // 1 і 0 використовуються для клацання мишею, тому починайте з 5 {Mclick = true; Serial.write (1); // 1 надсилається, щоб зробити мишу лівим клацанням миші Serial.write (FlexValue); // Значення Flex - це відстань для переміщення миші в напрямку X} else {Mclick = false; Serial.write (0);}}
Подібним чином значення форми потенціометра перетворюються з 101 на 200, виконуючи функцію map (), і надсилаються на COM-порт ноутбуків за допомогою функції Serial.write (), як показано нижче.
if (potValue <= 200) {potValue = map (potValue, 0,200,101,201); // По черзі перетворюємо на 101 до 201 Serial.write (potValue); // Значення горщика - це відстань для переміщення миші в напрямку Y}
Решта програми пояснюється за допомогою коментарів.
Код обробки:
Processing - це програма для розробки з відкритим кодом, яку можна легко завантажити та використати для розробки цікавих проектів за допомогою Arduino або інших мікроконтролерів. Ми вже виконали кілька проектів, використовуючи Processing, і ви можете перевірити їх, натиснувши на посилання нижче.
- DIY FM-радіо за допомогою обробки
- Контроль віртуальної реальності / жестів за допомогою Arduino
- Приватна кімната чату за допомогою Arduino.
- Радіолокаційна система Arduino з використанням APP для обробки та ультразвукового датчика
- Виявлення та відстеження обличчя в реальному часі за допомогою Arduino
- DIY спідометр за допомогою Arduino та обробки
- Гра в пінг-понг за допомогою акселерометра Arduino
- Двоногий робот з використанням Arduino
- Тепловізора "зроби сам" Arduino
У цьому проекті ми використовували IDE для обробки для зчитування значень COM-порту та управління вказівником миші на основі значень, отриманих через COM-порт. Повний код обробки для цього Angry Bird Game Controller можна завантажити з наведеної нижче посиланням:
- Код обробки для цього контролера гри Angry Bird (клацніть правою кнопкою миші та 'Зберегти посилання як')
Програму Arduino можна знайти в кінці цього посібника. Код обробки був модифікований відповідно до нашої мети з коду, наданого yoggy на його сторінці GitHub.
Дані, що надходять з COM-порту, повинні зчитуватися з тією ж швидкістю передачі, з якою вони були надіслані з Arduino. Також за допомогою диспетчера пристроїв перевірте, до якого COM-порту підключений ваш Arduino. Мій Arduino був підключений до COM3, і це був 0- й порт у моєму комп'ютері, і швидкість передачі даних в Arduino становила 9600, тому код такий
port = new Serial (this, Serial.list (), 9600);
Як тільки ми починаємо читати значення, ми розрізняємо його, розпізнаючи на основі його значення того, як ми надіслали з Arduino. Значення знову відображаються від 0 до 100, так що ми зможемо керувати мишею на основі цього значення.
якщо (port.available ()> 0) {data = port.read (); println (дані); // Зчитуємо дані з COM-порту та зберігаємо їх у data} if (data> = 101 && data <= 201) // Якщо значення якщо від 101 до 201, то воно повинно бути з потенціометра {Turn = int (map (data, 101,201,0,100)); // Використовуємо це значення, щоб повернути катапульт} if (data> = 5 && data <= 100) // Якщо значення якщо від 5 до 100, то воно повинно бути від Flex Sensor {Pull = int (map (data, 5,100, 0,100));} // Використовуйте це значення для витягування катапульти, якщо (дані == 1) click = true; // Використовуйте це значення, щоб натиснути кнопку миші, якщо (дані == 0) click = false; // Використовуйте це значення, щоб відпустити кнопку миші
Після того, як ми класифікуємо дані, ми можемо керувати мишею, використовуючи Робот Java-класу в обробці. Команда robot.mouseMove (crntX-Pull, crntY + Turn); може використовуватися для переміщення миші в будь-яке бажане положення та рядків robot.mousePress (InputEvent.BUTTON1_DOWN_MASK); і robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); може використовуватися для натискання або відпускання кнопки миші відповідно.
if (click == false) // коли Flex Sesnor не витягується {crntX = (int) p.getX (); crntY = (int) p.getY (); if (Pull> 50) robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); // Відпустіть кнопку миші} if (клацніть == true) // коли витягнути Flex Sesnor {robot.mousePress (InputEvent.BUTTON1_DOWN_MASK); // Натискаємо кнопку robot.mouseMove (crntX-Pull, crntY + Turn); // Переміщення миші на основі значення Flex та POT}}
При запуску IDE обробки також відобразиться невелике діалогове вікно, в якому ви знайдете значення Pull, Turn і статус клацання миші, як показано нижче
Ця деталь може бути використана для налагодження Програми або виправлення будь-яких необхідних даних.
Робоча:
Щоб цей проект Angry Bird працював з використанням наданого коду, зберіть своє обладнання відповідно до принципової схеми та завантажте заданий код Arduino. Потім зверніть увагу, до якого COM-порту підключений ваш Arduino, та внесіть необхідні зміни в код обробки та запустіть ескіз обробки.
Тепер просто запустіть гру «злий птах» і поставте курсор біля катапульти та потягніть датчик гнучкості, щоб витягнути птицю, і встановіть напрямок за допомогою потенціометра. Після встановлення напрямку відпустіть датчик Flex
EEEEWWWWWEEEEEEEEEE !!!!!!!!!!……………
Вас птах буде кинути прямо в повітря і БУММ !! На поросятах. Повну роботу можна знайти у відео, поданому нижче.
Сподіваюся, вам сподобався проект і ви змогли побудувати щось подібне. Якщо у вас є якісь сумніви, ви можете зв’язатися зі мною в розділі коментарів або опублікувати своє питання на форумі для технічних питань.
Тепер час врізатися в ті скарбнички і повернути яйцям наших птахів !!!!