找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于arduino實(shí)現(xiàn)的玩具掃雷避障小車程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1010019 發(fā)表于 2022-3-12 23:02 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
  1. /*==================================================================
  2. (1)玩具掃雷避障小車實(shí)物一個(gè)
  3. (2)研究成果介紹書一份
  4. (3)小車能夠行進(jìn),在行進(jìn)的過程中能夠檢測前方金屬物品(即為雷)并提示
  5. (4)小車可以調(diào)整行進(jìn)的速度
  6. (5)小車行進(jìn)的過程中能夠規(guī)避前方的障礙
  7. (6)小車可以循跡黑線
  8.      -------------------------------------------------------------
  9.      或者外部遙控,用lcd1602顯示小車行進(jìn)中排雷的總數(shù)
  10.      -------------------------------------------------------------
  11. ===================================================================*/
  12. int UltrasonicRanging(int pinnum1,int pinnum2)//超聲波測距
  13. {
  14.   int readdate;
  15.   pinMode(pinnum1,OUTPUT);
  16.   pinMode(pinnum2,INPUT);
  17.   digitalWrite(pinnum1,LOW);
  18.   delayMicroseconds(2);
  19.   digitalWrite(pinnum1,HIGH);
  20.   delayMicroseconds(5);
  21.   digitalWrite(pinnum1,LOW);
  22.   readdate=pulseIn(pinnum2,HIGH);
  23.   //一個(gè)簡單的測量脈沖寬度的函數(shù),默認(rèn)單位是us
  24.   readdate/=59;
  25.   return readdate;
  26. }
  27. void voice()
  28. {
  29.    for(int i=200;i<=800;i++)               //用循環(huán)的方式將頻率從200HZ 增加到800HZ
  30.   {
  31.       pinMode(4,OUTPUT);
  32.       tone(4,i);                            //在四號端口輸出頻率
  33.       delay(3);                             
  34.    }
  35.    delay(1000);                          
  36.    for(int i=800;i>=200;i--)
  37.    {
  38.      pinMode(4,OUTPUT);
  39.      tone(4,i);
  40.      delay(6);
  41.     }
  42. }
  43. boolean InfraredRanging(int pinNumber)//紅外測距
  44. {
  45.    pinMode(pinNumber, INPUT);
  46.    return digitalRead(pinNumber);
  47. }
  48. boolean MetalDetection(int pinNumber)//金屬探測
  49. {
  50.    pinMode(pinNumber, INPUT);
  51.    return digitalRead(pinNumber);
  52. }
  53. void motor(char pin,char pwmpin,char state,int val)
  54. //pin、pwnpin為端口、state為該輪子的狀態(tài)、val調(diào)節(jié)速度
  55. {
  56.   pinMode(pin,OUTPUT);
  57.   if (state==1)//高
  58.   {
  59.     analogWrite(pwmpin,val);
  60.     digitalWrite(pin,1);
  61.   }
  62.   else if (state==2)//低
  63.   {
  64.     analogWrite(pwmpin,val);
  65.     digitalWrite(pin,0);
  66.   }
  67.    else if (state==0)//停
  68.   {
  69.     analogWrite(pwmpin,0);
  70.     digitalWrite(pin,0);
  71.   }
  72. }
  73. void runforward(int i)//前進(jìn)
  74. {
  75.   motor(4,5,1,i);
  76.   motor(7,6,1,i);
  77. }
  78. void runback(int j)//后退
  79. {
  80.   motor(4,5,2,j);
  81.   motor(7,6,2,j);
  82. }
  83. void turnL(int m) //左轉(zhuǎn)
  84. {
  85.   motor(4,5,1,m);
  86.   motor(7,6,0,m);
  87. }
  88. void turnR(int n)//右轉(zhuǎn)
  89. {
  90.   motor(4,5,0,n);
  91.   motor(7,6,1,n);
  92. }
  93. void stop_z()//停
  94. {
  95.   motor(4,5,0,0);
  96.   motor(7,6,0,0);
  97. }
  98. void setup() {

  99. }
  100. void run_black()//走黑線
  101. {
  102.   int num=0;//掃雷數(shù)量
  103.   bool n1,n2;  //1 左;2  右
  104.   n1=digitalRead(9);
  105.   n2=digitalRead(10);
  106.   if (MetalDetection(13))
  107.   {
  108.      voice();
  109.      num++;
  110.   }
  111.   if (UltrasonicRanging(4,5))find_obstacle();
  112.   if(n1==1&&n2==1) while(1) stop_z();//終點(diǎn)
  113.   if (n1==1) turnR(120);
  114.     else if (n2==1) turnL(120);
  115.       else runforward(120);
  116. }
  117. void find_obstacle()//發(fā)現(xiàn)障礙物
  118. {
  119.     runback(120);
  120.     delay(2000);
  121.     turnL(120);
  122.     delay(1000);
  123.     runforward(120);
  124.     delay(3000);
  125.     turnR(120);
  126.     delay(1000);
  127. }
  128. void loop()
  129. {
  130.    while(1) run_black();
  131. }
復(fù)制代碼
1、項(xiàng)目的研究內(nèi)容
  
利用各種傳感器實(shí)現(xiàn)機(jī)器對金屬的感應(yīng),從而能夠有效的提醒人們能夠快速尋找并識別雷及類似物,并能有效的穿過區(qū)域。
  
2、預(yù)計(jì)突破或解決哪些技術(shù)難題
  
(1)傳感器如何配合運(yùn)轉(zhuǎn)使得機(jī)器掃雷車有效運(yùn)行。
  
(2)掃雷車使用什么結(jié)構(gòu)能使掃雷車有效靈活改變方向。
  
(3)加固車身結(jié)構(gòu),當(dāng)?shù)匦纹閸鐣r(shí),運(yùn)動的掃雷車如何穩(wěn)定車身結(jié)構(gòu)以至于不會因?yàn)榕c地面撞擊而產(chǎn)生較大損壞。
  
(4)在掃雷車調(diào)試運(yùn)行中,會出現(xiàn)一些程序問題并將其如何解決,同時(shí)如何優(yōu)化程序。
  
3、研究的創(chuàng)新點(diǎn)
  
(1)利用合理地車身結(jié)構(gòu)來穩(wěn)定車身,不至于因轉(zhuǎn)向產(chǎn)生晃動。
  
(2)利用超聲波傳感器來避開障礙物,提高掃雷車的對地形的把控。
  

評分

參與人數(shù) 1黑幣 +30 收起 理由
admin + 30 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

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