Arduinos и подобные совместимые платы являются одними из самых популярных устройств для мастеров-ремесленников. Являетесь ли вы новичком, который только начинает работать с Arduino, или кем-то, кто уже использовал их в своей жизни, они предоставляют платформу для бесчисленных потрясающих проектов.
Сегодня мы будем исследовать творческий способ управления сервоприводом с помощью обработки и контроллера Xbox360. Если вы уже хорошо разбираетесь в разработке игр, вас может заинтересовать наше руководство по пользовательскому игровому контроллеру, в котором используется Unity.
Этот урок предполагает немного предварительных знаний: если это ваш первый опыт освоения Arduino, вы можете найти наше руководство по Arduino здесь полезным. Точно так же, если вы впервые используете Java, это может немного сбить с толку. В то время как Processing использует упрощенную версию платформы, эти концепции и советы по Java все еще могут помочь.
Что вам нужно
- 1 х Arduino. Мы используем ООН сегодня.
- 1 х хобби сервопривод. Все, что будет работать с выводами Arduino.
- 1 х проводной контроллер Xbox360. Хотя технически это будет работать практически с любым контроллером.
- Несколько подключаемых проводов.
В дополнение к этим вещам вам также необходимо загрузить Processing и Arduino IDE с соответствующих веб-сайтов.
Готовим Arduino
Сначала нам нужно прикрепить наш сервопривод. Цвет проводки здесь может варьироваться, но, как правило, красный прикрепляется к 5v булавка, и коричневый или же черный прикрепить к GND штырь. Строка данных, которая обычно желтый или же оранжевый, прикрепляется к контакт 10.
Проверьте проводку и подключите Arduino к компьютеру. Откройте Arduino IDE.
Откройте эскиз StandardFirmata, расположенный в Файл> Примеры> Firmata> StandardFirmata. Этот эскиз настраивает плату для внешнего управления последовательным портом, и он является тем же, который мы использовали в нашей статье по управлению Arduino с помощью Python.
, Загрузить эскиз на доску.
Если загрузка не удалась, убедитесь, что вы выбрали правильную информацию о плате и порте в инструменты меню.
Наш 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 был на COM 8, который был третьим портом, перечисленным здесь. Это важно, так как код в строке ниже имеет массив чье значение определяет, какой COM-порт использовать.
Нам нужно изменить это, чтобы отразить наш 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));
Сохраните эскиз и запустите его. Вы должны иметь возможность перемещать сервопривод, перемещая мышь назад и вперед по окну, которое генерирует программа.
Если он не работает для вас, проверьте проводку сервопривода и убедитесь, что у вас есть правильная позиция массива для вашего COM-порта. Как только вы узнаете, что Arduino хорошо разговаривает с Processing, пришло время двигаться дальше.
Конфигурирование контроллера
Используемая нами библиотека Game Control Plus также имеет мощную конфигурацию. Убедитесь, что ваш контроллер подключен, откройте Конфигуратор пример проекта, и запустить его. Вы получите такое меню:
Нажмите на название вашего контроллера, и появится намного большее окно конфигурации.
Это может выглядеть довольно устрашающе, но оно разработано так, чтобы быть максимально простым. С левой стороны заполните первый ключ с именем, которое вы хотите в качестве переменной. Эта переменная будет контролировать положение сервопривода, поэтому я буду называть ее servoPos.
В поле рядом с ним вы можете дать краткое описание того, что он делает. Теперь возьмите свой контроллер и переместите флешку, которую вы хотите использовать с вашим сервоприводом. Небольшой эксперимент показывает, что правый большой палец соответствует блоку поворота X. Перетащите линию между servoPos переменная, и эта коробка.
Теперь нам нужно сохранить нашу конфигурацию в виде файла данных. В правом верхнем углу окна заполните Роль устройства поле и Имя файла поле.
Имя файла важно, так как вы будете использовать его в своем коде. Я сохраняю это простым, называя это XBS. Нажмите проверить затем Сохранить. Это записывает файл с инструкциями для нашего контроллера, который мы можем использовать позже.
Подготовка пользовательской папки эскизов
Давайте настроим нашу рабочую папку. Откройте пустой эскиз обработки и сохраните его под любым именем. Это создаст каталог для него в месте сохранения.
Теперь перейдите к Документы / Обработка / библиотеки / GameControlPlus / примеры / Конфигуратор и скопируйте папку с надписью данные. Эта папка содержит файл конфигурации, который мы только что создали. Перейдите в каталог только что сохраненного пустого эскиза и вставьте папку данных.
Создание собственного эскиза
Теперь все на месте, и мы можем начать делать набросок, используя наши две библиотеки. Мы пройдем этот шаг за шагом, но вы можете скачать полный эскиз и папку с данными, если хотите забегать вперед. Обратите внимание, что вам все еще может потребоваться изменить код, чтобы он отражал ваши 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 Alarm
Учебник и используйте свой контроллер, чтобы изменить высоту зуммера или цвет огней.
Или вы могли бы, ну, построить массивного робота и захватить землю. Пока у вас был USB-шнур достаточно долго!