|
这个机器狗由STM32F103C6T6为核心接有四个SG90舵机和一片BT04-E蓝牙模块构成.由于机器狗每条腿只有一个自由度,所以无法优化步态程序及重心控制.机器狗行走时只会在在原地徘徊.为了能使机器狗正常行走,就在其脚上装配了棘轮装置,使其向前磨擦力小于向后磨擦力.
手机遥控采用HC蓝牙助手APP来控制机器狗前进,左转,右转,停止四种工作状态.
机器狗 程序如下:
#include <Servo.h>
Servo myservo1;
Servo myservo2;
Servo myservo3;
Servo myservo4;
char seria1Data;
int k = 0;
int pos = 0;
void setup() {
Serial.begin(9600);
myservo1.attach(PA0);
myservo2.attach(PA1);
myservo3.attach(PA2);
myservo4.attach(PA3);
myservo1.write(90);
myservo2.write(90);
myservo3.write(90);
myservo4.write(90);
delay(2000);
}
void loop() {
seria1Data= Serial.read();
if(seria1Data == '1' ) k=1;
if(seria1Data == '2' ) k=2;
if(seria1Data == '3' ) k=3;
if(seria1Data == '0' ) k=0;
if(k == 3 ) {
for (pos = 60; pos <= 120; pos += 1) {
myservo1.write(pos);
myservo2.write(180-pos);
myservo3.write(pos);
myservo4.write(180-pos);
delay(10);
}
for (pos = 120; pos >= 60; pos -= 1) {
myservo1.write(pos);
myservo2.write(180-pos);
myservo3.write(pos);
myservo4.write(180-pos);
delay(10);
}
}
if(k == 1 ) {
myservo1.write(60);
myservo2.write(120);
for (pos = 60; pos <= 120; pos += 1) {
myservo3.write(pos);
myservo4.write(180-pos);
delay(10);
}
for (pos = 120; pos >= 60; pos -= 1) {
myservo3.write(pos);
myservo4.write(180-pos);
delay(10);
}
}
if(k == 2 ) {
myservo4.write(60);
myservo3.write(120);
for (pos = 60; pos <= 120; pos += 1) {
myservo1.write(pos);
myservo2.write(180-pos);
delay(10);
}
for (pos = 120; pos >= 60; pos -= 1) {
myservo1.write(pos);
myservo2.write(180-pos);
delay(10);
}
}
if(k == 0 ) {
myservo1.write(90);
myservo2.write(90);
myservo3.write(90);
myservo4.write(90);
}
}
机器狗外观图和电路图如下: |
评分
-
查看全部评分
|