Arduino 状态变化检测然后while循环

Arduino 状态变化检测然后while循环,arduino,state,Arduino,State,我想在计数器达到如下图所示的值e,g num=3(高)后停止直流电机: 白线3厘米厚,黑匣子30厘米见方 两个红外传感器,int rightSens=30;和int leftSens=32正在工作,在感应黑色表面时给出1,在任何其他表面上给出0,即白色和无任何东西的情况下 我希望机器人在我的循环中计数,在计数白色时为3低,在计数黑色时为2高,然后做一些事情,例如停止,如while循环所示 一定是出了什么问题,好像没有计数,因为它在经过3个盒子或3条白线后没有停止。非常感谢您的帮助 intpwm

我想在计数器达到如下图所示的值e,g num=3(高)后停止直流电机:

白线3厘米厚,黑匣子30厘米见方

两个红外传感器,
int rightSens=30
;和
int leftSens=32
正在工作,在感应黑色表面时给出
1
,在任何其他表面上给出
0
,即白色和无任何东西的情况下

我希望机器人在我的循环中计数,在计数白色时为3低,在计数黑色时为2高,然后做一些事情,例如停止,如while循环所示

一定是出了什么问题,好像没有计数,因为它在经过3个盒子或3条白线后没有停止。非常感谢您的帮助

intpwm=2//将针脚2初始化为pwm
int leftMotorin_1=22//正确的
int leftMotorin_2=24;
int pwm2=3;
int rightMotorin_3=26;
int rightMotorin_4=28;
//传感器
int rightSens=30;
int leftSens=32;
国际右翼国家;
int-leftsenstate;
//用于计算行数的变量
int-previousState=0;
int currentState=0;
无效设置()
{
引脚模式(pwm,输出);//将pwm引脚设置为输出
pinMode(leftMotorin_1,输出);//逻辑引脚也设置为输出
pinMode(左电机输入2,输出);
引脚模式(pwm2,输出);//将pwm引脚设置为输出
pinMode(rightMotorin_3,输出);//逻辑引脚也设置为输出
pinMode(右电机输入4,输出);
//pinMode(obSens,输入);
pinMode(右传感器,输入);
pinMode(leftSens,输入);
}
void readSensors()
{
rightSensState=数字读取(rightSens);
leftSensState=digitalRead(leftSens);
}
void向前移动()
{
数字写入(左马达输入1,高);
数字写入(左马达输入2,低);
模拟写入(脉宽调制,150);
数字写入(右马达输入3,高);
数字写入(右马达输入4,低);
模拟写入(PWM2150);
}
void stopWheels()
{
//刹车
数字写入(左马达输入1,低);
数字写入(左马达输入2,低);
数字写入(右马达输入3,低);
数字写入(右马达输入4,低);
}
void循环()
{
整数计数=0;
int num=3;
向前移动();
读取传感器();
(currentState=(leftSensState&&rightSensState));
如果(当前状态!=以前的状态);
{
如果(当前状态==高)
计数++;
previousState=当前状态;
}
while(count!=num){
向前移动();
读取传感器();
(currentState=(leftSensState&&rightSensState));
如果(当前状态!=以前的状态);
{
如果(当前状态==高)
计数+=1;
previousState=当前状态;
}
如果(计数器==num)
{
止动轮();
延迟(20);
打破
}  
}                                                                                                             
}

变量
rightSensState
leftSensState
没有在任何地方声明!!必须将它们声明为全局(或声明为本地并通过函数传递)。由于这个原因,我认为您当前的代码甚至无法编译。不确定为什么在loop()函数中有
while
循环。想想loop()函数在Arduino环境中是如何工作的-当循环退出时,会发生什么…@Sembei Norimaki,我已经声明rightSensState和leftSensState为全局变量,因此程序可以编译,但似乎仍然不计算@Jeff Loughlin。完成while循环后,机器人应停止并右转以继续执行其他任务。但首先我需要数一数高点或低点,让它停下来