Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Самодельный двухмерный гоночный симулятор

Компоненты и расходные материалы

Arduino Nano R3
× 1
Микро-серводвигатель SG90
× 2

Необходимые инструменты и машины

Паяльник (общий)

Приложения и онлайн-сервисы

IDE Arduino

Об этом проекте

SimTools - это универсальное программное обеспечение для моделирования движения, способное управлять несколькими аппаратными интерфейсами, включая Arduino. Эта комбинация используется в проекте, представленном на видео. Аппаратная часть состоит только из микроконтроллера Arduino Nano и двух дешевых микросервомоторов SG90. Нам нужно только загрузить приведенный ниже код.

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

На странице "https://www.xsimulator.net/" можно найти множество примеров подобных тренажеров своими руками, а также строительные чертежи и советы. Процедура настройки SimTools описана в видео, но вы также можете загрузить руководство пользователя в формате PDF по адресу:https://simtools.us/wp-content/uploads/2019/06/SimToolsUserManual-v2.4.pdf

SimTools будет работать в «демонстрационном» режиме до тех пор, пока не будет зарегистрирована действующая лицензия. Плагин для Live for Speed ​​полностью готов к тестированию, пока SimTools находится в демонстрационном режиме. (Демоверсия Live for Speed ​​также будет работать для тестирования SimTools.) Вы можете найти дополнительную информацию и загрузить Live for Speed ​​на https://www.lfs.net/downloads

Ссылка для загрузки SimTools:

https://www.xsimulator.net/community/marketplace/motion-simulation-software-simtools.63/

Код

  • Код
Код C / C ++
 // ******************************************** ********************************************** // RC Сервопривод модели // Оригинальный код EAOROBBIE (Роберт Линдсей) // Полностью изменен aarondc // Для бесплатного использования для программного обеспечения Sim Tool Motion // ******************* ************************************************* ********************** # include  // # define DEBUG 1 // закомментируйте эту строку, чтобы удалить отладку Serial.print linesconst int kActuatorCount =2; // сколько приводов мы обрабатываем // буквы («имена»), отправленные из Sim Tools для идентификации каждого привода // NB:порядок букв здесь определяет порядок оставшихся констант kPins и kActuatorScaleconst char kActuatorName [kActuatorCount] ={'R', 'L'}; const int kPins [kActuatorCount] ={4, 5}; // контакты, к которым прикреплены исполнительные механизмыconst int kActuatorScale [kActuatorCount] [2] ={{0, 179}, // Масштабирование правого исполнительного механизма {179, 0} // Масштабирование левой стороны исполнительного механизма}; const char kEOL ='~'; // Конец строки - разделитель для наших значений акутатора const int kMaxCharCount =3; // немного страховки ... Servo actatorSet [kActuatorCount]; // наш массив Actuatorsint actatorPosition [kActuatorCount] ={90, 90}; // текущие позиции исполнительного механизма, инициализированные как 90int currentActuator; // отслеживаем, что текущий Actuator считывается из последовательного порта int valueCharCount =0; // сколько символов значений мы прочитали (должно быть меньше kMaxCharCount !! // установить некоторые состояния для нашего конечного автомата // psReadActuator =следующий символ из последовательного порта сообщает нам, что Actuator // psReadValue =следующие 3 символа из последовательного порта сообщает нам значение enum TPortState {psReadActuator, psReadValue}; TPortState currentState =psReadActuator; void setup () {// прикрепите исполнительные механизмы к контактам для (int i =0; i  0) .void serialEvent () {char tmpChar; int tmpValue; while (Serial.available ()) {// если мы ждем имя исполнительного механизма, возьмите его здесь if (currentState ==psReadActuator) {tmpChar =Serial.read (); // ищем наш исполнительный механизм в массиве имен исполнительных механизмов, который мы установили #ifdef DEBUG Serial.print («читать»); Serial.println (tmpChar); #endif for (int i =0; i  9)) tmpValue =0; Положение привода [currentActuator] =Положение привода [currentActuator] * 10 + tmpValue; valueCharCount ++; } еще перерыв; } // если мы прочитали разделитель значений, обновим Actuator и начнем поиск следующего имени Actuator if (tmpValue ==kEOL || valueCharCount ==kMaxCharCount) {#ifdef DEBUG Serial.print ("read in"); Serial.println (actatorPosition [currentActuator]); #endif // масштабирование новой позиции так, чтобы значение находилось в диапазоне от 0 до 179 actatorPosition [currentActuator] =map (actatorPosition [currentActuator], 0, 255, kActuatorScale [currentActuator] [0], kActuatorScale [currentActuator] [1]); # ifdef DEBUG Serial.print ("масштабируется до"); Serial.println (actatorPosition [currentActuator]); #endif updateActuator (currentActuator); currentState =psReadActuator; }}}} // записываем текущее положение исполнительного механизма в переданный в исполнительный элемент void updateActuator (int thisActuator) {actatorSet [thisActuator] .write (actatorPosition [thisActuator]);} 

Схема


Производственный процесс

  1. Самодельная инфракрасная система датчиков движения для Raspberry Pi
  2. Музыкальный визуализатор DIY LUMAZOID для Arduino
  3. Вольтметр своими руками с использованием Arduino и смартфона
  4. Скейтборд виртуальной реальности «Сделай сам»
  5. Водяной пистолет с датчиком движения
  6. Сделай сам Arduino РАДИОНИКА Лечение MMachine
  7. Идея DIY с RFID
  8. DIY 3-осевой ЧПУ VMC
  9. DIY Инфракрасный термометр Arduino + GY-906
  10. Педали руля для самостоятельной сборки для Flight Simulator