关于判断Ardunio循迹小车检测到四路高电平第i次停止问题

###基于Ardunio三轮循迹小车四路循迹模块。
##希望在第三次检测到1111时停止,试了多种判断,但总是调试不对。
#希望大佬可以指点指点。




#define LeftMotor1 6  //Arduino的3号引脚连接在IN3端口
#define LeftMotor2 9   //Arduino的5号引脚连接在IN4端口
#define RightMotor1 3 //Arduino的6号引脚连接在接IN5端口
#define RightMotor2 5 //Arduino的9号引脚连接在接IN6端口
#define track1 10 //Arduino的10号引脚连接在最左边的循迹模块
#define track2 11
#define track3 12
#define track4 13

int Sensor[4] = {0, 0, 0, 0}; //初始化循迹的值
int i=0;
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600); //串口初始化
  Track_Init(); //循迹模块初始化
  Motor_Init(); //电机引脚初始化
}

void loop() {

  // put your main code here, to run repeatedly:
  Sensor_Read();  //不断地读取循迹模块的高低电平
  xun_ji(); //循迹函数
  count();//经过第某个1111停止
}
void Track_Init()
{
  //循迹模块D0引脚初始化,设置为输入模式
  pinMode(track1, INPUT);
  pinMode(track2, INPUT);
  pinMode(track3, INPUT);
  pinMode(track4, INPUT);
}
void Motor_Init()
{
  //电机引脚初始化,设置为输出模式
  pinMode(LeftMotor1, OUTPUT);
  pinMode(LeftMotor2, OUTPUT);
  pinMode(RightMotor1, OUTPUT);
  pinMode(RightMotor2, OUTPUT);
}
void Sensor_Read()
{
  Sensor[0]=digitalRead(track1); //检测到黑线为高电平(1),白线为低电平(0)
  Sensor[1]=digitalRead(track2);
  Sensor[2]=digitalRead(track3);
  Sensor[3]=digitalRead(track4);
}
void Motor_Speed(int Left1_Speed, int Left2_Speed, int Right1_Speed, int Right2_Speed)
{
  analogWrite(LeftMotor1, Left1_Speed); //控制电机的速度
  analogWrite(LeftMotor2, Left2_Speed);
  analogWrite(RightMotor1, Right1_Speed);
  analogWrite(RightMotor2, Right2_Speed);
}
void run()//直走
{
     analogWrite(6,100);
     analogWrite(9,0);
     analogWrite(3,90);
     analogWrite(5,0);
     delay(10);
}
void left1()//小左转
{
     analogWrite(6,50);
     analogWrite(9,0);
     analogWrite(3,70);
     analogWrite(5,0);
     delay(10);
}
void left2()//大左转
{
     analogWrite(6,0);
     analogWrite(9,70);
     analogWrite(3,70);
     analogWrite(5,0);
     delay(10);
}
void leftrun()//左直角
{
     analogWrite(6,0);
     analogWrite(9,100);
     analogWrite(3,110);
     analogWrite(5,0);
     delay(10);
}
void rightrun()//右直角
{
     analogWrite(6,120);
     analogWrite(9,0);
     analogWrite(3,0);
     analogWrite(5,100);
     delay(10);
}
void right1()//小右转
{
     analogWrite(6,80);
     analogWrite(9,0);
     analogWrite(3,50);
     analogWrite(5,0);
     delay(10);
}
void right2()//大右转
{
     analogWrite(6,85);
     analogWrite(9,0);
     analogWrite(3,0);
     analogWrite(5,70);
     delay(10);
}
void stop()//停止
{
     analogWrite(6,0);
     analogWrite(9,0);
     analogWrite(3,0);
     analogWrite(5,0);
     delay(10);
}
void  count()
{
  if(Sensor[0]==1&&Sensor[1]==1&&Sensor[2]==1&&Sensor[3]==1)
  {
    i++;delay(200);
    if(i>2)
    {
    stop();
    }
  }
}
void xun_ji() 
{
  if(Sensor[0]==0&&Sensor[1]==0&&Sensor[2]==0&&Sensor[3]==0)
  run();
  if(Sensor[0]==0&&Sensor[1]==1&&Sensor[2]==0&&Sensor[3]==0)
  left1();
  if(Sensor[0]==1&&Sensor[1]==0&&Sensor[2]==0&&Sensor[3]==0)
  left2();
  if(Sensor[0]==1&&Sensor[1]==1&&Sensor[2]==0&&Sensor[3]==0)
  leftrun();
  if(Sensor[0]==0&&Sensor[1]==0&&Sensor[2]==1&&Sensor[3]==0)
  right1();
  if(Sensor[0]==0&&Sensor[1]==0&&Sensor[2]==0&&Sensor[3]==1)
  right2();
  if(Sensor[0]==0&&Sensor[1]==0&&Sensor[2]==1&&Sensor[3]==1)
  rightrun();
  if(Sensor[0]==1&&Sensor[1]==1&&Sensor[2]==1&&Sensor[3]==0)
  leftrun();
  if(Sensor[0]==0&&Sensor[1]==1&&Sensor[2]==1&&Sensor[3]==1)
  rightrun();
  if(Sensor[0]==1&&Sensor[1]==1&&Sensor[2]==1&&Sensor[3]==1)
  run();
}

##本来执着于写环岛代码来着,发现判断语句不是按照思路执行,进而进行简单的判断路口,依旧调试不成,难受好几天了.

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你看下这篇博客吧, 应该有用👉 :Argoverse数据集部分安装问题以及解决方法
  • 除此之外, 这篇博客: AHT20温湿度传感器的数据采集以及Ardunio IDE简单使用中的 信号转换 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    1、相对湿度转换
    相对湿度 RH 都可以根据 SDA 输出的相对湿度
    信号 SRH 通过如下公式计算获得
    (结果以 %RH 表示):
    在这里插入图片描述
    2、温度转换
    温度 T 都可以通过将温度输出信号 ST 代入到
    下面的公式计算得到
    (结果以温度 ℃ 表示):
    在这里插入图片描述


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^