Arduino и робо-рука

Arduino и робо-рука
Что нужно чтобы сделать робо-руку?

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

Алгоритм работы руки очень простой — ардуина cчитывает данные с датчиков перчатки и выдаёт соответсвующие управляющие сигналы на сервы.
В итоге, рука повторяет движения пальцев человека.

Видео работы:
робо-рука из подручных материалов:


из готового набора:


код скетча:
/*
 flex arduino to make a robot hand.

  animatronic hand using arduino

 */

 #include <Servo.h>      

 Servo servoMotor;
 Servo servoMotor1;
 Servo servoMotor2;
 Servo servoMotor3;
 Servo servoMotor4;  

 int analogPin = 0;      // finger 1
 int analogValue = 0;    
 int servoPin = 2;
 int analogPin2 = 1;      //finger 2      
 int analogValue2 = 0;    
 int servoPin2 = 3;
 int analogPin3 = 2;      //finger 3
 int analogValue3 = 0;    
 int servoPin3 = 4;
 int analogPin4 = 3;      //finger 4
 int analogValue4 = 0;    
 int servoPin4 = 5;
 int analogPin5 = 4;      
 int analogValue5 = 0;    
 int servoPin5 = 2;

 void setup() { 
   servoMotor.attach(servoPin); 
   servoMotor1.attach(servoPin1);
   servoMotor2.attach(servoPin2);
   servoMotor3.attach(servoPin3);
   servoMotor4.attach(servoPin4); 
  } 

 void loop()
 { 
   analogValue = analogRead(analogPin);                 
   analogValue = map(analogValue, 0, 1023, 0, 179);     
   servoMotor.write(analogValue);                       
   delay(15);  

   analogValue2 = analogRead(analogPin2);                 
   analogValue2 = map(analogValue2, 0, 1023, 0, 179);     
   servoMotor1.write(analogValue2);                       
   delay(15);       

   analogValue3 = analogRead(analogPin3);                 
   analogValue3 = map(analogValue3, 0, 1023, 0, 179);     
   servoMotor2.write(analogValue3);                       
   delay(15);    

   analogValue4 = analogRead(analogPin4);                 
   analogValue4 = map(analogValue4, 0, 1023, 0, 179);     
   servoMotor3.write(analogValue4);                       
   delay(15);

   analogValue5 = analogRead(analogPin5);                 
   analogValue5 = map(analogValue5, 0, 1023, 0, 179);
   servoMotor4.write(analogValue4);                       
   delay(15);
}


Ссылки:
letsmakerobots.com/node/22942

По теме:
Программирование Arduino — библиотека Servo
  • +2
  • 30 июля 2011, 08:14
  • admin

Комментарии (7)

RSS свернуть / развернуть
+
0
Действительно очень просто. Видел подобное у Адама из разрушителей легенд, но там был скорее удлиннитель руки, ничего роботизированного. Когда Джейми искал себе коллегу такая рука стала решающим фактором при приёме в передачу.
avatar

AlexMelyon

  • 2 августа 2011, 06:30
+
0
Извини, что обращаюсь, но я в робототехнике новичок и не мог бы ты мне помочь. Я хочу сделать вот такую ​​руку, где можно найти принципиальную схему для ее создания.
avatar

Nazik

  • 10 сентября 2013, 19:14
+
0
Было бы неплохо написать про датчик изгиба. Его например в перчатку встроить можно.
avatar

universeroot

  • 3 августа 2011, 20:15
+
0
Друзья, с кем можно проконсультироваться по поводу этой руки? Я механику сделал, датчик подключил, но что-то не так, — не работает. Если кто может подсказать, скиньте адрес почты, я закину пару фоток. Плиз!!!
avatar

maksim_godunko

  • 11 ноября 2013, 20:37
+
0
а сами датчики считываются?
проверить можно вставив отладочный вывод считанных значений в последовательный порт.
а вообще лучше на форум писать — с подробным описанием что/как делалось :)
avatar

noonv

  • 12 ноября 2013, 05:30
+
0
у меня получилось, только серва на маленький угол поворачивается и его не хватает для полного сгибания пальца.
avatar

maksim_godunko

  • 20 ноября 2013, 18:38
+
0
значит, нужно провести калибровку :)
посмотрите в каком диапазоне считываются показания датчиков и соответствующим образом измените их преобразование в значения угла поворота сервомашинок (функция map()).
avatar

noonv

  • 27 ноября 2013, 13:00

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.