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

QQ登錄

只需一步,快速開始

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

基于arduino單片機(jī)的尋跡小車程序源碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:245683 發(fā)表于 2017-11-3 14:20 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
基于arduino單片機(jī)的尋跡小車程序源碼

所有資料51hei提供下載:
XunJin_c3cc3.zip (921 Bytes, 下載次數(shù): 38)


arduino源程序如下:
  1. //R是右(right),L是左(left)小車對(duì)著自己看時(shí)分的左右
  2. int IN1=10;
  3. int IN2=11;//左輪
  4. int IN3=12;
  5. int IN4=13;//右輪
  6. const int SensorLeft1=A3;//左感測(cè)器輸入腳
  7. const int SensorLeft2=A4;
  8. const int SensorRight1=A6;//右感測(cè)器輸入腳
  9. const int SensorRight2=A5;
  10. const int ENA=6;
  11. const int ENB=5;
  12. int SL1;
  13. int SL2;//左感測(cè)器狀態(tài)
  14. int SR1;
  15. int SR2;//右感測(cè)器狀態(tài)
  16. void setup()
  17. {
  18. Serial.begin(9600);
  19. pinMode(IN1,OUTPUT);
  20. pinMode(IN2,OUTPUT);
  21. pinMode(IN3,OUTPUT);
  22. pinMode(IN4,OUTPUT);
  23. pinMode(SensorLeft1,INPUT);
  24. pinMode(SensorLeft2,INPUT);
  25. pinMode(SensorRight1,INPUT);
  26. pinMode(SensorRight2,INPUT);
  27. }
  28. void loop()
  29. {
  30. SL1=digitalRead(SensorLeft1);
  31. SL2=digitalRead(SensorLeft2);
  32. SR1=digitalRead(SensorRight1);
  33. SR2=digitalRead(SensorRight2);
  34. if (SL1==LOW &&SL2==LOW&& SR1==LOW&& SR2==LOW)//前進(jìn)
  35. {
  36. analogWrite(ENA,150);
  37. analogWrite(ENB,150);
  38. digitalWrite(IN1,HIGH);//IN1左電機(jī)高電平正轉(zhuǎn)
  39. digitalWrite(IN2,LOW);//IN2左電機(jī)高電平反轉(zhuǎn)
  40. digitalWrite(IN3,HIGH);//IN3右電機(jī)高電平反轉(zhuǎn)
  41. digitalWrite(IN4,LOW);//IN4右電機(jī)高電平正轉(zhuǎn)
  42. }
  43. else // R是右(right),L是左(left)小車對(duì)著自己看時(shí)分的左右
  44. if (SL1==HIGH&&SL2==HIGH&&SR1==LOW&&SR2==LOW)//左白右黑,快速左轉(zhuǎn)
  45. {
  46. delay(1);
  47. analogWrite(ENA,150);
  48. analogWrite(ENB,150);
  49. digitalWrite(IN1,HIGH);//IN3左電機(jī)高電平正轉(zhuǎn)
  50. digitalWrite(IN2,LOW);//IN4左電機(jī)高電平反轉(zhuǎn)
  51. digitalWrite(IN3,LOW);//IN1右電機(jī)高電平反轉(zhuǎn)
  52. digitalWrite(IN4,HIGH);//IN2右電機(jī)高電平正轉(zhuǎn)
  53. }
  54. else
  55. if (SL1==LOW&SL2 == LOW&SR1 == HIGH&SR2==HIGH) //左黑右白,快速右轉(zhuǎn)
  56. {delay(1);
  57. analogWrite(ENA,150);
  58. analogWrite(ENB,150);
  59. digitalWrite(IN1,LOW);//IN3左電機(jī)高電平正轉(zhuǎn)
  60. digitalWrite(IN2,HIGH);//IN4左電機(jī)高電平反轉(zhuǎn)
  61. digitalWrite(IN3,HIGH);//IN1右電機(jī)高電平反轉(zhuǎn)
  62. digitalWrite(IN4,LOW);//IN2右電機(jī)高電平正轉(zhuǎn)
  63. }
  64. else
  65. if (SL1==HIGH&&SL2==LOW&&SR1==LOW&&SR2==LOW)//左白右黑,慢速左轉(zhuǎn)
  66. {
  67. delay(1);
  68. analogWrite(ENA,100);
  69. analogWrite(ENB,100);
  70. digitalWrite(IN1,HIGH);//IN3左電機(jī)高電平正轉(zhuǎn)
  71. digitalWrite(IN2,LOW);//IN4左電機(jī)高電平反轉(zhuǎn)
  72. digitalWrite(IN3,LOW);//IN1右電機(jī)高電平反轉(zhuǎn)
  73. digitalWrite(IN4,HIGH);//IN2右電機(jī)高電平正轉(zhuǎn)
  74. }
  75. else
  76. if (SL1==LOW&SL2 == LOW&SR1 == LOW&SR2==HIGH) //左黑右白,慢速右轉(zhuǎn)
  77. {delay(1);
  78. analogWrite(ENA,100);
  79. analogWrite(ENB,100);
  80. digitalWrite(IN1,LOW);//IN3左電機(jī)高電平正轉(zhuǎn)
  81. digitalWrite(IN2,HIGH);//IN4左電機(jī)高電平反轉(zhuǎn)
  82. digitalWrite(IN3,HIGH);//IN1右電機(jī)高電平反轉(zhuǎn)
  83. digitalWrite(IN4,LOW);//IN2右電機(jī)高電平正轉(zhuǎn)
  84. }
  85. else//都是白色, 停止
  86. {
  87. analogWrite(ENA,0);
  88. analogWrite(ENB,0);
  89. digitalWrite(IN1,LOW);
  90. digitalWrite(IN2,LOW);
  91. digitalWrite(IN3,LOW);
  92. digitalWrite(IN4,LOW);
  93. }}
復(fù)制代碼




分享到:  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ù) 返回頂部 返回列表