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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1795|回復: 1
打印 上一主題 下一主題
收起左側(cè)

mega16狹窄足機器人程序

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:611223 發(fā)表于 2020-10-19 14:43 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
基于的單片機機器人狹窄足機器人實例
  1. #include "mega16.h"
  2. #include "delay.h"
  3. #include<math.h>
  4. float Now_s1=90,Now_s2=90,Now_s3=90,Now_s4=90,Now_s5=90,Now_s6=90,Now_F=0;
  5. #define uchar unsigned char
  6. #define uint unsigned int

  7. void Init(void)
  8. {
  9.     DDRA=0x00;
  10.     PORTA=0x00;
  11.     DDRB=0xff;
  12.     PORTB=0xff;
  13.     DDRC=0xff;
  14.     PORTC=0xff;
  15.     DDRD=0xff;
  16.     PORTD=0xff;
  17. }

  18. void Servo_Control(uint Angel,uchar Channel)
  19. {
  20.     if(Channel>=1&&Channel<=6)
  21.     {   
  22.         
  23.         
  24.         if(Angel<0)Angel=0;
  25.         if(Angel>180)Angel=180;                     
  26.         switch(Channel)
  27.         {
  28.             case 1: Angel=Angel*5-10; break; //40 200
  29.             case 2: Angel=Angel*5+8; break; //45 200
  30.             case 3: Angel=Angel*5+10; break; //40 203
  31.             case 4: Angel=Angel*5-2; break; //40 205
  32.             case 5: Angel=Angel*5+3; break; //40 205    //+6
  33.             case 6: Angel=Angel*4.85+30; break; //40 200   
  34.         }
  35.         Angel+=10;

  36.         if(Angel<0||Angel>980)Angel=0;
  37.         else if(Angel>950)Angel=950;
  38.          
  39.         PORTC=0x00;
  40.         PORTB=0x00;
  41.         PORTD.2=0;
  42.         delay_us(50);
  43.         Channel=7-Channel;
  44.         Channel=Channel-1;
  45.         PORTC=Channel*4+Angel/256;
  46.         PORTB=(uchar)Angel;
  47.    
  48.         delay_us(50);
  49.         PORTD.2=1;
  50.         
  51.         delay_us(100);
  52.         PORTC=0x00;
  53.         PORTB=0x00;
  54.         PORTD.2=0;
  55.     }
  56. }

  57. void ServoReset(void)
  58. {
  59.     uchar i=0;
  60.     for(i=1;i<=6;i++)
  61.     {                              
  62.         Servo_Control(90,i);
  63.     }
  64. }

  65. #define TIME_PER_STEP 5


  66. //type:0正常 1加速 2減速 3加速減速   4腳腕加速 其他減速 5腳腕減速 其他加速
  67. void Do(uchar s1,uchar s2,uchar s3,uchar s4,uchar s5,uchar s6,uint steps,int forward,uchar type)
  68. {
  69.     float Step_s1=0,Step_s2=0,Step_s3=0,Step_s4=0,Step_s5=0,Step_s6=0,Step_F=0;
  70.     uint i=0;

  71.     Step_s1=(s1-Now_s1)/steps;
  72.     Step_s2=(s2-Now_s2)/steps;
  73.     Step_s3=(s3-Now_s3)/steps;
  74.     Step_s4=(s4-Now_s4)/steps;
  75.     Step_s5=(s5-Now_s5)/steps;
  76.     Step_s6=(s6-Now_s6)/steps;
  77.     Step_F=(forward-Now_F)/steps;
  78.    
  79.     if(type==0)
  80.     {
  81.         for(i=0;i<steps;i++)
  82.         {   
  83.             Now_F+=Step_F;
  84.             Now_s1+=Step_s1;
  85.             Now_s2+=Step_s2;
  86.             Now_s3+=Step_s3;
  87.             Now_s4+=Step_s4;
  88.             Now_s5+=Step_s5;
  89.             Now_s6+=Step_s6;

  90.             Servo_Control((uchar)(Now_s1-Now_F),1);
  91.             Servo_Control((uchar)Now_s2,2);
  92.             Servo_Control((uchar)Now_s3,3);
  93.             Servo_Control((uchar)(Now_s4+Now_F),4);
  94.             Servo_Control((uchar)Now_s5,5);
  95.             Servo_Control((uchar)Now_s6,6);
  96.             delay_ms(TIME_PER_STEP);
  97.         }
  98.     }
  99.     else
  100.     if(type==1)
  101.     {
  102.         for(i=0;i<steps;i++)
  103.         {   
  104.             Step_F=((float)i/(float)steps)*((float)i/(float)steps)*(forward-Now_F)+Now_F;
  105.             Step_s1=((float)i/(float)steps)*((float)i/(float)steps)*(s1-Now_s1)+Now_s1;
  106.             Step_s2=((float)i/(float)steps)*((float)i/(float)steps)*(s2-Now_s2)+Now_s2;
  107.             Step_s3=((float)i/(float)steps)*((float)i/(float)steps)*(s3-Now_s3)+Now_s3;
  108.             Step_s4=((float)i/(float)steps)*((float)i/(float)steps)*(s4-Now_s4)+Now_s4;
  109.             Step_s5=((float)i/(float)steps)*((float)i/(float)steps)*(s5-Now_s5)+Now_s5;
  110.             Step_s6=((float)i/(float)steps)*((float)i/(float)steps)*(s6-Now_s6)+Now_s6;
  111.             
  112.             Servo_Control((uchar)Step_s1-Step_F,1);
  113.             Servo_Control((uchar)Step_s2,2);
  114.             Servo_Control((uchar)Step_s3,3);
  115.             Servo_Control((uchar)Step_s4+Step_F,4);
  116.             Servo_Control((uchar)Step_s5,5);
  117.             Servo_Control((uchar)Step_s6,6);
  118.             delay_ms(TIME_PER_STEP);
  119.         }   
  120.     }
  121.     else
  122.     if(type==2)
  123.     {
  124.         for(i=0;i<steps;i++)
  125.         {   
  126.             Step_F=(1.0-(1.0*((float)i/(float)steps-1.0)*((float)i/(float)steps-1.0)))*(forward-Now_F)+Now_F;
  127.             Step_s1=(1.0-(1.0*((float)i/(float)steps-1.0)*((float)i/(float)steps-1.0)))*(s1-Now_s1)+Now_s1;
  128.             Step_s2=(1.0-(1.0*((float)i/(float)steps-1.0)*((float)i/(float)steps-1.0)))*(s2-Now_s2)+Now_s2;
  129. ……………………

  130. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼


狹窄足機器人.zip

114.58 KB, 下載次數(shù): 2, 下載積分: 黑幣 -5

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:1 發(fā)表于 2020-10-19 20:53 | 只看該作者
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復

使用道具 舉報

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

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品久久久久久久久久久久 | 一区影院 | 精品视频一区二区 | 久久的色 | 久久看精品 | 精品久久免费 | 国产精品久久99 | 久久精品a级毛片 | 国产亚洲精品精品国产亚洲综合 | www.久久艹| 国产精品a久久久久 | 看黄在线| 成人看片在线观看 | 国产精品久久久久久久免费观看 | 亚洲成人一区二区 | 日本一区不卡 | 亚洲精品电影网在线观看 | 久久精品亚洲精品 | 免费一区二区 | 久久成人精品视频 | 成人av看片 | 狠狠综合久久av一区二区老牛 | 欧美一区二区在线播放 | 奇米视频777 | 日韩毛片在线视频 | 国产网站在线播放 | 国产在线精品一区二区 | 成人国产网站 | 亚洲视频三 | 午夜国产精品视频 | xxx国产精品视频 | 欧美a区| 好好的日在线视频 | 91视频在线 | 亚洲欧美一区二区三区国产精品 | 最近中文字幕第一页 | 免费国产视频在线观看 | 国产精品美女久久久久久不卡 | 伊人99 | 精品久久电影 | 精品久久香蕉国产线看观看亚洲 |