- Программные и аппаратные требования:
- Концепция:
- Принципиальная электрическая схема:
- Программа Arduino:
- За работой:
Все началось с маленькой игры из темных веков под названием «Марио», начиная с того времени, когда он был маленьким парнем, прыгающим на уток, чтобы спасти мою принцессу, до того, как он стал красивым мужским принцем, блуждающим по Персии (Принцем Персии), сражающимся с тьмой. Чтобы спасти свой мир, я был большим поклонником видеоигр, и я вырос, играя в них. Но им иногда бывает скучно, и я чувствую себя менее вовлеченным в это. Сегодня современные игровые консоли позволяют играть в виртуальную игру и помогают нам чувствовать игру намного лучше, чем это могут сделать клавиатура или мышь.
Будучи энтузиастом Arduino, я устал играть в знаменитую игру под названием «Angry Birds», используя клавиатуру и мышь, и решил создать свой собственный игровой контроллер, используя датчик гибкости и потенциометр. Когда датчик изгиба вытягивается, птица на катапульте также будет тянуться, и вы можете использовать потенциометр, чтобы установить направление, в котором она должна быть запущена. Затем, когда вы отпустите датчик гибкости, птица будет запущена. Мне очень понравилось это делать, поэтому, если вы собираетесь создать что-то очень похожее, этот урок будет вам полезен. Это руководство также будет полезно при управлении курсором мыши с помощью потенциометра.
Программные и аппаратные требования:
Программного обеспечения:
- IDE Arduino
- Обработка IDE
- Игра Angry Birds на компьютере
Оборудование:
- Arduino (любая версия)
- Потенциометр
- Гибкий датчик
- Резистор 47 кОм
- Подключение проводов
- Макетная плата
Концепция:
Плата Arduino считывает значения с потенциометра и датчика Flex Senor и передает их на ноутбук / ПК через порт USB COM через обычную функцию Serial.write () . Затем мы читаем эту информацию с помощью Processing и управляем курсором мыши с помощью класса Robot в Java, который поддерживается обработкой IDE. Мы запрограммировали обрабатывающую среду IDE таким образом, что при нажатии сенсора Flex будет происходить щелчок мышью, и в зависимости от того, насколько он потянут, указатель мыши будет перемещаться в направлении X. Затем, основываясь на значении потенциометра, мы переместим курсор мыши в направлении Y, таким образом мы можем установить направление, в котором должна запускаться птица.
Принципиальная электрическая схема:
Схема для игры в Angry Bird с помощью гибкого датчика и потенциометра проста.
Мы просто подключили потенциометр и датчик изгиба к аналоговым входам (A0, A1) Arduino. Выходной сигнал датчика Flex также понижается с помощью понижающего резистора 47 кОм.
Вы можете напрямую подключить его к макету или припаять их к плате Perf и собрать на перчатках или чем-то еще, чтобы сделать его более креативным. Я просто использовал макет для подключения, как показано ниже:
Программа Arduino:
Полный код Arduino приведен в конце руководства. Ниже поясняются несколько важных строк.
Мы инициализируем программу для работы со скоростью 9600 бод и начинаем считывать значения с гибкого датчика и потенциометра. Как мы знаем, функция serial.write () может отправлять только один байт данных за раз. Так как один байт равен 8 битам, а 2 ^ 8 = 256. Мы сможем отправлять значения от 0 до 256. Таким образом, мы должны сжать значения выхода гибкого датчика и выхода потенциометра в 0 до 256.
Для этого мы используем функцию map () в Arduino. Все значения гибкого датчика преобразуются из 5 в 100, поэтому, когда мы изгибаем датчик, он увеличивается с 5, а при отпускании возвращается к 5. Чтобы упомянуть щелчки мыши, используются значения 1 и 0. Когда отправляется 1, мышь нажимается, а когда отправляется 0, мышь отпускается.
if (FlexValue> = 65 && FlexValue <= 120) // мой датчик гибкости варьируется от 65 до 120, ваш может быть другим {FlexValue = map (FlexValue, 120,65,0,100); // на основе изгиба преобразовываем в 0 в 100 if (FlexValue> = 5) // 1 и 0 используются для щелчка мыши, поэтому начните с 5 {Mclick = true; Serial.write (1); // 1 отправляется, чтобы щелкнуть левой кнопкой мыши Serial.write (FlexValue); // Значение гибкости - это расстояние для перемещения мыши в направлении X} else {Mclick = false; Serial.write (0);}}
Точно так же значения потенциометра преобразуются из 101 в 200 с помощью функции map () и отправляются в COM-порт портативного компьютера с использованием функции Serial.write (), как показано ниже.
если (potValue <= 200) {potValue = map (potValue, 0,200,101,201); // На основе, в свою очередь, преобразовываем в 101 в 201 Serial.write (potValue); // Pot value - это расстояние, на которое мышь перемещается в направлении Y}
Остальная часть программы поясняется с помощью комментариев.
Код обработки:
Processing - это приложение для разработки с открытым исходным кодом, которое можно легко загрузить и использовать для разработки интересных проектов с использованием Arduino или других микроконтроллеров. Мы уже выполнили несколько проектов с использованием Processing, и вы можете проверить их, нажав на ссылки ниже.
- DIY FM-радио с использованием обработки
- Виртуальная реальность / управление жестами с помощью Arduino
- Приватный чат с использованием Arduino.
- Радарная система Arduino с использованием приложения обработки и ультразвукового датчика
- Обнаружение и отслеживание лиц в реальном времени с использованием Arduino
- Спидометр своими руками с использованием Arduino и обработки
- Игра в пинг-понг с использованием акселерометра Arduino
- Двуногий робот, использующий Arduino
- DIY тепловизионная камера Arduino
В этом проекте мы использовали обрабатывающую среду IDE для чтения значений COM-порта и управления указателем мыши на основе значений, полученных через COM-порт. Полный код обработки для этого Angry Bird Game Controller можно загрузить с приведенной ниже ссылке:
- Код обработки для этого игрового контроллера Angry Bird (щелкните правой кнопкой мыши и выберите "Сохранить ссылку как")
Программу Arduino можно найти в конце этого руководства. Код обработки был изменен в соответствии с нашими целями из кода, предоставленного yoggy на его странице GitHub.
Данные, поступающие из COM-порта, должны считываться с той же скоростью передачи, с которой они были отправлены из Arduino. Также проверьте, к какому COM-порту подключен ваш Arduino, с помощью диспетчера устройств. Мой Arduino был подключен к COM3, и это был 0- й порт на моем компьютере, а скорость передачи в Arduino была 9600, поэтому код выглядит следующим образом
порт = новый последовательный (это, Serial.list (), 9600);
Как только мы начинаем читать значения, мы различаем их, распознавая их на основе их значения, которое мы отправили из Arduino. Значения снова отображаются от 0 до 100, чтобы мы могли управлять мышью на основе этого значения.
если (port.available ()> 0) {data = port.read (); println (данные); // Считываем данные из COM-порта и сохраняем их в data} if (data> = 101 && data <= 201) // Если значение if от 101 до 201, то оно должно быть из Potentiometer {Turn = int (map (data, 101,201,0,100)); // Используйте это значение для поворота катапульты} if (data> = 5 && data <= 100) // Если значение if от 5 до 100, то оно должно быть из Flex Sensor {Pull = int (map (data, 5,100, 0,100));} // Используем это значение, чтобы вытащить катапульту if (data == 1) click = true; // Используйте это значение для нажатия кнопки мыши if (data == 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 = (число) p.getY (); если (Pull> 50) robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); // Отпускаем кнопку мыши} if (click == 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, внесите необходимые изменения в код обработки и запустите эскиз обработки.
Теперь просто запустите игру Angry Birds, поместите курсор рядом с катапультой, потяните датчик изгиба, чтобы вытащить птицу, и задайте направление с помощью потенциометра. Как только направление установлено, отпустите датчик Flex.
EEEEWWWWWEEEEEEEEEE !!!!!!!!!!……………
Ваша птица будет подброшена прямо в воздух и БУМ !! О поросятах. Полную работу можно найти в видео ниже.
Надеюсь, вам понравился проект и вы смогли создать что-то подобное. Если у вас есть сомнения, вы можете связаться со мной в разделе комментариев или задать свой вопрос на форуме по техническим вопросам.
А теперь пора врезаться в эти копилки и вернуть наши птичьи яйца !!!!