极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 17419|回复: 2

Arduino智能车如何让它在指定第几次碰到黑线停止

[复制链接]
发表于 2018-10-20 20:52:12 | 显示全部楼层 |阅读模式
简单的智能车循迹功能,现在要给他加个条件我不会,本人不是计算机专业,稍微懂点c基础,不确定循环总是加不对,有没有大神帮帮我,小车想让它在遇到第三根黑线时候停止(四个传感器都碰到黑线第三次即: if (SL == HIGH&&SR==HIGH&&SL_1==HIGH && SR_1== HIGH)这个条件满足第三次,brake()是停止代码 )。万分感谢!有需要我提供的我会尽快恢复您!下面是我的loop语句
  1. void loop()
  2. {
  3.   while(1)
  4.   { int i;
  5.   //有信号为LOW  没有信号为HIGH
  6.   SR = digitalRead(SensorRight);//有信号表明在白色区域,车子底板上L3亮;没信号表明压在黑线上,车子底板上L3灭
  7.   SL = digitalRead(SensorLeft);//有信号表明在白色区域,车子底板上L2亮;没信号表明压在黑线上,车子底板上L2灭
  8.   SL_1 = digitalRead(SensorLeft_1);
  9.   SR_1 = digitalRead(SensorRight_1);
  10.   if (SL == LOW&&SR==LOW&&SL_1==LOW && SR_1== LOW)
  11.     run(10);   
  12.     else if (SL_1 == LOW && SL == LOW && SR==HIGH && SR_1== LOW ) // 右循迹红外传感器,检测到信号,车子向左偏离轨道,向右转
  13.     left(30);
  14.     else if(SL_1==LOW && SL== HIGH&&SR == LOW &&SR_1==LOW)
  15.     right(30);
  16.     else if(SL_1==HIGH && SL == LOW && SR==LOW && SR_1==LOW)
  17.       sright(30);
  18.     else if(SL_1==LOW && SL == LOW && SR==LOW && SR_1==HIGH)  // 左循迹红外传感器,检测到信号,车子向右偏离轨道,向左转
  19.      sleft(30);
  20.     else if(SL_1 == LOW && SL == LOW && SR==HIGH && SR_1== HIGH)
  21.     left(30);
  22.     else if(SL_1==HIGH && SL== HIGH&&SR == LOW &&SR_1==LOW)
  23.     right(30);

  24.   
  25.    if (SL == HIGH&&SR==HIGH&&SL_1==HIGH && SR_1== HIGH)
  26. brake();
  27. }
  28. }
复制代码
回复

使用道具 举报

发表于 2018-10-23 14:12:30 | 显示全部楼层
我的想法是定义一个flag,每进一次if,flag加1,当flag等于3时执行停止函数,同时将flag清0
回复 支持 反对

使用道具 举报

发表于 2018-11-11 22:25:36 | 显示全部楼层
楼上标准套路解决方案
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-20 03:00 , Processed in 0.046271 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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