Робот-манипулятор uARM. Программа

Управление сервомоторами

Примечание. Этот и последующие тесты следует проводить при отсоединённых от конструкции сервомоторах.

Поворот сервомотора на заданный угол

Для управления сервомоторами следует подключить библиотеку Servo.h. Внутри функции setup инициализируем сервомотор функцией attach, в качестве аргумента которой будет номер контакта, к которому подключен мотор.

Для поворота сервомотора вокруг оси используется функция write. Единственный аргумент это функции — угол поворота в градусах. Сервомоторы, применяемые в данном конструкторе, могут поворачиваться на угол от 0 до 180 градусов.

В данном примере сервомотор, подключенный к контакту контроллера №5 будет поворачиваться сначала на угол 45 градусов, затем на 135.

#include "Servo.h"

byte servoPin = 5;
Servo srv;

void setup() {
  srv.attach(servoPin);
}

void loop() {
  srv.write(45);
  delay(1000);
  srv.write(135);
  delay(1000);
}

Сброс сервомоторов в начальное положение

Перед окончательной установкой сервомоторов на конструкцию манипулятора, необходимо убедиться, что они находятся в начальном положении — 90 градусов. Для этого, можно использовать следующую программу.

После подачи питания на контроллер, данная программа повернет валы сервомоторов на 90 градусов.

#include "Servo.h"

byte servoPins[4] = {2,3,4,5};
Servo srv[4];

void setup() {
  for(byte i=0; i<4; i++){
    srv[i].attach(servoPins[i]);
  }

  // сброс сервомоторов в центральное положение
  for(byte i=0; i<4; i++){
    srv[i].write(90);
  }

  delay(3000);

  // отключение сервомоторов
  for(byte i=0; i<4; i++){
    srv[i].detach();
  }
}

void loop() {
}

Включение и выключение вакуумного насоса

Драйвер вакуумного насоса подключен к контактам 6 и 7. Инициализируем эти контакты на контроллере. Один из них оставим на низком уровне, а состояние второго будем меня в цикле.

Таким образом, насос будет включаться и выключаться с периодом в 1 секунду.

byte in1Pin = 6;
byte in2Pin = 7;

void setup() {
  pinMode(in1Pin, OUTPUT);
  pinMode(in2Pin, OUTPUT);

  digitalWrite(in2Pin, LOW);
}

void loop() {
  digitalWrite(in1Pin, HIGH);
  delay(1000);
  digitalWrite(in1Pin, LOW);
  delay(1000);
}

Изменено:

Добавить комментарий

Ваш адрес email не будет опубликован.