Найти в Дзене
Asynchronics

Перчатка с гибким датчиком

С ее помощью можно делать захват движения, управлять интерфейсом, создавать анимацию и т.п. Здесь мы рассмотрим простой пример для передачи движения на механическую руку робота. Гибкие датчики можно купить в готовом виде (обойдется от 547 до 1800р за штуку). Есть более бюджетный вариант со сборкой своих самодельных датчиков. На 1 перчатку понадобится: Проверка поступления данных для одного датчика void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println(analogRead(2));
delay(10);
} Подключение к сервоприводам //Подключаем библиотеку #include <Servo.h>
//Наименование сервоприводов
Servo servo2;
Servo servo3;
Servo servo4;
Servo servo5;
Servo servo6;
//Настройка аналоговых входов для датчиков
const int flexpin2 = 4;
const int flexpin3 = 0;
const int flexpin4 = 1;
const int flexpin5 = 3;
const int flexpin6 = 2;
void setup()
{ //Настройка контактов ШИМ для сервоприводов
servo2.attach(10); // pinky
servo3.attach(11); //ring
servo4.attach(3); // middle
servo5.attach(6); /

С ее помощью можно делать захват движения, управлять интерфейсом, создавать анимацию и т.п.

Здесь мы рассмотрим простой пример для передачи движения на механическую руку робота.

Гибкие датчики можно купить в готовом виде (обойдется от 547 до 1800р за штуку).

Пример готовой печатки с IT-Форума «Фича», г. Таганрог
Пример готовой печатки с IT-Форума «Фича», г. Таганрог

Есть более бюджетный вариант со сборкой своих самодельных датчиков.

На 1 перчатку понадобится:

  • Arduino UNO
  • 5 фоторезисторов (3 мм)
  • 5 светодиодов (3 мм)
  • термоусадка
  • трубка из под капельницы
  • резисторы: 1 кОм (х5)
  • провода
  • питание — крона
-2
-3

Проверка поступления данных для одного датчика

void setup() {
Serial.begin(9600);
}

void loop() {
Serial.println(analogRead(2));
delay(10);
}

Подключение к сервоприводам

//Подключаем библиотеку
#include <Servo.h>

//Наименование сервоприводов
Servo servo2;
Servo servo3;
Servo servo4;
Servo servo5;
Servo servo6;

//Настройка аналоговых входов для датчиков
const int flexpin2 = 4;
const int flexpin3 = 0;
const int flexpin4 = 1;
const int flexpin5 = 3;
const int flexpin6 = 2;

void setup()
{
//Настройка контактов ШИМ для сервоприводов
servo2.attach(10); // pinky
servo3.attach(11); //ring
servo4.attach(3); // middle
servo5.attach(6); //index
servo6.attach(5); //thumb
}


void loop()
{
//Объявление положения сервопривода и положения сгиба
int flexposition2;
int servoposition2;

flexposition2 = analogRead(flexpin2);

//Сопоставление значения датчика с положением сервопривода
//servoposition = map(flexposition, min(sensor), max(sensor), min(servo), max(servo));
servoposition2 = map(flexposition2, 550, 810, 38, 180);

//Положение сервопривода — это значение между min(servo), max(servo)
servoposition2 = constrain(servoposition2, 38, 180);

//Запись положения сервопривода
servo2.write(servoposition2);

/////////////////////////////////////////////////////////////

int flexposition3;
int servoposition3;

flexposition3 = analogRead(flexpin3);

servoposition3 = map(flexposition3, 560, 800, 10, 148);
servoposition3 = constrain(servoposition3, 10, 148);

servo3.write(servoposition3);

/////////////////////////////////////////////////////////////

int flexposition4;
int servoposition4;

flexposition4 = analogRead(flexpin4);

servoposition4 = map(flexposition4, 550, 780, 0, 89);
servoposition4 = constrain(servoposition4, 0, 89);

servo4.write(servoposition4);

/////////////////////////////////////////////////////////////

int flexposition5;
int servoposition5;

flexposition5 = analogRead(flexpin5);

servoposition5 = map(flexposition5, 550, 800, 16, 180);
servoposition5 = constrain(servoposition5, 16, 180);

servo5.write(servoposition5);


/////////////////////////////////////////////////////////////

int flexposition6;
int servoposition6;

flexposition6 = analogRead(flexpin6);

servoposition6 = map(flexposition6, 560, 740, 16, 180);
servoposition6 = constrain(servoposition6, 16, 180);

servo6.write(servoposition6);

delay(20);
}