先发代码再进行解释吧

#include <Wire.h> // Include the I2C library (required)
#include "QGPMaker_IICSensorbar.h"
#include "QGPMaker_MotorShield.h"
// Create the motor shield object with the default I2C address
QGPMaker_MotorShield AFMS = QGPMaker_MotorShield(); // Select which 'port' M1, M2, M3 or M4. In this case, M3
QGPMaker_DCMotor *myMotor3 = AFMS.getMotor(3);// 前左轮
QGPMaker_DCMotor *myMotor4= AFMS.getMotor(4);// 后左
QGPMaker_DCMotor *myMotor2= AFMS.getMotor(2);// 后右
QGPMaker_DCMotor *myMotor1 = AFMS.getMotor(1);// 前右
// IICSensorBar I2C address :
const byte IIC_ADDRESS = 0x3F;
SensorBar io; // Pin definition:
const byte INPUT_PIN_S0 = 0; // S0最左边的传感
const byte INPUT_PIN_S1 = 1;
const byte INPUT_PIN_S2 = 2;
const byte INPUT_PIN_S3 = 3;
const byte INPUT_PIN_S4 = 4; // S4void setup()
{Serial.begin(9600);AFMS.begin(); // Call io.begin(<address>) to initialize. If it// successfully communicates, it'll return 1.if (!io.begin(IIC_ADDRESS)){Serial.println("Failed to communicate.");while (1) ;}// use io.pinMode(<pin>, <mode>) to set input pins as either // INPUT or INPUT_PULLUPio.pinMode(INPUT_PIN_S0, INPUT);io.pinMode(INPUT_PIN_S1, INPUT);io.pinMode(INPUT_PIN_S2, INPUT);io.pinMode(INPUT_PIN_S3, INPUT);io.pinMode(INPUT_PIN_S4, INPUT);
}void loop()
{
int A=io.digitalRead(INPUT_PIN_S0);
int B=io.digitalRead(INPUT_PIN_S1);
int C=io.digitalRead(INPUT_PIN_S2);
int D=io.digitalRead(INPUT_PIN_S3);
int E=io.digitalRead(INPUT_PIN_S4);
if(!C)// 直行
{myMotor1->run(BACKWARD);myMotor2->run(BACKWARD);myMotor3->run(BACKWARD);myMotor4->run(BACKWARD);myMotor1->setSpeed(155);  myMotor2->setSpeed(155); myMotor3->setSpeed(155);myMotor4->setSpeed(155);
}if(!E)// 左转{ myMotor1->run(BRAKE);myMotor2->run(BRAKE);myMotor3->run(BRAKE);myMotor4->run(BRAKE);myMotor2->run(BACKWARD);myMotor1->run(BACKWARD);myMotor2->setSpeed(170);  myMotor1->setSpeed(170); }if(!D)// 左转{ myMotor1->run(BRAKE);myMotor2->run(BRAKE);myMotor3->run(BRAKE);myMotor4->run(BRAKE);myMotor2->run(BACKWARD);myMotor1->run(BACKWARD);myMotor2->setSpeed(160);  myMotor1->setSpeed(160); }if(!A)// 右转{  myMotor1->run(BRAKE);myMotor2->run(BRAKE);myMotor3->run(BRAKE);myMotor4->run(BRAKE);myMotor4->run(BACKWARD);myMotor3->run(BACKWARD);myMotor4->setSpeed(170);  myMotor3->setSpeed(170); }if(!B)// 右转{  myMotor1->run(BRAKE);myMotor2->run(BRAKE);myMotor3->run(BRAKE);myMotor4->run(BRAKE);myMotor4->run(BACKWARD);myMotor3->run(BACKWARD);myMotor4->setSpeed(160);  myMotor3->setSpeed(160); }}

博主用的巡线传感器是简单点说就是有五个传感部位,每个传感部位检测到下面黑线的时候显示0(可以通过io.digitalRead来读取传感器)然后根据检测到黑线的传感器位置可以进行轮胎的调整来进行转弯,这个地方的轮胎速度需要各位进行测试来确定最合适的(不要盲目搬用)然后写一下小车如何通过控制轮胎来控制转弯

这里解释一下哈:主要是博主插上电机后由于位置插反了所以是用的BACKWORD表示前进 不要被博主误导了。 还有就是经过测试博主发现的先停后启动巡线的效果比较好 所以博主也采用了BRAKE函数先停 这个的实战效果确实比较好的 很好的避免了小车的抽搐问题

基于arduino下的巡线小车相关推荐

  1. 基于STC89C52RC模块的巡线小车

    基于STC89C52RC模块的巡线小车 在STC89C52RC的基础上使用电机驱动使小车完成巡线,停站,避障,掉头等多功能智能小车 所需头文件: #include <reg52.h> #i ...

  2. 基于arduino的自动巡轨小车教程(一)电机篇

    电机的驱动 在完成基本车体结构的搭建后,首先完成电机部分工作. 本教程使用arduino和LM298驱动模块驱动电机 具体连线如下: (图片来源: 凌顺实验室) 代码如下: 接线与代码之间引脚的定义不 ...

  3. 巡线小车学习笔记(arduino 四路循迹)

    巡线小车代码学习笔记 红外布局原理 中间两路巡线一直在黑线上,小车会直行,当任意一个出来,小车会自动纠正.如果最外面的检测到黑线.则小车以更大速度纠正到黑线上去.在算法上,优先处理锐角,直角等外围传感 ...

  4. Arduino案例实操 -- 智能巡防小车(三)图形化巡线小车编程

    巡防小车的巡线功能同时可以用图形化编程软件来实现.博主这里用的图形化编程软件是KRobot. 三.图形化巡线小车编程 3.1 编程环境配置 3.1.1 下载编程软件 3.1.2 安装编程软件 3.2 ...

  5. 基于STM32F103智能巡线小车

    ​ 项目描述: 巡线小车是我作为新手入手的第一个项目,基本巡线功能是使用红外传感器循迹模块判断黑线的路径来确定转向方向,同时控制单片机配置PWM占空比波控制小车前进的L298N电机模块,实现前后退,左 ...

  6. Arduino案例实操 -- 智能巡防小车(三)Arduino IDE巡线小车编程

    三.Arduino IDE巡线小车编程 3.1 Arduino开发环境 下载免安装ZIP包 下载IDE安装包 3.2 Arduino IDE 3.3 Blink项目实例 打开内置案例 进行程序上传 3 ...

  7. 基于arduino单片机智能避障小车

    基于arduino单片机智能避障小车 思路简介 本文简要介绍了基于arduino单片机智能小车可以通过手机端蓝牙助手对其进行遥控操作'可以切换手动操作和自动避障两个模式,避障基于蝙蝠超声波测距的原理, ...

  8. stm32 电磁巡线小车

    stm32 电磁巡线小车 一 可实现功能 使用陀螺仪,根据俯仰角变化在下坡后停车 . 通过三路电感,实现小车巡线,可循 s弯 ,d形弯,8字弯,环岛. 可在不同的地方巡线,有学习能力. 红外光电开关判 ...

  9. OpenMV:14巡线小车

    文章目录 追小球的小车 巡线小车 这个例子展示了在OpenMV Cam上使用get_regression()方法获得ROI的线性回归.使用这种方法,可以轻松让机器人跟踪所有指向相同大致方向的线. 本例 ...

最新文章

  1. 解决plsql中文显示问号(???)问题
  2. 网页制作基础:各种元素解析
  3. 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序
  4. 深入理解 Session 与 Cookie
  5. pytorch中resnet_ResNet代码详解
  6. 当你看完这篇朴素贝叶斯(NB)算法后,是否会有怦然心动的感觉
  7. asp.net 强制性单一登陆现实
  8. OAuth2.0学习(2-1)Spring Security OAuth2.0 开发指南
  9. 18f458中断入口C语言_操作系统开发之——中断
  10. 一个flash网页图片播放器
  11. 牛客网-这是一个沙雕题
  12. Asp.Net 2.0 发布问题(转)
  13. 垂直行业大数据分层架构图
  14. 国产龙芯笔记本(on 龙芯2F)的使用体验
  15. 应用统计学方差分析之单因素方差分析原理解析(含Python代码)
  16. 安科瑞电气系统Acrel-2000在数据中心机房的应用及产品选型
  17. java中负数_Java中负数以及类型转换问题
  18. Java通过JNI调用C的一个小demo
  19. c语言100列作业,C语言经典例题100例——C语言练习实例72解答(链表)
  20. 心理学综述类期刊介绍|《New Ideas In Psychology》

热门文章

  1. 干货分享:Vova跨境电商平台的问题及优势分析
  2. python 打卡程序_python获取微信企业号打卡数据并生成windows计划任务
  3. 【LeetCode】摘樱桃 [H](记忆化搜索)
  4. uniapp配置QQ客服无法跳转到QQ页面问题
  5. 维修电工电气控制及仪表照明实训装置
  6. 使用yum安装wget时报出:Loaded plugins: fastestmirror No such command: instal. Please use /usr/bin/yum --help
  7. 善用Wink,将电脑操作录屏为flash
  8. 开发人员经常犯一些低级错误如何解决
  9. 2020年山东事业单位都考什么?(山东事业编)
  10. PS遇到不能初始化Photoshop,因为首选项文件无效的(它已被删除)