Управление манипулятором Arduino с помощью приложения для Android
Компоненты и расходные материалы
| | × | 1 | |
| | × | 1 | |
| | × | 1 | |
| | × | 1 | |
| LittleArm - Полный комплект | | × | 1 | |
Приложения и онлайн-сервисы
Об этом проекте
Это руководство основано на материалах с этой страницы.
LittleArm традиционно управляется с помощью бесплатного настольного компьютерного приложения, работающего в Windows и Linux. Но для этого необходимо, чтобы LittleArm был подключен к компьютеру для управления. Наконец-то мы завершили приложение для LittleArm, чтобы вы могли управлять Arduino по беспроводной сети с помощью Bluetooth.
Приложение позволяет вам управлять всеми степенями свободы LittleArm, а также записывать наборы команд и воспроизводить их. Код для Arduino не отличается от нашего традиционного кода в программных пакетах отсюда.
Приложение LittleArm для этого проекта можно скачать здесь.
Код
Код Arduino Arduino
Этот код можно использовать с настольным приложением или приложением для Android через bluetooth или usb #include // библиотека arduino # include // стандартная библиотека c # define PI 3.141Servo baseServo; Серво плечоServo; Серво elbowServo; Servo gripperServo; int команда; struct JointAngle {int base; внутреннее плечо; int elbow;}; int желаемыйGrip; int gripperPos; int желаемыйDelay; int servoSpeed =15; int ready =0; struct JointAngle desireAngle; // желаемые углы сервоприводов // +++++++++++++++ ФУНКЦИОНАЛЬНЫЕ ДЕКЛАРАЦИИ ++++++++++++++++++++++++ +++ int servoParallelControl (int thePos, Servo theServo); // ++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++ void setup () {Serial.begin (9600); baseServo.attach (9); // подключает сервопривод на выводе 9 к сервообъекту. плечоServo.attach (10); elbowServo.attach (11); gripperServo.attach (6); Serial.setTimeout (50); // гарантирует, что arduino не считывает серийный номер слишком долго Serial.println ("start"); baseServo.write (90); // исходное положение сервоприводов плечоServo.write (150); elbowServo.write (110); ready =0;} // основная петля arduino loopvoid loop () {if (Serial.available ()) {ready =1; желаемыйAngle.base =Serial.parseInt (); желаемыйAngle.shoulder =Serial.parseInt (); желаемыйAngle.elbow =Serial.parseInt (); желаемыйGrip =Serial.parseInt (); желаемыйDelay =Serial.parseInt (); if (Serial.read () =='\ n') {// если последний байт равен 'd', прекратить чтение и выполнить команду 'd' означает 'готово' Serial.flush (); // очищаем все остальные команды из буфера // отправляем завершение команды Serial.print ('d'); }} int status1 =0; int status2 =0; int status3 =0; int status4 =0; int done =0; while (done ==0 &&ready ==1) {// перемещаем сервопривод в желаемое положение status1 =servoParallelControl (желаемыйAngle.base, baseServo, желаемыйDelay); status2 =servoParallelControl (желаемый угол.плечо, плечоСерво, желаемая задержка); status3 =servoParallelControl (desireAngle.elbow, elbowServo, желаемыйDelay); status4 =servoParallelControl (желаемыйGrip, gripperServo, желаемыйDelay); if (status1 ==1 &status2 ==1 &status3 ==1 &status4 ==1) {done =1; }} // конец while} // +++++++++++++++++++++++++++++ ОПРЕДЕЛЕНИЯ ФУНКЦИЙ ++++++++ +++++++++++++++++++++++++++++++++ int servoParallelControl (int thePos, Servo theServo, int theSpeed) {int startPos =theServo.read (); // считываем текущую позицию int newPos =startPos; // int theSpeed =speed; // определяем положение позиции относительно команды // если текущая позиция меньше фактического перемещения вверх if (startPos <(thePos-5)) {newPos =newPos + 1; theServo.write (newPos); задержка (скорость); возврат 0; } иначе, если (newPos> (thePos + 5)) {newPos =newPos - 1; theServo.write (newPos); задержка (скорость); возврат 0; } else {возврат 1; }}
Схема