小小菜鸡你我他 发表于 2018-10-20 20:52:12

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

简单的智能车循迹功能,现在要给他加个条件我不会,本人不是计算机专业,稍微懂点c基础,不确定循环总是加不对,有没有大神帮帮我,小车想让它在遇到第三根黑线时候停止(四个传感器都碰到黑线第三次即: if (SL == HIGH&&SR==HIGH&&SL_1==HIGH && SR_1== HIGH)这个条件满足第三次,brake()是停止代码 )。万分感谢!有需要我提供的我会尽快恢复您!下面是我的loop语句void loop()
{
while(1)
{ int i;
//有信号为LOW没有信号为HIGH
SR = digitalRead(SensorRight);//有信号表明在白色区域,车子底板上L3亮;没信号表明压在黑线上,车子底板上L3灭
SL = digitalRead(SensorLeft);//有信号表明在白色区域,车子底板上L2亮;没信号表明压在黑线上,车子底板上L2灭
SL_1 = digitalRead(SensorLeft_1);
SR_1 = digitalRead(SensorRight_1);
if (SL == LOW&&SR==LOW&&SL_1==LOW && SR_1== LOW)
    run(10);   
    else if (SL_1 == LOW && SL == LOW && SR==HIGH && SR_1== LOW ) // 右循迹红外传感器,检测到信号,车子向左偏离轨道,向右转
    left(30);
    else if(SL_1==LOW && SL== HIGH&&SR == LOW &&SR_1==LOW)
    right(30);
    else if(SL_1==HIGH && SL == LOW && SR==LOW && SR_1==LOW)
      sright(30);
    else if(SL_1==LOW && SL == LOW && SR==LOW && SR_1==HIGH)// 左循迹红外传感器,检测到信号,车子向右偏离轨道,向左转
   sleft(30);
    else if(SL_1 == LOW && SL == LOW && SR==HIGH && SR_1== HIGH)
    left(30);
    else if(SL_1==HIGH && SL== HIGH&&SR == LOW &&SR_1==LOW)
    right(30);


   if (SL == HIGH&&SR==HIGH&&SL_1==HIGH && SR_1== HIGH)
brake();
}
}

liuchenzhouyan 发表于 2018-10-23 14:12:30

我的想法是定义一个flag,每进一次if,flag加1,当flag等于3时执行停止函数,同时将flag清0

迷你强 发表于 2018-11-11 22:25:36

:lol楼上标准套路解决方案
页: [1]
查看完整版本: Arduino智能车如何让它在指定第几次碰到黑线停止