Рассмотрели проекты и рисунки декоративного оформления полноростового проморобота.
Рассмотрели рисунки суставов рук проморобота.
Совершенствуем работу с сервоприводами для установки их в гироскутер.
Рассмотрели возможность управления гироскутером дистанционно и удаленно используя для этого установленные внутри гироскутера сервоприводы для имитации наклона площадки гироскутера.
Идея такая — снимаем корпус с гироскутера, снимаем со статичных мест гироскопы управления, устанавливаем на их места вращающиеся площадки крепления гироскопов, площадки напечатаем на 3д принтере. Затем к этим площадкам крепим сервприводы, сервоприводы подключаем к микроконтроллеру ардуино и пишем программу для сервоприводов для наклона с их помощью площадки с гироскопами, что приведет к инициализации движения гироскутера.
В связи с тем, что данный гироскутер будет использован как платформа для полноростового проморобота, можно считать программу написанную для сервоприводов началом программы для большого проекта полноростового проморобота.
По мере увеличения функций программа будет расти и увеличиваться в зависимости от подключения разных возможностей.
Так же испытали манипулятор, который так же двигается на сервоприводах.
Программа движения гироскутера с помощью сервоприводов.
# include <Servo.h> // подключаем библиотеку управления сервоприводами
Servo right; // называем сервопривод управляющий правым гироскопом
Servo left; // называем сервопривод управляющий левым гироскопом
void setup(){
right.attach(9); // определяем контакт 9 подключения правого сервопривода
left.attach(10); // определяем контакт 10 подключения левого сервопривода
}
void loop(){ // программу выполнения пока оставляем пустой
}
// определяем горизонтальное состояние гироскопов по установке сервоприводов на 90 градусов, т.к. отклонять гироскопы надо будет назад, поэтому сервоприводы в положение 0 градусов устанавливать нельзя
void forward(){ // функция движения гироскутера вперед
left.write(100); // левый сервопривод устанавливаем на 100 градусов, больше на 10 градусов от горизонтального состояния
right.write(100); // правый сервопривод устанавливаем на 100 градусов, больше на 10 градусов от горизонтального состояния
// при таком положении 2 сервопривода наклонят правый и левый гироскоп вперед на 10 градусов и гироскутер поедет вперед
}
void back(){ // функция движения назад
left.write(80);// левый сервопривод устанавливаем на 80 градусов, меньше на 10 градусов от горизонтального состояния
right.write(80);// правый сервопривод устанавливаем на 80 градусов, меньше на 10 градусов от горизонтального состояния
}
void leftf(){ // функция поворота влево вперед
left.write(90); // левый сервопривод устанавливаем на 90 градусов, горизонтальное состояние — левое колесо гироскутера остановлено
right.write(100);// правый сервопривод устанавливает правый гироскоп на 10 градусов ниже горизонтального состояния — правое колесо едет вперед
// левое колесо на месте, правое колесо вперед — гироскутер поворачивает налево вперед
}
void rightf(){ // функция поворота вправо вперед
left.write(100);// левый сервопривод устанавливает левый гироскоп на 10 градусов ниже горизонтального состояния — левое колесо едет вперед
right.write(90);// правый сервопривод устанавливаем на 90 градусов, горизонтальное состояние — правое колесо гироскутера остановлено
// правое колесо на месте, левое колесо вперед — гироскутер поворачивает направо вперед
}
void rightb(){ // функция поворота вправо назад
left.write(90);// левый сервопривод устанавливаем на 90 градусов, горизонтальное состояние — левое колесо гироскутера остановлено
right.write(80);// правый сервопривод устанавливает правый гироскоп на 10 градусов выше горизонтального состояния — правое колесо едет назад
// левое колесо на месте, правое колесо назад — гироскутер поворачивает направо назад
}
void leftb(){ // функция движения влево назад
left.write(80);// левый сервопривод устанавливает левый гироскоп на 10 градусов выше горизонтального состояния — левое колесо едет назад
right.write(90); // правый сервопривод устанавливаем на 90 градусов, горизонтальное состояние — правое колесо гироскутера остановлено
// правое колесо на месте, левое колесо назад — гироскутер поворачивает налево назад
}
Программа работы манипулятора
Программа работы манипулятора довольно сложная.
Необходимо определить названия для 4 сервоприводов, вычислить углы состояния начального и конечного положения сервоприводов, а так же на какой угол и когда каждый сервопривод повернуть для получения определенных действий манипулятора.
После полученных данных в цифрах, пишем программу для движения манипулятором, пробная программа, будет дорабатываться.
Циклы применены для уменьшения скорости работы сервоприводов.
#include <Servo.h> // подключаем библиотеку
int i=0; // переменная счетчика
int s = 10; // переменная скорости работы
Servo vverh; // названия сервоприводов
Servo povorot;
Servo vpered;
Servo zahvat;
void setup() {
vverh.attach(9); // определение подключения контактов сервоприводов
povorot.attach(6);
vpered.attach(11);
zahvat.attach(3);
vverh.write(90); // начальное состояние манипулятора
vpered.write(60);
zahvat.write(170);
povorot.write(50);
delay(2000); // пауза старта
}
void loop() { // программа исполнения
delay(1000); // пауза 1с
i=60; // счетчик 60
while(i<=90){ // цикл замедления работы
i=i+1; // изменения счетчика
delay(s); // пауза в работе
vpered.write(i); // поворот сервопривода для движения манипулятора вперед
}
delay(2000); // пауза 2с
zahvat.write(125); // захват
delay(2000); // пауза 2с
i=90; // счетчик
while(i<=180){
i=i+1;
delay(s);
vverh.write(i); // вверх
}
delay(1000); // пауза
i=60;
while(i<=180){
i=i+1;
delay(s);
povorot.write(i); // поворот
}
delay(2000); // пауза
i=180;
while(i>=90){
i=i-1;
delay(s);
vverh.write(i); // вниз манипулятор
}
delay(1000);// пауза
zahvat.write(170); // отпустить захват
i=100;
while(i>=60){
i=i-1;
delay(s);
vpered.write(i); // движение назад
}
i=180;
while(i>=50){
i=i-1;
delay(s-5);
povorot.write(i); // поворот в начальную точку
}
}