Резюме.
Это был бот, которого мы использовали для проведения семинаров по использованию Arduino для управления ходячим роботом.
Робот двигался только вперед и назад, но показывал пользователям, как подключить джойстик, выключатель питания, батареи и сервоприводы к Arduino, а затем запрограммировать все это для работы.
Инструкции.
// Код для робота, напечатанного на 3D-принтере.
// Узнайте больше на:http://www.instructables.com/id/3D-Printed-Robot/
// Этот код находится в общественном достоянии.
//
//добавьте библиотеку сервопривода
Включить.
//Создаем два экземпляра сервопривода.
Сервопривод myservo;
Сервомотор myservo1;
int frontPin = 9;
Интегральный обратный вывод
//Изменяйте эти числа, пока сервомоторы не будут выровнены по центру!!!!
// В теории 90 - идеальный центр, но обычно он находится выше или ниже.
Инт FrontBalanced = 91;
Инт BackCentered = 102;
Угол int angle = 25;
//Переменные для компенсации заднего центра баланса, когда передняя часть смещается.
int backRight = BackCentered - 10;
Инт backLeft = BackCentered + 10;
Интегральный порт xPin = A4;
Интегральный номер yPin = A5;
Константа int FRONT = 1;
Константа int BACK = 2;
const int LEFT = 3;
const int ПРАВО = 4;
// Настройте начальные условия сервоприводов и подождите 2 секунды.
void setup()
{
myservo1.attach(frontPin);
myservo.attach(backPin);
myservo1.write(FrontBalanced);
myservo.write(BackCentered);
// Задержка (5000 миллисекунд);
Serial.begin(9600);
}
void frontLeg(int x) {
myservo1.write(x);
}
void backLeg(int x) {
myservo.write(x);
}
void loop()
{
int x = analogRead(xPin);
int y = analogRead(yPin);
Serial.print("x :");
Serial.println(x);
Serial.print("y :");
Serial.println(y);
Интенсивность освещения = 0;
если (x > 700) {
Направление = НАЗАД;
} иначе, если (x < 300) {
Направление = ВПЕРЁД;
)
// Если (y > 700) {
// направление = ПРАВО;
// } else if (y < 300) {
// направление = ВЛЕВО;
// }
switch (направление) {
Задняя панель:
front();
Перерыв;
Задняя часть корпуса:
Назад();
Перерыв;
Случай ЛЕВЫЙ:
left();
Перерыв;
Случай ПРАВЫЙ:
Вправо();
Перерыв;
По умолчанию:
Прямо();
Перерыв;
)
Задержка(1);
}
//Функция ходьбы.
void front(){
frontLeg(FrontBalanced + angle);
Задержка (50);
Задняя нога (центр спины - угол);
Задержка (200);
frontLeg(FrontBalanced - угол);
Задержка (50);
Задняя нога (BackCentered + угол);
Задержка (200);
}
void back(){
Задняя нога (центр спины - угол);
Задержка (50);
frontLeg(FrontBalanced + angle);
Задержка (200);
Задняя нога (BackCentered + угол);
Задержка (50);
frontLeg(FrontBalanced - угол);
Задержка (200);
}
//Функция ходьбы.
void left(){
frontLeg(FrontBalanced + угол - 5);
Задержка (100);
Задняя нога (центр спины - угол);
Задержка (300);
frontLeg(FrontBalanced - угол - 5);
Задержка (100);
Задняя нога (BackCentered + угол);
Задержка (300);
}
//Функция ходьбы.
void right(){
frontLeg(FrontBalanced + angle + 5);
Задержка (100);
Задняя нога (центр спины - угол);
Задержка (300);
frontLeg(FrontBalanced - угол + 5);
Задержка (100);
Задняя нога (BackCentered + угол);
Задержка (300);
}
void straight() {
Передняя нога (Передний баланс);
Задняя нога (центр сзади);
}
Tags
Modellquelle
