基于arduino下的巡线小车

 先发代码再进行解释吧



#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; // S4

void 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_PULLUP
  io.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函数先停 这个的实战效果确实比较好的 很好的避免了小车的抽搐问题

### 回答1: Arduino OpenMV巡线小车是一种基于Arduino和OpenMV的智能小车,它可以通过OpenMV视觉传感器实现自动巡线功能。该小车可以通过编程实现不同的功能,如避障、跟随等。它是一种非常有趣和实用的机器人,可以用于教育、娱乐和科研等领域。 ### 回答2: Arduino OpenMV巡线小车是一种基于Arduino和OpenMV技术的巡线小车,它能够通过传感器检测黑线或白线并进行相应的操作。而OpenMV则是一种基于ARM Cortex-M7处理器的小型机器视觉设备,可以对图像进行处理,并根据处理结果完成相应的控制操作。因此,结合两种技术,可以实现更加智能化的巡线小车Arduino OpenMV巡线小车中主要使用了Arduino UNO控制板、OpenMV Cam M7视觉模块、两个直流电机及对应的轮子、巡线传感器等组件。其中,巡线传感器是用于检测黑线或白线的,当传感器检测到黑线时,左侧轮子会减速或停止,右侧轮子则会加速,使小车偏向右侧,从而沿着黑线行进。反之,当传感器检测到白线时,右侧轮子会减速或停止,左侧轮子会加速,使小车偏向左侧,从而沿着白线行进。而OpenMV视觉模块则可以根据图像处理结果发出控制信号,控制小车前进、停止或掉头等动作。 Arduino OpenMV巡线小车除了可以用于探索黑线或白线等固定路径外,还可以应用于工业流水线、机器人巡检、仓库物流等领域,增强智能化、自动化生产的效率。同时,随着机器人科技的发展,未来Arduino OpenMV巡线小车有望应用于更加广泛的领域,如无人驾驶、智能仓储等,为人们的生产和生活带来更多便利和效益。 ### 回答3: Arduino和OpenMV都是一种编程开发平台,用于创建各种电子设备和系统,而巡线小车是一种基于传感器的机器人,它通过感知地面上的黑色线路来进行导航。 使用Arduino和OpenMV开发一个巡线小车的过程,需要使用一些硬件模块,如Arduino板,OpenMV摄像头,马达驱动器和巡线传感器。通过这些模块的配合,机器人可以自动探测黑线并进行相应的行动,比如向左或向右转向,向前或向后移动。 在开发过程中,需要使用Arduino IDE或OpenMV IDE作为程序编写的工具,在这里可以编写代码、进行调试和上传到相应的硬件设备上。关于巡线传感器的设置,需要在代码中对其进行校准,以确保准确地检测到地面上的黑线。 此外,对于机器人的行动,需要编写一些算法来控制机器人如何响应传感器的读数,并控制马达的速度和方向。这需要对底层电子设备和机器人的物理运作过程有深入的理解。 最后,对于巡线小车成功完成任务的终极目标,需要不断的测试和调试。只有在多次实验和不同环境下的测试中,机器人才可以达到快速、准确、稳定的效果,才能真正地完成巡线小车开发和使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值