Оглавление:
- Шаг 1. Вещи, которые могут вам понадобиться…
- Шаг 2: Подключите оборудование
- Шаг 3: запрограммируйте Arduino
- Шаг 4: Установите программное обеспечение
- Шаг 5: Используйте интерфейсную программу
- Шаг 6: проявите творческий подход
Видео: Последовательный сервоконтроллер на базе Arduino: 6 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:55
Это простой последовательный контроллер для нескольких сервоприводов на базе Arduino. (мой первый инструктаж тоже:))
Большая часть работы заключалась в том, чтобы заставить программное обеспечение взаимодействовать с Arduino и создать протокол для передачи данных. Что касается аппаратного обеспечения, все, что я использовал, это два сервопривода (здесь стандартный сервопривод Parallax.) Sparkfun Arduino ProtoShield и Arduino Duemilanove с ATMEGA328, но большинство этих частей можно заменить аналогичными элементами. Я придумал этот проект как часть системы дистанционного управления, но настройка коммуникации заняла много времени. Если у кого-то есть какие-либо улучшения, идеи или ошибки, не стесняйтесь комментировать. РЕДАКТИРОВАТЬ: Я написал это некоторое время назад, только что опубликовал его недавно.
Шаг 1. Вещи, которые могут вам понадобиться…
Некоторые вещи вам понадобятся, чтобы построить это. 1. Плата Arduino (на ваш выбор) 2. Два (или один) сервопривода 3. Перемычки 4. Visual Studio 2008 Express - ссылка (необязательно) 5. Arduino IDE - ссылка Извините, поклонники Linux и Apple, моя программа работает только на Windows на данный момент, но вы все равно можете вручную отправлять последовательные команды в Arduino, не меняя код.
Шаг 2: Подключите оборудование
В этом шаге нет ничего сложного, просто подключите один сервопривод к контакту 9, а другой - к контакту 10.
Шаг 3: запрограммируйте Arduino
теперь вы можете загрузить скетч на Arduino.
Вот простая разбивка кода: #include Servo myservo; // создание сервообъекта для управления сервоприводом Servo myservo1; int incomingByte = 0, datacount = 0, counter = 0, ready = 0; // для входящих последовательных данных char data [10]; const char verify [8] = "ma11hew"; команда char [3]; пустая настройка () {myservo.attach (9); myservo1.attach (10); Serial.begin (38400); // открывает последовательный порт, устанавливает скорость передачи данных Serial.println ("Hi Arduino Here!"); // добавлено, чтобы помочь идентифицировать последовательный порт. Это просто устанавливает последовательный порт и сервоприводы. int i; для (я = 0; я <180; я ++) {myservo.write (я); задержка (15); } myservo.write (5); для (я = 0; я <180; я ++) {myservo1.write (я); задержка (15); } myservo1.write (5); } Простое широкое движение для проверки правильности работы сервоприводов. void loop () {готово = 0; счетчик = 0; в то время как (1 == 1) {если (Serial.read ()! = проверить [счетчик]) {перерыв; } если (счетчик == 6) {задержка (20); команда [0] = Serial.read (); команда [1] = Serial.read (); // if (Serial.read () == ((command [1] * 12)% 8)) // {ready = 1; //} Serial.println ("сохраненная команда"); } counter ++; задержка (2); } это проверяет последовательный буфер на правильность строки авторизации, а затем получает два байта для команды. прокомментированный оператор if допускает временную контрольную сумму, но затрудняет ручной интерфейс. ready можно установить в 0, поэтому команды не будут анализироваться, например, в случае поврежденных данных. // поиск по командам if (ready == 1) {if (command [0] == 'T') {command [0] = 0; Serial.print («управление дроссельной заслонкой на выводе 9 на:»); Serial.println (карта (команда [1], 32, 126, 2, 180), DEC); myservo.write (карта (команда [1], 32, 126, 2, 180)); } если (команда [0] == 'S') {команда [0] = 0; Serial.print («управление дроссельной заслонкой на контакте 10 к:»); Serial.println (карта (команда [1], 32, 126, 2, 180), DEC); myservo1.write (карта (команда [1], 32, 126, 2, 180)); }}} остальная часть кода предназначена для поиска в command допустимых команд (T или S.), если они совпадают, берет следующий байт и отправляет его сервоприводу. подробнее на карте (команда [1], 32, 126, 2, 180) позже … код здесь расширяется для всего, что вам может понадобиться (например, огни, двигатели, ИК и т. д.), этот код должен работать нормально без модификации.
Шаг 4: Установите программное обеспечение
У меня есть два способа установить этот установщик… nsis: Загрузите самораспаковывающийся установщик ниже и запустите его. У вас будет возможность установить исходники во время установки. двоичный пакет установщика устанавливает основные dll c ++, поэтому его можно запускать на компьютере без установленного Visual C ++. После завершения установки вы можете запустить ее с рабочего стола или из меню «Пуск». zip way (непроверенный): скачайте и запустите, должно работать. может быть. (В zip-архиве та же структура папок, созданная установщиком, без исходных кодов. У меня нет машины без Visual Studio, чтобы протестировать ее, поэтому она может не работать.)
Шаг 5: Используйте интерфейсную программу
Чтобы использовать программу, сначала выберите скорость передачи, определенную в скетче Arduino. Немодифицированный эскиз по умолчанию составляет 38400 бод, но может быть изменен в соответствии с вашими потребностями, например, для более медленной радиосвязи. примечание: скорости передачи выше 38400 не были очень стабильными, я думаю, это потому, что uart заполняется до того, как данные могут быть обработаны. Затем выберите используемый COM-порт. программа по умолчанию использует COM4, обязательно измените его, иначе программа выйдет из строя. Наконец, нажмите "Открыть". Если все прошло успешно, программа откроет выбранный последовательный порт с выбранной скоростью передачи данных. В противном случае программа, вероятно, выйдет из строя из-за необработанного исключения. убедитесь, что порт правильный, и попробуйте еще раз. Используйте текстовые поля для отправки прямых команд на Arduino. «Карта (команда [1], 32, 126, 2, 180)» масштабирует все 94 возможных команды, от * пробела * до ~, читаемых Arduino в ASCII, от 2 до 180 для сервопривода. любой байт меньше 32 ASCII (пробел) или больше 126 (~) по умолчанию равен 63 (?) Полосы дорожек обеспечивают интерфейс для прямых команд. каждый шаг пошагово отправляет последовательную команду на Arduino.
Шаг 6: проявите творческий подход
Подумайте, что из этого можно сделать. Несколько идей: 1. Дроссельная заслонка для авто. 2. Крепление для 3D-камеры 3. Подводный вездеход Удачи!
Рекомендуемые:
Последовательный шлюз UDP / IP для Arduino на базе ESP8266 Shield: 8 шагов
Последовательный шлюз UDP / IP для Arduino на основе ESP8266 Shield: в 2016 году я уже публиковал эту инструкцию «Как создать собственный шлюз Wi-Fi для подключения Arduino к IP-сети». Поскольку я внес некоторые улучшения в код и все еще использую это решение. Тем не менее, теперь есть некоторые экраны ESP8266 т
Превращение USB-порта плат на базе SAMD21 в аппаратный последовательный порт !: 3 шага
Превращение USB-порта плат на базе SAMD21 в аппаратный последовательный порт! В настоящее время стандартным является использование USB-порта платы Arduino (или любой другой совместимой) в качестве эмулируемого последовательного порта. Это очень полезно для отладки, отправки и получения данных с наших любимых плат. Я работал над uChip, когда просматривал данные
Использование ОЗУ ПК для Arduino через последовательный порт: 7 шагов
Использование ОЗУ ПК для Arduino через последовательный порт: мой друг вдохновил меня своим небольшим проектом Arduino. В этом небольшом проекте задействована Arduino UNO R3, которая считывает данные программой, созданной в среде Arduino IDE, и отправляет их в последовательный порт (USB-порт) программой C #, созданной в Visual Studio. Как это
Сервоконтроллер Maestro (Raspberry Pi): 4 шага (с изображениями)
Сервоконтроллер Maestro (Raspberry Pi): базовое руководство по настройке сервоконтроллера Maestro с Raspberry Pi
Последовательный порт Android G1 для робота Arduino: 8 шагов
Последовательный порт Android G1 для робота Arduino: узнайте, как ваш мобильный телефон Android может управлять роботом с помощью платы Arduino. Телефон принимает команды через Telnet с другого телефона или ПК, поэтому вы можете управлять роботом удаленно. В противном случае этот проект не изменит G1, так что вы можете продолжить нас