我写了一个代码来检测颜色,当检测到颜色时,然后读取超声波传感器。

但是在当前代码中,它每次都会检查颜色传感器,然后测试超声波传感器的输出...我的意思是它会针对每个读数检查颜色传感器...
我实际上只想检查一次色彩传感器的输出,然后开始获取读数而不必担心色彩...
但是,如果一段时间后再次检测到相同的颜色,则应停止读取读数...

这是代码:

 int sensorPin=A0;    // select ip which reads from color                       //sensor  to detect blue color
 int sensorValue=0;


const int pingPin = 13; //pin which triggers ultrasonic sound


int inPin = 12;   //pin which delivers time to receive echo




void setup() {

  Serial.begin(9600);// initialize serial communication


  pinMode(pingPin, OUTPUT); //initializing the pin states
  pinMode(inPin, INPUT);  //setting up the input pin

}

void loop()
{

  sensorValue= analogRead(sensorPin);

  long duration, cm;

      if(sensorValue >= 1 )
        {
           digitalWrite(pingPin, LOW);       //sending the signal, starting with LOW for a clean signal
           delayMicroseconds(2);
           digitalWrite(pingPin, HIGH);
           delayMicroseconds(5);
           digitalWrite(pingPin, LOW);
        }



     duration = pulseIn(inPin, HIGH);


     cm = microsecondsToCentimeters(duration);// convert the time into a distance

     Serial.print(cm);             //printing readings to serial display
     Serial.print("cm");
     Serial.println();


}


float microsecondsToCentimeters(float microseconds)
{

  return microseconds / 29.0 / 2.0;
}

最佳答案

sensorValue  is a global variable.


您需要在if内部清除它:

if(sensorValue >= 1 )
{
 sensorValue = 0;
     :
     :
}


编辑:
上面的答案基于这样的假设:仅当检测到新的输入脉冲时,analogRead(sensorPin);函数将返回非零值。

关于c - 嵌入式C:实现逻辑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28536432/

10-13 03:18