|
|
這個機器狗由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);
}
}
機器狗外觀圖和電路圖如下: |
評分
-
查看全部評分
|