久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8517|回復: 11
收起左側

51單片機 四足機器人 12路PWM源程序

  [復制鏈接]
ID:516644 發表于 2019-9-3 18:16 | 顯示全部樓層 |閱讀模式
之前比賽做的一個小四足機器人,由51單片機產生十二路PWM控制十二個舵機進行運動,用藍牙遙控
IMG_20190503_164931.jpg

單片機源程序如下:
  1. #include "headfile.h"

  2. void jihuo()        //激活/停止
  3. {
  4.         uint sign = 3;
  5. //調整四腳姿勢
  6.         delayms(250);
  7.         t_up0 = 1800;
  8.         t_up1 = 1500;
  9.         t_up2 = 1500;
  10.         t_up3 = 1500;
  11.         t_up4 = 1500;
  12.         t_up5 = 1500;
  13.         t_up6 = 1500;
  14.         t_up7 = 1500;
  15.         t_up8 = 1500;
  16.         t_up9 = 1100;
  17.         t_up10 = 1500;
  18.         t_up11 = 1600;
  19.        
  20. //抬左前腿
  21.         delayms(200);
  22.         t_up7 = 1800;
  23.         delayms(50);
  24.         t_up8 = 1200;
  25.         while(sign--)
  26.         {
  27.                 delayms(200);
  28.                 t_up6 = 1100;
  29.                 delayms(200);
  30.                 t_up6 = 1500;
  31.         }
  32.         delayms(200);
  33.         t_up7 = 1500;
  34.         delayms(50);
  35.         t_up8 = 1500;
  36.         delayms(200);
  37.         t_up0 = 1500;
  38.         t_up9 = 1500;
  39. }

  40. void ahead()        //前進
  41. {
  42. //調整四腳姿勢
  43.         delayms(250);
  44.         t_up0 = 1500;       
  45.         t_up1 = 1500;
  46.   t_up2 = 1500;
  47.   t_up3 = 1500;
  48.   t_up4 = 1500;
  49.   t_up5 = 1500;
  50.   t_up6 = 1500;
  51.   t_up7 = 1500;
  52.   t_up8 = 1500;
  53.   t_up9 = 1500;
  54.   t_up10 = 1500;
  55.   t_up11 = 1600;
  56.         while(direc == 2)
  57.         {
  58. //抬右腿
  59.                 delayms(250);
  60.                 t_up1 = 1200;
  61.                 delayms(125);
  62.                 t_up2 = 1800;
  63.                 delayms(100);
  64.                 t_up0 = 1900;
  65.                 delayms(100);
  66.                 t_up1 = 1700;
  67.                
  68.                 t_up6 = 1900;
  69.                 delayms(100);
  70.                 t_up3 = 1000;
  71.                 delayms(50);
  72.                 t_up4 = 1300;
  73.                 delayms(100);
  74.                 t_up9 = 1100;
  75.                 delayms(100);
  76.                 t_up5 = 1300;
  77.                 t_up2 = 1500;
  78.                 delayms(100);
  79.                 t_up5 = 1500;
  80.                 delayms(50);
  81.                 t_up4 = 1500;

  82. //抬左腿
  83.                 delayms(250);
  84.                 t_up7 = 1800;
  85.                 delayms(125);
  86.                 t_up8 = 1200;
  87.                 delayms(100);
  88.                 t_up6 = 1400;
  89.                 delayms(100);
  90.                 t_up7 = 1300;
  91.                
  92.                 t_up0 = 1500;
  93.                 delayms(100);
  94.                 t_up9 = 1500;
  95.                 delayms(50);
  96.                 t_up10 = 1700;
  97.                 delayms(100);
  98.                 t_up3 = 1500;
  99.                 delayms(100);
  100.                 t_up11 = 1800;
  101.                 t_up8 = 1500;
  102.                 delayms(100);
  103.                 t_up11 = 1600;
  104.                 delayms(50);
  105.                 t_up10 = 1500;
  106.         }
  107. }

  108. void back()         //后退
  109. {
  110. //調整四腳姿勢
  111.         delayms(250);
  112.         t_up0 = 1500;
  113.         t_up1 = 1500;
  114.   t_up2 = 1500;
  115.   t_up3 = 1500;
  116.   t_up4 = 1500;
  117.   t_up5 = 1500;
  118.   t_up6 = 1500;
  119.   t_up7 = 1500;
  120.   t_up8 = 1500;
  121.   t_up9 = 1500;
  122.   t_up10 = 1500;
  123.   t_up11 = 1600;
  124.         while(direc == 3)
  125.         {
  126. //抬右腿
  127.                 delayms(250);
  128.                 t_up4 = 1800;
  129.                 delayms(125);
  130.                 t_up5 = 1200;
  131.                 delayms(100);
  132.                 t_up3 = 1000;
  133.                 delayms(100);
  134.                 t_up4 = 1300;
  135.                
  136.                 t_up9 = 1200;
  137.                 delayms(100);
  138.                 t_up0 = 2000;
  139.                 delayms(50);
  140.                 t_up1 = 1700;
  141.                 delayms(125);
  142.                 t_up6 = 1900;
  143.                 delayms(125);
  144.                 t_up2 = 1700;
  145.                 t_up5 = 1500;
  146.                 delayms(125);
  147.                 t_up2 = 1500;
  148.                 delayms(50);
  149.                 t_up1 = 1500;

  150. //抬左腿
  151.                 delayms(250);
  152.                 t_up10 = 1200;
  153.                 delayms(125);
  154.                 t_up11 = 1900;
  155.                 delayms(100);
  156.                 t_up9 = 1500;
  157.                 delayms(100);
  158.                 t_up10 = 1700;
  159.                
  160.                 t_up3 = 1500;
  161.                 delayms(100);
  162.                 t_up6 = 1500;
  163.                 delayms(50);
  164.                 t_up7 = 1300;
  165.                 delayms(100);
  166.                 t_up0 = 1500;
  167.                 delayms(100);
  168.                 t_up8 = 1200;
  169.                 t_up11 = 1600;
  170.                 delayms(100);
  171.                 t_up8 = 1500;
  172.                 delayms(50);
  173.                 t_up7 = 1500;
  174.         }
  175. }

  176. void ymove()         //向右平移
  177. {
  178. //調整四腳姿勢
  179.         delayms(250);
  180.         t_up0 = 1500;
  181.         t_up1 = 1500;
  182.   t_up2 = 1500;
  183.   t_up3 = 1500;
  184.   t_up4 = 1500;
  185.   t_up5 = 1500;
  186.   t_up6 = 2000;
  187.   t_up7 = 1500;
  188.   t_up8 = 1500;
  189.   t_up9 = 1100;
  190.   t_up10 = 1500;
  191.   t_up11 = 1600;
  192.         while(direc == 7)
  193.         {
  194. //右邊起身
  195.                 delayms(250);
  196.                 t_up2 = 2000;
  197.                 delayms(50);
  198.                 t_up1 = 1800;
  199.                 delayms(50);
  200.                 t_up5 = 1000;
  201.                 delayms(50);
  202.                 t_up4 = 1200;       
  203. //左邊起身
  204.                 delayms(250);
  205.                 t_up7 = 1200;
  206.                 t_up10 = 1800;
  207.                 delayms(50);
  208. //右邊還原
  209.                 t_up1 = 1500;
  210.                 t_up4 = 1500;
  211.                 delayms(50);
  212.                 t_up2 = 1500;
  213.                 t_up5 = 1500;
  214.                 t_up8 = 1200;
  215.                 t_up11 = 1900;
  216.                 delayms(100);
  217. //左邊還原               
  218.                 t_up7 = 1500;
  219.                 t_up10 = 1500;
  220.                 delayms(50);
  221.                 t_up8 = 1500;
  222.                 t_up11 = 1600;
  223.         }
  224. }

  225. void zmove()        //向左平移
  226. {
  227. //調整四腳姿勢
  228.         delayms(250);
  229.         t_up0 = 1500;
  230.         t_up1 = 1500;
  231.   t_up2 = 1500;
  232.   t_up3 = 1500;
  233.   t_up4 = 1500;
  234.   t_up5 = 1500;
  235.   t_up6 = 2000;
  236.   t_up7 = 1500;
  237.   t_up8 = 1500;
  238.   t_up9 = 1100;
  239.   t_up10 = 1500;
  240.   t_up11 = 1600;
  241.         while(direc == 6)
  242.         {
  243. //左邊起身
  244.                 delayms(250);
  245.                 t_up8 = 1000;
  246.                 delayms(50);
  247.                 t_up7 = 1200;
  248.                 delayms(50);
  249.                 t_up11 = 2100;
  250.                 delayms(50);
  251.                 t_up10 = 1800;       
  252. //右邊起身
  253.                 delayms(250);
  254.                 t_up1 = 1800;
  255.                 t_up4 = 1200;
  256.                 delayms(50);
  257. //左邊還原
  258.                 t_up7 = 1500;
  259.                 t_up10 = 1500;
  260.                 delayms(50);
  261.                 t_up8 = 1500;
  262.                 t_up11 = 1600;
  263.                 t_up2 = 1800;
  264.                 t_up5 = 1200;
  265.                 delayms(100);
  266. //右邊還原       
  267.                 t_up1 = 1500;
  268.                 t_up4 = 1500;
  269.                 delayms(50);
  270.                 t_up2 = 1500;
  271.                 t_up5 = 1500;
  272.         }
  273. }

  274. void right()         //右轉
  275. {
  276. //調整四腳姿勢
  277.         delayms(250);
  278.         t_up0 = 1500;
  279.         t_up1 = 1500;
  280.   t_up2 = 1500;
  281.   t_up3 = 1500;
  282.   t_up4 = 1500;
  283.   t_up5 = 1500;
  284.   t_up6 = 1500;
  285.   t_up7 = 1500;
  286.   t_up8 = 1500;
  287.   t_up9 = 1500;
  288.   t_up10 = 1500;
  289.   t_up11 = 1600;
  290.        
  291.         delayms(250);
  292.         t_up1 = 1200;
  293.         delayms(125);
  294.         t_up0 = 1900;
  295.         delayms(100);
  296.         t_up1 = 1500;
  297.         while(direc == 5)
  298.         {
  299.                 delayms(200);
  300.                 t_up1 = 1700;
  301.                 delayms(50);
  302.                 t_up2 = 1700;
  303.                 delayms(200);
  304.                 t_up3 = 1100;
  305.                 delayms(100);
  306.                 t_up2 = 1500;
  307.                 delayms(50);
  308.                 t_up1 = 1500;
  309.                 delayms(200);
  310.                 t_up4 = 1400;
  311.                 delayms(50);
  312.                 t_up5 = 1400;
  313.                 delayms(100);
  314.                 t_up0 = 1900;
  315.                 delayms(100);
  316.                 t_up9 = 1100;
  317.                 delayms(100);
  318.                 t_up6 = 1900;
  319.                 delayms(200);
  320.                 t_up5 = 1500;
  321.                 delayms(50);
  322.                 t_up4 = 1500;
  323.                 delayms(200);
  324.                 t_up1 = 1700;
  325.                 delayms(50);
  326.                 t_up2 = 1700;
  327.                 delayms(200);
  328.                 t_up6 = 1500;
  329.                 delayms(200);
  330.                 t_up2 = 1500;
  331.                 delayms(50);
  332.                 t_up1 = 1500;
  333.                 delayms(200);
  334.                 t_up10 = 1600;
  335.                 delayms(100);
  336.                 t_up9 = 1500;
  337.                 delayms(100);
  338.                 t_up10 = 1500;
  339.                 delayms(200);
  340.                 t_up3 = 1500;
  341.         }
  342. }
  343. void left()        //左轉
  344. {
  345. //調整四腳姿勢
  346.         delayms(250);
  347.         t_up0 = 1500;
  348.         t_up1 = 1500;
  349.   t_up2 = 1500;
  350.   t_up3 = 1500;
  351.   t_up4 = 1500;
  352.   t_up5 = 1500;
  353.   t_up6 = 1500;
  354.   t_up7 = 1500;
  355.   t_up8 = 1500;
  356.   t_up9 = 1500;
  357.   t_up10 = 1500;
  358.   t_up11 = 1600;
  359.        
  360.         delayms(250);
  361.         t_up1 = 1200;
  362.         delayms(125);
  363.         t_up0 = 1900;
  364.         delayms(100);
  365.         t_up1 = 1500;
  366.         delayms(200);
  367.         t_up3 = 1000;
  368.         while(direc == 4)
  369.         {
  370.                 delayms(200);
  371.                 t_up1 = 1700;
  372.                 delayms(50);
  373.                 t_up2 = 1700;
  374.                 delayms(200);
  375.                 t_up6 = 2000;  // 1900
  376.                 delayms(200);
  377.                 t_up3 = 1500;
  378.                 delayms(200);
  379.                 t_up9 = 1100;
  380.                 delayms(50);
  381.                 t_up2 = 1500;
  382.                 delayms(200);
  383.                 t_up1 = 1500;
  384.                 delayms(200);
  385.                 t_up6 = 1500;
  386.                 delayms(200);
  387.                 t_up3 = 1100;
  388.                 delayms(200);
  389.                 t_up11 = 1400;
  390.                 delayms(50);
  391.                 t_up9 = 1500;
  392.                 delayms(50);
  393.                 t_up11 = 1600;
  394.         }
  395. }
復制代碼

所有資料51hei提供下載:
避障機器人.rar (63.17 KB, 下載次數: 134)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:610719 發表于 2019-11-1 16:38 | 顯示全部樓層
提問,程序中利用定時器1控制PWM占空比時間,但是樓主的程序中,定時器1在定時器1中斷中,這樣做的話,當中斷中的定時器1溢出時,會不會再次進入定時器中斷1,陷入死循環
回復

使用道具 舉報

ID:623518 發表于 2019-10-15 23:59 來自手機 | 顯示全部樓層
厲害厲害
回復

使用道具 舉報

ID:516644 發表于 2020-2-29 19:58 | 顯示全部樓層
1206246381 發表于 2019-11-1 16:38
提問,程序中利用定時器1控制PWM占空比時間,但是樓主的程序中,定時器1在定時器1中斷中,這樣做的話,當中 ...

在中斷里,只是改變了PWM的輸出值,沒有死循環
回復

使用道具 舉報

ID:203076 發表于 2020-3-26 16:46 | 顯示全部樓層
請問樓主 還有外置電路嗎?
回復

使用道具 舉報

ID:516644 發表于 2020-4-5 22:26 | 顯示全部樓層
qihemu 發表于 2020-3-26 16:46
請問樓主 還有外置電路嗎?

只有最小系統和降壓電路
回復

使用道具 舉報

ID:723293 發表于 2020-4-6 11:45 | 顯示全部樓層
學習了。。
回復

使用道具 舉報

ID:216527 發表于 2020-4-24 11:03 | 顯示全部樓層
這個不錯,正好要做一個玩一下,謝謝!
回復

使用道具 舉報

ID:410464 發表于 2020-4-28 09:39 | 顯示全部樓層
這個程序怎么這么熟悉呢?
回復

使用道具 舉報

ID:1003334 發表于 2022-4-20 20:03 | 顯示全部樓層
樓主,問一下舵機是不是需要外加電路,我之前做的一個小車沒有加電路然后操控舵機會導致藍牙斷開
回復

使用道具 舉報

ID:1077953 發表于 2023-5-16 22:01 | 顯示全部樓層
有雙足機器人走路都的源程序嘛,求大佬
回復

使用道具 舉報

ID:884711 發表于 2024-5-5 09:04 | 顯示全部樓層
路過學習,謝謝分享!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美精品欧美精品系列 | 欧美一区二区三区 | 成人激情视频免费在线观看 | 亚洲精品一区二区三区中文字幕 | 亚洲啊v | 在线观看视频一区 | 日本久久www成人免 成人久久久久 | 一区二区三区免费 | av大片在线观看 | 欧美成人a∨高清免费观看 老司机午夜性大片 | 久久综合av| 三级在线视频 | 国产91丝袜在线熟 | 99国产精品99久久久久久 | 亚洲一二三在线 | av中文字幕在线观看 | 久久国产精品久久久久久久久久 | 日韩在线观看中文字幕 | 精品成人在线观看 | 蜜桃视频一区二区三区 | 国产精品久久久久久影视 | 日本精品视频一区二区 | 欧美色人| 日韩精品 电影一区 亚洲 | 国产美女在线免费观看 | 免费成人毛片 | 欧美精品 在线观看 | 一区二区成人在线 | 国产视频第一页 | 国产日产欧产精品精品推荐蛮挑 | 色婷婷av久久久久久久 | 日日夜夜草 | 日韩一区二区三区在线看 | 亚洲中午字幕 | 精品国产乱码久久久久久果冻传媒 | 成人精品一区二区三区中文字幕 | 综合久久综合久久 | 亚洲精品福利视频 | 欧美国产日韩在线观看 | 日本小电影在线 | 日韩欧美在线播放 |