找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 4746|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)巡線小車程序到正方形哪里就會(huì)停,走不到終點(diǎn),為什么?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:433808 發(fā)表于 2018-11-30 17:00 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
哪位大神可以告訴我,后邊該怎么寫(xiě),F(xiàn)在寫(xiě)的只可以巡線,到正方形哪里就會(huì)停,走不到終點(diǎn),應(yīng)該怎樣改程序啊?
這個(gè)是程序。



  1. #include<reg52.h>//單片機(jī)頭文件
  2. #define PWM1 7//小車前進(jìn)速度,1-9可調(diào)(若轉(zhuǎn)彎容易沖出,調(diào)慢即可)
  3. #define PWM2 9//小車轉(zhuǎn)向速度,1-9可調(diào)

  4. sbit zuo1=P0^3;//左電機(jī)控制端1
  5. sbit zuo2=P0^2;//左電機(jī)控制端2
  6. sbit you1=P0^1;//右電機(jī)控制端1
  7. sbit you2=P0^0;//右電機(jī)控制端2

  8. sbit z=P1^2;//左邊 光電管的信號(hào)端
  9. sbit q=P1^1;//前邊 光電管的信號(hào)端
  10. sbit y=P1^0;//右邊 光電管的信號(hào)端

  11. void delay(int z)//pwm中使用的延時(shí)函數(shù)
  12. {
  13.         int i,j;
  14.         for(i=2;i>0;i--)
  15.         for(j=z;j>0;j--);      
  16. }
  17. void qian()//前進(jìn)
  18. {
  19.         you1=0;
  20.         you2=1;
  21.         zuo1=0;
  22.         zuo2=1;
  23.         delay(PWM1);//pwm調(diào)速,若PWM1=7表示速度為全速的70%
  24.         you1=1;
  25.         you2=1;
  26.         zuo1=1;
  27.         zuo2=1;
  28.         delay(10-PWM1);        
  29. }
  30. void you()//右轉(zhuǎn)
  31. {
  32.         you1=1;
  33.         you2=1;
  34.         zuo1=0;
  35.         zuo2=1;
  36.         delay(PWM2);//pwm調(diào)速,若PWM1=9表示速度為全速的90%
  37.         you1=1;
  38.         you2=1;
  39.         zuo1=1;
  40.         zuo2=1;
  41.         delay(10-PWM2);
  42. }
  43. void zuo()//左轉(zhuǎn)
  44. {
  45.         you1=0;
  46.         you2=1;
  47.         zuo1=1;
  48.         zuo2=1;
  49.         delay(PWM2);//pwm調(diào)速,若PWM1=9表示速度為全速的90%
  50.         you1=1;
  51.         you2=1;
  52.         zuo1=1;
  53.         zuo2=1;
  54.         delay(10-PWM2);
  55. }
  56. void ting()//停止
  57. {
  58.         you1=1;
  59.         you2=1;
  60.         zuo1=1;
  61.         zuo2=1;
  62. }

  63. void main()//主函數(shù)
  64. {
  65.         while(1)//單片機(jī)不間斷監(jiān)測(cè) (是個(gè)死循環(huán))
  66.         {                                                           
  67.                 if(z==1&&y==1) qian();//前進(jìn)
  68.                 else if(z==0&&y==1)        zuo();//左邊遇到黑線時(shí),左轉(zhuǎn)      
  69.                 else if(z==1&&y==0) you();//右邊遇到黑線時(shí),右轉(zhuǎn)                       
  70.                 else if(z==0&&y==0)//左右同時(shí)遇到黑線時(shí)
  71.                 {                                               
  72.                         int i=0;                                       
  73.                         for(i=0;i<300;i++) qian();//再向前走一段
  74.                         //到終點(diǎn)不能穩(wěn)定停止,將上面300調(diào)大。                                       
  75.                         while(q==1&&z==1&&y==1)ting();//若全是1,就停止
  76.                 }
  77.                 else ting();                       
  78.         }                              
  79. }
復(fù)制代碼


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

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:86442 發(fā)表于 2018-11-30 22:16 | 只看該作者
這和你傳感器的布置距離有關(guān)系,三個(gè)點(diǎn)分別在哪里呢
回復(fù)

使用道具 舉報(bào)

板凳
ID:436876 發(fā)表于 2018-11-30 22:47 來(lái)自手機(jī) | 只看該作者
可能是全測(cè)到黑色的線了,你可以試試全感應(yīng)為黑色時(shí),人為給小車左轉(zhuǎn)或者右轉(zhuǎn)
回復(fù)

使用道具 舉報(bào)

地板
ID:413632 發(fā)表于 2018-12-1 13:25 | 只看該作者
應(yīng)該是你的正方形入口和終點(diǎn)沖突了,你應(yīng)該處理一下,如果不處理這兩個(gè)地方?jīng)_突很顯然
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表