找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8685|回复: 0
打印 上一主题 下一主题
收起左侧

基于arduino单片机的寻迹小车程序源码

[复制链接]
跳转到指定楼层
楼主
ID:245683 发表于 2017-11-3 14:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
基于arduino单片机的寻迹小车程序源码

所有资料51hei提供下载:
XunJin_c3cc3.zip (921 Bytes, 下载次数: 38)


arduino源程序如下:
  1. //R是右(right),L是左(left)小车对着自己看时分的左右
  2. int IN1=10;
  3. int IN2=11;//左轮
  4. int IN3=12;
  5. int IN4=13;//右轮
  6. const int SensorLeft1=A3;//左感測器輸入腳
  7. const int SensorLeft2=A4;
  8. const int SensorRight1=A6;//右感測器輸入腳
  9. const int SensorRight2=A5;
  10. const int ENA=6;
  11. const int ENB=5;
  12. int SL1;
  13. int SL2;//左感測器狀態
  14. int SR1;
  15. int SR2;//右感測器狀態
  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)//前进
  35. {
  36. analogWrite(ENA,150);
  37. analogWrite(ENB,150);
  38. digitalWrite(IN1,HIGH);//IN1左电机高电平正转
  39. digitalWrite(IN2,LOW);//IN2左电机高电平反转
  40. digitalWrite(IN3,HIGH);//IN3右电机高电平反转
  41. digitalWrite(IN4,LOW);//IN4右电机高电平正转
  42. }
  43. else // R是右(right),L是左(left)小车对着自己看时分的左右
  44. if (SL1==HIGH&&SL2==HIGH&&SR1==LOW&&SR2==LOW)//左白右黑,快速左转
  45. {
  46. delay(1);
  47. analogWrite(ENA,150);
  48. analogWrite(ENB,150);
  49. digitalWrite(IN1,HIGH);//IN3左电机高电平正转
  50. digitalWrite(IN2,LOW);//IN4左电机高电平反转
  51. digitalWrite(IN3,LOW);//IN1右电机高电平反转
  52. digitalWrite(IN4,HIGH);//IN2右电机高电平正转
  53. }
  54. else
  55. if (SL1==LOW&SL2 == LOW&SR1 == HIGH&SR2==HIGH) //左黑右白,快速右转
  56. {delay(1);
  57. analogWrite(ENA,150);
  58. analogWrite(ENB,150);
  59. digitalWrite(IN1,LOW);//IN3左电机高电平正转
  60. digitalWrite(IN2,HIGH);//IN4左电机高电平反转
  61. digitalWrite(IN3,HIGH);//IN1右电机高电平反转
  62. digitalWrite(IN4,LOW);//IN2右电机高电平正转
  63. }
  64. else
  65. if (SL1==HIGH&&SL2==LOW&&SR1==LOW&&SR2==LOW)//左白右黑,慢速左转
  66. {
  67. delay(1);
  68. analogWrite(ENA,100);
  69. analogWrite(ENB,100);
  70. digitalWrite(IN1,HIGH);//IN3左电机高电平正转
  71. digitalWrite(IN2,LOW);//IN4左电机高电平反转
  72. digitalWrite(IN3,LOW);//IN1右电机高电平反转
  73. digitalWrite(IN4,HIGH);//IN2右电机高电平正转
  74. }
  75. else
  76. if (SL1==LOW&SL2 == LOW&SR1 == LOW&SR2==HIGH) //左黑右白,慢速右转
  77. {delay(1);
  78. analogWrite(ENA,100);
  79. analogWrite(ENB,100);
  80. digitalWrite(IN1,LOW);//IN3左电机高电平正转
  81. digitalWrite(IN2,HIGH);//IN4左电机高电平反转
  82. digitalWrite(IN3,HIGH);//IN1右电机高电平反转
  83. digitalWrite(IN4,LOW);//IN2右电机高电平正转
  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. }}
复制代码




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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