找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5259|回复: 3
收起左侧

三个对管智能循迹小车

[复制链接]
ID:84299 发表于 2015-11-18 21:17 | 显示全部楼层 |阅读模式
本次上传的是,三个对管来检测黑线,可以实现小车循迹,在十字交叉路口处可以择道而行,也就是小车在田字形黑线地图上可以根据自己设定的路线跑,在十字路口处自己选择前进,左转还是右转。
IMG_20151118_210019.jpg

三个对管的安装装位置

三个对管的安装装位置

三对管循迹.rar

33.25 KB, 下载次数: 48, 下载积分: 黑币 -5

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的积分奖励!

查看全部评分

回复

使用道具 举报

ID:236952 发表于 2017-10-14 00:50 | 显示全部楼层
这个真的很有用啊
回复

使用道具 举报

ID:1 发表于 2017-10-14 01:03 | 显示全部楼层
楼主程序的主要部分:
  1. #ifndef _DEF_H__
  2. #define _DEF_H__
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. uint pwm_r_g=0,pwm_r_b=0,pwm_l_g=0,pwm_l_b=0;

  6. bit flag=0;
  7. sbit R=P2^0;
  8. sbit L=P2^1;
  9. sbit Z=P2^6;
  10. sbit D0=P2^2;
  11. sbit D1=P2^3;
  12. sbit D2=P2^4;
  13. sbit D3=P2^5;
  14. void init()
  15.   {
  16.         TMOD=0X01;
  17.     TH0=(65536-1000)/256;          //1Ms定时
  18.         TL0=(65536-1000)%256;
  19.     TR0=1;
  20.     ET0=1;
  21.         EA=1;   
  22.   }
  23.   uchar lukounum()//检测路口
  24.   {
  25.           static uchar n=0;
  26.         if((R==1)&&(L==1)){ n++;flag=1;}
  27.         if(n==6){ n=0;}
  28.         return n;       
  29.   }
  30. void delayms(uint xms)
  31.         {
  32.                 uint i,j;
  33.                 for(i=xms;i>0;i--)
  34.                 for(j=110;j>0;j--);
  35.         }
  36. //void stop()     //停止
  37. //{
  38. //        D0=0;D1=0;D2=0;D3=0;
  39. //}       
  40. void pwmleftgo(uchar x)//左轮前进调速
  41. {  
  42.         if(pwm_l_g<=x){ D2=1; }
  43.         else {D2=0;}
  44.         if(pwm_l_g>=20)
  45.            pwm_l_g=0;
  46.    }
  47.   
  48. void pwmleftback(uchar x)//左轮后退调速
  49. {
  50.     if(pwm_l_b<=x){ D3=1; }
  51.         else {D3=0;}
  52.         if(pwm_l_b>=20)
  53.            pwm_l_b=0;
  54.    }

  55. //    右电机调速         
  56.    void pwmrightgo(uchar x)//右轮前进调速
  57. {
  58.         if(pwm_r_g<=x) {D0=1;}  
  59.         else {D0=0;        }  
  60.         if(pwm_r_g>=20)
  61.            pwm_r_g=0;
  62.    }
  63.     void pwmrightback(uchar x)//右轮后退调速
  64. {
  65.     if(pwm_r_b<=x) {D1=1;}
  66.         else {D1=0;}
  67.         if(pwm_r_b>=20)
  68.            pwm_r_b=0;
  69.    }
  70.    

  71. void run(uchar y)//前进
  72. {
  73.          D1=0;D3=0;
  74.         pwmleftgo(y);                                
  75.         pwmrightgo(y);
  76. }
  77. // void rec(uchar y)   //后退                 
  78. //  {
  79. //        D0=0;
  80. //        pwmleftback(y);                                 
  81. //        D2=0;
  82. //        pwmrightback(y);                                 
  83. //  }
  84. void left(uchar y)  //左转                     
  85.   {
  86.         pwmrightgo(y);
  87.         D1=0;                                 
  88.         D2=0;
  89.         D3=0;
  90.   }
  91. void right(uchar y) //右转                        
  92.   {
  93.         D0=0;
  94.         D1=0;
  95.         pwmleftgo(y);
  96.         D3=0;
  97.        
  98.   }
  99.   void xun()
  100.   {
  101.         if((L==0)&&(R==1))                          
  102.    {
  103.            right(4);
  104.    }
  105.    if((L==1)&&(R==0))
  106.    {
  107.            left(4);
  108.    }
  109.           if((L==0)&&(R==0))                          
  110.    {
  111.             run(4);  
  112.         }
  113.   }
  114.   void lukouxuanze(uchar k)//路口选择运作方式
  115.   {
  116.           switch(k)
  117.           {
  118.                   case 0:run(4);break;
  119.                   case 1:left(4);break;
  120.                   case 2:right(4);break;
  121.                   case 3:right(4);break;
  122.                   case 4:left(4);break;
  123.                   case 5:run(4);break;
  124.           }  
  125.   }
  126.           
  127.           
  128. #endif
复制代码
回复

使用道具 举报

ID:742403 发表于 2020-5-1 17:20 | 显示全部楼层
admin 发表于 2017-10-14 01:03
楼主程序的主要部分:

这个主要部分,我在zip包里没找见啊 难顶啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表