Как управлять роботами с игровым контроллером и Arduino

Arduinos и подобные совместимые платы являются одними из самых популярных устройств для мастеров-ремесленников. Являетесь ли вы новичком, который только начинает работать с Arduino, или кем-то, кто уже использовал их в своей жизни, они предоставляют платформу для бесчисленных потрясающих проектов.

Сегодня мы будем исследовать творческий способ управления сервоприводом с помощью обработки и контроллера Xbox360. Если вы уже хорошо разбираетесь в разработке игр, вас может заинтересовать наше руководство по пользовательскому игровому контроллеру, в котором используется Unity.

Этот урок предполагает немного предварительных знаний: если это ваш первый опыт освоения Arduino, вы можете найти наше руководство по Arduino здесь полезным. Точно так же, если вы впервые используете Java, это может немного сбить с толку. В то время как Processing использует упрощенную версию платформы, эти концепции и советы по Java все еще могут помочь.

Что вам нужно

управляйте роботами с игровым контроллером и Arduino

  • 1 х Arduino. Мы используем ООН сегодня.
  • 1 х хобби сервопривод. Все, что будет работать с выводами Arduino.
  • 1 х проводной контроллер Xbox360. Хотя технически это будет работать практически с любым контроллером.
  • Несколько подключаемых проводов.

В дополнение к этим вещам вам также необходимо загрузить Processing и Arduino IDE с соответствующих веб-сайтов.

Готовим Arduino

управляйте роботами с игровым контроллером и Arduino

Сначала нам нужно прикрепить наш сервопривод. Цвет проводки здесь может варьироваться, но, как правило, красный прикрепляется к 5v булавка, и коричневый или же черный прикрепить к GND штырь. Строка данных, которая обычно желтый или же оранжевый, прикрепляется к контакт 10.

Проверьте проводку и подключите Arduino к компьютеру. Откройте Arduino IDE.

управляйте роботами с игровым контроллером и Arduino

Откройте эскиз StandardFirmata, расположенный в Файл> Примеры> Firmata> StandardFirmata. Этот эскиз настраивает плату для внешнего управления последовательным портом, и он является тем же, который мы использовали в нашей статье по управлению Arduino с помощью Python.

, Загрузить эскиз на доску.

Если загрузка не удалась, убедитесь, что вы выбрали правильную информацию о плате и порте в инструменты меню.

Наш Arduino готов к работе!

Настройка обработки

Откройте процесс обработки, вас встретит пустой эскиз. Прежде чем что-то сделать здесь, нам нужно установить несколько библиотек. Голова к эскиз меню и выберите Импортировать библиотеку> Добавить библиотеку. Это поднимет Менеджер по вкладам что будет знакомо любому пользователю Arduino.

управляйте роботами с игровым контроллером и Arduino

Нам нужно установить три библиотеки, чтобы сделать эту работу. Сначала это Game Control Plus библиотека. Это то, что позволит нам использовать наш игровой контроллер с Processing. Используйте окно поиска, чтобы найти его, и нажмите «Установить» в правом нижнем углу. Game Control Plus требуется еще одна библиотека, установленная для его инструмента настройки, так что давайте теперь получим ее. Поиск для G4P библиотека и установить его тоже.

Наконец, нам нужно Ардуино (фирма) библиотека. Вы уже догадались, найдите его и нажмите «Установить». С этими установками мы готовы приступить к тестированию, что все будет работать. Мы работаем с Windows 10 сегодня, но обработка доступна для большинства платформ, включая Raspberry Pi. Представьте себе возможности!

Тестирование Arduino

Прежде чем мы углубимся в создание собственного эскиза, давайте проверим Arduino и Servo с обработкой. открыто Файл> Примеры, и выберите ArduinoServo от Предоставленные библиотеки / Arduino (firmata) папка. Мы будем использовать это для проверки нашего сервопривода, но сначала нам может понадобиться изменить пару вещей.

Прокрутите вниз эскиз и найдите эту строку:

println(Arduino.list());

Если это закомментировано, удалите две косые черты перед Println (Arduino.list ());, и сохраните эскиз. Запустите его, нажав на значок воспроизведения, и следите за консолью внизу. Это перечислит все, что прикреплено к вашему COM порты.

управляйте роботами с игровым контроллером и Arduino

В моем случае мой Arduino был на COM 8, который был третьим портом, перечисленным здесь. Это важно, так как код в строке ниже имеет массив чье значение определяет, какой COM-порт использовать.

управляйте роботами с игровым контроллером и Arduino

Нам нужно изменить это, чтобы отразить наш COM-порт. Для меня это была третья позиция или индекс № 2:

arduino = new Arduino(this, Arduino.list()[2], 57600);

Нам нужно внести пару других небольших изменений в этот код, чтобы протестировать его. Прокрутите вниз до места установки пинов Arduino и закомментируйте одну из строк здесь. Измените другой на Контакт 10.

//arduino.pinMode(4, Arduino.SERVO);
arduino.pinMode(10, Arduino.SERVO);

Нам нужно сделать то же самое в Рисовать() метод:

arduino.servoWrite(10, constrain(mouseX / 2, 0, 180));
// arduino.servoWrite(4, constrain(180 - mouseX / 2, 0, 180)); 

Сохраните эскиз и запустите его. Вы должны иметь возможность перемещать сервопривод, перемещая мышь назад и вперед по окну, которое генерирует программа.

управляйте роботами с игровым контроллером и Arduino

Если он не работает для вас, проверьте проводку сервопривода и убедитесь, что у вас есть правильная позиция массива для вашего COM-порта. Как только вы узнаете, что Arduino хорошо разговаривает с Processing, пришло время двигаться дальше.

Конфигурирование контроллера

Используемая нами библиотека Game Control Plus также имеет мощную конфигурацию. Убедитесь, что ваш контроллер подключен, откройте Конфигуратор пример проекта, и запустить его. Вы получите такое меню:

управляйте роботами с игровым контроллером и Arduino

Нажмите на название вашего контроллера, и появится намного большее окно конфигурации.

управляйте роботами с игровым контроллером и Arduino

Это может выглядеть довольно устрашающе, но оно разработано так, чтобы быть максимально простым. С левой стороны заполните первый ключ с именем, которое вы хотите в качестве переменной. Эта переменная будет контролировать положение сервопривода, поэтому я буду называть ее servoPos.

В поле рядом с ним вы можете дать краткое описание того, что он делает. Теперь возьмите свой контроллер и переместите флешку, которую вы хотите использовать с вашим сервоприводом. Небольшой эксперимент показывает, что правый большой палец соответствует блоку поворота X. Перетащите линию между servoPos переменная, и эта коробка.

управляйте роботами с игровым контроллером и Arduino

Теперь нам нужно сохранить нашу конфигурацию в виде файла данных. В правом верхнем углу окна заполните Роль устройства поле и Имя файла поле.

Имя файла важно, так как вы будете использовать его в своем коде. Я сохраняю это простым, называя это XBS. Нажмите проверить затем Сохранить. Это записывает файл с инструкциями для нашего контроллера, который мы можем использовать позже.

управляйте роботами с игровым контроллером и Arduino

Подготовка пользовательской папки эскизов

Давайте настроим нашу рабочую папку. Откройте пустой эскиз обработки и сохраните его под любым именем. Это создаст каталог для него в месте сохранения.

Теперь перейдите к Документы / Обработка / библиотеки / GameControlPlus / примеры / Конфигуратор и скопируйте папку с надписью данные. Эта папка содержит файл конфигурации, который мы только что создали. Перейдите в каталог только что сохраненного пустого эскиза и вставьте папку данных.

управляйте роботами с игровым контроллером и Arduino

Создание собственного эскиза

Теперь все на месте, и мы можем начать делать набросок, используя наши две библиотеки. Мы пройдем этот шаг за шагом, но вы можете скачать полный эскиз и папку с данными, если хотите забегать вперед. Обратите внимание, что вам все еще может потребоваться изменить код, чтобы он отражал ваши COM-порты Arduino.

Начнем с импорта всех необходимых нам библиотек:

import processing.serial.*;
import net.java.games.input.*;
import org.gamecontrolplus.*;
import org.gamecontrolplus.gui.*;
import cc.arduino.*;
import org.firmata.*;

Мы также должны объявить ControlDevice, I / O, а также Arduino, вместе с поплавок чтобы хранить значения из нашего большого пальца:

ControlDevice cont;
ControlIO control;
Arduino arduino;
float thumb;

наш настроить() Метод создает небольшое окно, экземпляр контроллера, и сопоставляет устройство с нашим файлом конфигурации. Здесь важно получить правильное имя файла нашего файла данных конфигурации:

void setup() {
size(360, 200);
control = ControlIO.getInstance(this);
cont = control.getMatchedDevice("xbs");
if (cont == null) {
println("not today chump"); // write better exit statements than me
System.exit(-1);
}
// println(Arduino.list());
arduino = new Arduino(this, Arduino.list()[2], 57600);
arduino.pinMode(10, Arduino.SERVO);
}

Мы также проверяем, нет ли подходящего контроллера на этом этапе, и выходим из программы, если это необходимо. Пока окно создано с размер() не требуется, это даст нам некоторую обратную связь относительно того, получаем ли мы полезные значения от нашего контроллера. Мы также инициализируем наш Arduino и закрепляем здесь, как мы это делали во время тестирования.

Теперь мы создадим небольшой метод для получения входного значения из нашего контроллера и сопоставления его со значениями, которые сможет использовать наш сервопривод:

public void getUserInput() {
thumb = map(cont.getSlider("servoPos").getValue(), -1, 1, 0, 180);
}

Эта строка кода использует наш файл данных, чтобы получить наш именованный элемент управления servoPos, который связан с правой кнопкой на контроллере и считывает значения с него. Затем он отображает значения и сохраняет значение в нашем большой палец переменная с плавающей точкой.

Прямо сейчас этот код никогда не вызывается, мы исправим это сейчас.

void draw() {
getUserInput();
background(thumb,100,255);
arduino.servoWrite(10, (int)thumb);
}

рисовать() похож на петля () метод в Arduino IDE. Каждый кадр это вызывает getUserInput () метод и обновляет большой палец значение. Он использует это значение для изменения красного значения фон() давая нам визуальный индикатор изменения стоимости. Затем он записывает это значение в сервопривод, используя arduino.servoWrite () функция. Обратите внимание, что мы должны бросить большой палец в качестве целочисленного значения, поскольку функция servoWrite принимает два целых числа (номер контакта и угол) в качестве аргументов.

Проверьте код на наличие ошибок, сохраните его и нажмите «Выполнить». После небольшой задержки инициализации Arduino это должно выглядеть так:

управляйте роботами с игровым контроллером и Arduino

Управление с помощью игрового контроллера и Arduino: готово!

Этот проект был во многом достаточно глубоким для неопытного кодера

Несмотря на фантастические библиотеки, доступные нам, чтобы помочь. Он представляет собой новый способ управления роботами и любыми другими устройствами, которые вы создаете.

Этот проект идеально сочетается с нашим руководством по созданию лазерной башни

, давая вам полный контроль над этим. Вы можете установить пьезо-зуммер, как в нашей простой Arduino Alarm

Учебник и используйте свой контроллер, чтобы изменить высоту зуммера или цвет огней.

Или вы могли бы, ну, построить массивного робота и захватить землю. Пока у вас был USB-шнур достаточно долго!

Ссылка на основную публикацию
Adblock
detector