查看:7133|回复:11
之前比赛做的一个小四足机器人,由51单片机产生十二路PWM控制十二个舵机进行运动,用蓝牙遥控
单片机源程序如下:
复制代码
所有资料51hei提供下载:
避障机器人.rar(63.17 KB, 下载次数: 130)
单片机源程序如下:
- #include "headfile.h"
- void jihuo() //激活/停止
- {
- uint sign = 3;
- //调整四脚姿势
- delayms(250);
- t_up0 = 1800;
- t_up1 = 1500;
- t_up2 = 1500;
- t_up3 = 1500;
- t_up4 = 1500;
- t_up5 = 1500;
- t_up6 = 1500;
- t_up7 = 1500;
- t_up8 = 1500;
- t_up9 = 1100;
- t_up10 = 1500;
- t_up11 = 1600;
-
- //抬左前腿
- delayms(200);
- t_up7 = 1800;
- delayms(50);
- t_up8 = 1200;
- while(sign--)
- {
- delayms(200);
- t_up6 = 1100;
- delayms(200);
- t_up6 = 1500;
- }
- delayms(200);
- t_up7 = 1500;
- delayms(50);
- t_up8 = 1500;
- delayms(200);
- t_up0 = 1500;
- t_up9 = 1500;
- }
- void ahead() //前进
- {
- //调整四脚姿势
- delayms(250);
- t_up0 = 1500;
- t_up1 = 1500;
- t_up2 = 1500;
- t_up3 = 1500;
- t_up4 = 1500;
- t_up5 = 1500;
- t_up6 = 1500;
- t_up7 = 1500;
- t_up8 = 1500;
- t_up9 = 1500;
- t_up10 = 1500;
- t_up11 = 1600;
- while(direc == 2)
- {
- //抬右腿
- delayms(250);
- t_up1 = 1200;
- delayms(125);
- t_up2 = 1800;
- delayms(100);
- t_up0 = 1900;
- delayms(100);
- t_up1 = 1700;
-
- t_up6 = 1900;
- delayms(100);
- t_up3 = 1000;
- delayms(50);
- t_up4 = 1300;
- delayms(100);
- t_up9 = 1100;
- delayms(100);
- t_up5 = 1300;
- t_up2 = 1500;
- delayms(100);
- t_up5 = 1500;
- delayms(50);
- t_up4 = 1500;
- //抬左腿
- delayms(250);
- t_up7 = 1800;
- delayms(125);
- t_up8 = 1200;
- delayms(100);
- t_up6 = 1400;
- delayms(100);
- t_up7 = 1300;
-
- t_up0 = 1500;
- delayms(100);
- t_up9 = 1500;
- delayms(50);
- t_up10 = 1700;
- delayms(100);
- t_up3 = 1500;
- delayms(100);
- t_up11 = 1800;
- t_up8 = 1500;
- delayms(100);
- t_up11 = 1600;
- delayms(50);
- t_up10 = 1500;
- }
- }
- void back() //后退
- {
- //调整四脚姿势
- delayms(250);
- t_up0 = 1500;
- t_up1 = 1500;
- t_up2 = 1500;
- t_up3 = 1500;
- t_up4 = 1500;
- t_up5 = 1500;
- t_up6 = 1500;
- t_up7 = 1500;
- t_up8 = 1500;
- t_up9 = 1500;
- t_up10 = 1500;
- t_up11 = 1600;
- while(direc == 3)
- {
- //抬右腿
- delayms(250);
- t_up4 = 1800;
- delayms(125);
- t_up5 = 1200;
- delayms(100);
- t_up3 = 1000;
- delayms(100);
- t_up4 = 1300;
-
- t_up9 = 1200;
- delayms(100);
- t_up0 = 2000;
- delayms(50);
- t_up1 = 1700;
- delayms(125);
- t_up6 = 1900;
- delayms(125);
- t_up2 = 1700;
- t_up5 = 1500;
- delayms(125);
- t_up2 = 1500;
- delayms(50);
- t_up1 = 1500;
- //抬左腿
- delayms(250);
- t_up10 = 1200;
- delayms(125);
- t_up11 = 1900;
- delayms(100);
- t_up9 = 1500;
- delayms(100);
- t_up10 = 1700;
-
- t_up3 = 1500;
- delayms(100);
- t_up6 = 1500;
- delayms(50);
- t_up7 = 1300;
- delayms(100);
- t_up0 = 1500;
- delayms(100);
- t_up8 = 1200;
- t_up11 = 1600;
- delayms(100);
- t_up8 = 1500;
- delayms(50);
- t_up7 = 1500;
- }
- }
- void ymove() //向右平移
- {
- //调整四脚姿势
- delayms(250);
- t_up0 = 1500;
- t_up1 = 1500;
- t_up2 = 1500;
- t_up3 = 1500;
- t_up4 = 1500;
- t_up5 = 1500;
- t_up6 = 2000;
- t_up7 = 1500;
- t_up8 = 1500;
- t_up9 = 1100;
- t_up10 = 1500;
- t_up11 = 1600;
- while(direc == 7)
- {
- //右边起身
- delayms(250);
- t_up2 = 2000;
- delayms(50);
- t_up1 = 1800;
- delayms(50);
- t_up5 = 1000;
- delayms(50);
- t_up4 = 1200;
- //左边起身
- delayms(250);
- t_up7 = 1200;
- t_up10 = 1800;
- delayms(50);
- //右边还原
- t_up1 = 1500;
- t_up4 = 1500;
- delayms(50);
- t_up2 = 1500;
- t_up5 = 1500;
- t_up8 = 1200;
- t_up11 = 1900;
- delayms(100);
- //左边还原
- t_up7 = 1500;
- t_up10 = 1500;
- delayms(50);
- t_up8 = 1500;
- t_up11 = 1600;
- }
- }
- void zmove() //向左平移
- {
- //调整四脚姿势
- delayms(250);
- t_up0 = 1500;
- t_up1 = 1500;
- t_up2 = 1500;
- t_up3 = 1500;
- t_up4 = 1500;
- t_up5 = 1500;
- t_up6 = 2000;
- t_up7 = 1500;
- t_up8 = 1500;
- t_up9 = 1100;
- t_up10 = 1500;
- t_up11 = 1600;
- while(direc == 6)
- {
- //左边起身
- delayms(250);
- t_up8 = 1000;
- delayms(50);
- t_up7 = 1200;
- delayms(50);
- t_up11 = 2100;
- delayms(50);
- t_up10 = 1800;
- //右边起身
- delayms(250);
- t_up1 = 1800;
- t_up4 = 1200;
- delayms(50);
- //左边还原
- t_up7 = 1500;
- t_up10 = 1500;
- delayms(50);
- t_up8 = 1500;
- t_up11 = 1600;
- t_up2 = 1800;
- t_up5 = 1200;
- delayms(100);
- //右边还原
- t_up1 = 1500;
- t_up4 = 1500;
- delayms(50);
- t_up2 = 1500;
- t_up5 = 1500;
- }
- }
- void right() //右转
- {
- //调整四脚姿势
- delayms(250);
- t_up0 = 1500;
- t_up1 = 1500;
- t_up2 = 1500;
- t_up3 = 1500;
- t_up4 = 1500;
- t_up5 = 1500;
- t_up6 = 1500;
- t_up7 = 1500;
- t_up8 = 1500;
- t_up9 = 1500;
- t_up10 = 1500;
- t_up11 = 1600;
-
- delayms(250);
- t_up1 = 1200;
- delayms(125);
- t_up0 = 1900;
- delayms(100);
- t_up1 = 1500;
- while(direc == 5)
- {
- delayms(200);
- t_up1 = 1700;
- delayms(50);
- t_up2 = 1700;
- delayms(200);
- t_up3 = 1100;
- delayms(100);
- t_up2 = 1500;
- delayms(50);
- t_up1 = 1500;
- delayms(200);
- t_up4 = 1400;
- delayms(50);
- t_up5 = 1400;
- delayms(100);
- t_up0 = 1900;
- delayms(100);
- t_up9 = 1100;
- delayms(100);
- t_up6 = 1900;
- delayms(200);
- t_up5 = 1500;
- delayms(50);
- t_up4 = 1500;
- delayms(200);
- t_up1 = 1700;
- delayms(50);
- t_up2 = 1700;
- delayms(200);
- t_up6 = 1500;
- delayms(200);
- t_up2 = 1500;
- delayms(50);
- t_up1 = 1500;
- delayms(200);
- t_up10 = 1600;
- delayms(100);
- t_up9 = 1500;
- delayms(100);
- t_up10 = 1500;
- delayms(200);
- t_up3 = 1500;
- }
- }
- void left() //左转
- {
- //调整四脚姿势
- delayms(250);
- t_up0 = 1500;
- t_up1 = 1500;
- t_up2 = 1500;
- t_up3 = 1500;
- t_up4 = 1500;
- t_up5 = 1500;
- t_up6 = 1500;
- t_up7 = 1500;
- t_up8 = 1500;
- t_up9 = 1500;
- t_up10 = 1500;
- t_up11 = 1600;
-
- delayms(250);
- t_up1 = 1200;
- delayms(125);
- t_up0 = 1900;
- delayms(100);
- t_up1 = 1500;
- delayms(200);
- t_up3 = 1000;
- while(direc == 4)
- {
- delayms(200);
- t_up1 = 1700;
- delayms(50);
- t_up2 = 1700;
- delayms(200);
- t_up6 = 2000; // 1900
- delayms(200);
- t_up3 = 1500;
- delayms(200);
- t_up9 = 1100;
- delayms(50);
- t_up2 = 1500;
- delayms(200);
- t_up1 = 1500;
- delayms(200);
- t_up6 = 1500;
- delayms(200);
- t_up3 = 1100;
- delayms(200);
- t_up11 = 1400;
- delayms(50);
- t_up9 = 1500;
- delayms(50);
- t_up11 = 1600;
- }
- }
所有资料51hei提供下载:
避障机器人.rar(63.17 KB, 下载次数: 130)
评分
-
发表于 2020-2-29 19:58|提问,程序中利用定时器1控制PWM占空比时间,但是楼主的程序中,定时器1在定时器1中断中,这样做的话,当中 ...在中断里,只是改变了PWM的输出值,没有死循环checkmgcmn('post_813146')
-
发表于 2020-3-26 16:46|请问楼主 还有外置电路吗?checkmgcmn('post_827656')
-
发表于 2020-4-5 22:26|请问楼主 还有外置电路吗?只有最小系统和降压电路checkmgcmn('post_833527')