2021全国电设(F题)灰度传感器——循迹红线

基于灰度传感器的循迹(红色循迹)

通过参加全国电子设计大赛F题总结出识别红色线路的循迹方法——灰度传感器

灰度传感器的工作原理

        灰度传感器利用不同颜色的检测面对光的反射程度不同,光敏电阻对不同检测面返回的光其阻值也不同的原理进行颜色深浅检测。

       在有效的检测距离内,发光二极管发出白光,照射在检测面上,检测面反射部分光线,光敏电阻检测此光线的强度并将其转换为机器人可以识别的信号。

        Arduino专用传感器扩展板结合使用,可以感知地面或桌面不同的颜色而产生相应的信号,可实现与颜色有相关的互动作品,也可以作为巡线小车的巡线传感器或者足球机器人的场地灰度识别。电源需要和控制器一致,通常为3.3V或5V

实物图

原理图

引脚定义

  • 输出信号(out)
  • 地(GND)
  • 电源(VCC)

arduino连接示意图

 示例代码

void setup()
{
    Serial.begin(9600); //打开串行端口,将波特率设置为9600 bps
}
void loop()
{
    int val;
    val=analogRead(0);   //将灰度传感器连接到模拟0
    Serial.println(val,DEC);//将值打印到串口          
    delay(100);
}

此代码为红色循迹示例代码

printf("此代码需要根据不同环境进行调试,直接套用可能会无法正确循迹\n");

//电机
#include <AFMotor.h>
AF_DCMotor motor1(1,MOTOR12_64KHZ);
AF_DCMotor motor2(2,MOTOR12_64KHZ);
AF_DCMotor motor3(3,MOTOR34_64KHZ);
AF_DCMotor motor4(4,MOTOR34_64KHZ);

//声明车子方向
void Forward();
void Backward();
void Moveleft();
void Moveright();
void Stop();

void setup() 
{
  Serial.begin(9600);
  Serial.println("Motor test!");
  //电机
  motor1.setSpeed(100);
  motor2.setSpeed(100);
  motor3.setSpeed(100);
  motor4.setSpeed(100);

  
  pinMode(A8,INPUT);
  pinMode(A9,INPUT);
  pinMode(A10,INPUT);
  pinMode(A11,INPUT);
}

void loop() 
{
  int a,b,c,d;
//定义输出口为8,9,10,11
  a = analogRead(8);
  b = analogRead(9);
  c = analogRead(10);
  d = analogRead(11);
//电机的PWM
  motor1.setSpeed(120);
  motor2.setSpeed(120);
  motor3.setSpeed(120);
  motor4.setSpeed(120);
  Forward();
//循迹自动更正
  if(a>555&&a<635)
  {
    Stop();
    delay(500);
    Moveleft();
    delay(250);
  }
  if(c>495&&c<585)
  {
    Stop();
    delay(500);
    Moveright();
    delay(250);
  }
}


void Forward()
{
  motor1.run(FORWARD);
  motor2.run(BACKWARD);
  motor3.run(BACKWARD);-
  motor4.run(FORWARD);
}
void Backward()
{
  motor1.run(BACKWARD);
  motor2.run(FORWARD);
  motor3.run(FORWARD);
  motor4.run(BACKWARD);
}

void Moveright()
{
  motor1.run(BACKWARD);
  motor2.run(BACKWARD);
  motor3.run(BACKWARD);
  motor4.run(BACKWARD);
}

void Moveleft()
{
  motor1.run(FORWARD);
  motor2.run(FORWARD);
  motor3.run(FORWARD);
  motor4.run(FORWARD);
}

void Stop()
{
  motor1.run(RELEASE);
  motor2.run(RELEASE);
  motor3.run(RELEASE);
  motor4.run(RELEASE);
}

欢迎各位莅临指导,交流!

版权声明:本文为CSDN博主「王哥来了快跑」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_48100941/article/details/121331963

生成海报
点赞 0

王哥来了快跑

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

基于Arduino的显示测量环境数据设计

题目: 基于Arduino的显示测量环境数据设计 目录 基于Arduino的显示测量环境数据设计... 3 第一章 课题任务... 4 1.1课题任务... 4 1.2任务分工... 4 1.3设计条件... 4 第

九轴运动传感器--BMX160,硬件开发与程序设计

九轴运动传感器–BMX160,硬件开发与程序设计 前言 和之前OPT3001传感器一块板子上的九轴传感器的代码我写完啦,和大家分享一下 硬件部分介绍 BMX160介绍 BMX160是博世的九轴运动传感器&#xff

基于Arduino的显示测量环境数据设计

题目: 基于Arduino的显示测量环境数据设计 目录 基于Arduino的显示测量环境数据设计... 3 第一章 课题任务... 4 1.1课题任务... 4 1.2任务分工... 4 1.3设计条件... 4 第

Arduino 水滴检测

实物连接图: 电路图: 代码: void setup() {pinMode(3, OUTPUT);pinMode(2, INPUT); }void loop() {bool va2 digitalR