Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino超声波传感器脉冲强度仅为3或4_Arduino_Arduino Uno_Arduino Ultra Sonic - Fatal编程技术网

Arduino超声波传感器脉冲强度仅为3或4

Arduino超声波传感器脉冲强度仅为3或4,arduino,arduino-uno,arduino-ultra-sonic,Arduino,Arduino Uno,Arduino Ultra Sonic,我想做的是读取脉冲信号(回波,高),这样我最终可以把它转换成厘米,这样我就知道超声波传感器离物体有多远。但是,当我读取串行监视器中打印的值时,它仅为3或4,与超声波传感器的距离无关。我甚至不明白为什么会是这两个值,或者为什么会在它们之间变化。我不知道如何解决这个问题,也不知道是什么原因造成的。我不知道问题出在代码还是组件上。然而,这个传感器最近被其他人测试过,当时它工作正常,所以可能只是我做错了什么。帮忙 #define SPEAKER 11 #define TRIGGER 2 #define

我想做的是读取脉冲信号(回波,高),这样我最终可以把它转换成厘米,这样我就知道超声波传感器离物体有多远。但是,当我读取串行监视器中打印的值时,它仅为3或4,与超声波传感器的距离无关。我甚至不明白为什么会是这两个值,或者为什么会在它们之间变化。我不知道如何解决这个问题,也不知道是什么原因造成的。我不知道问题出在代码还是组件上。然而,这个传感器最近被其他人测试过,当时它工作正常,所以可能只是我做错了什么。帮忙

#define SPEAKER 11
#define TRIGGER 2
#define ECHO 3
#define SPLIT 40

unsigned long duration;

int alarm1()
{
  Serial.print("alarmtest");
  analogWrite(SPEAKER, 100);
  delay(100);
  analogWrite(SPEAKER, 0);
  delay(100);
  analogWrite(SPEAKER, 100);
  delay(100);
  analogWrite(SPEAKER, 0);
  delay(500);
}

void setup() 
{
  Serial.begin(9600);
  pinMode(SPEAKER, OUTPUT);
  pinMode(TRIGGER, OUTPUT);
  pinMode(ECHO, INPUT);
}

void loop() 
{       
  digitalWrite(TRIGGER, LOW);
  delayMicroseconds(50);
  digitalWrite(TRIGGER, HIGH);
  delayMicroseconds(50);
  digitalWrite(TRIGGER, LOW);
  duration = pulseIn(ECHO, HIGH);
  delay(200);

  Serial.print(duration);
  if (duration < SPLIT)
  {
   // alarm1();
  }
}
#定义扬声器11
#定义触发器2
#定义ECHO 3
#定义拆分40
无符号长持续时间;
内部警报1()
{
串行打印(“报警测试”);
模拟写作(说话人,100);
延迟(100);
模拟写(说话人,0);
延迟(100);
模拟写作(说话人,100);
延迟(100);
模拟写(说话人,0);
延迟(500);
}
无效设置()
{
Serial.begin(9600);
pinMode(扬声器,输出);
pinMode(触发器、输出);
pinMode(回波,输入);
}
void循环()
{       
数字写入(触发器,低电平);
延迟微秒(50);
数字写入(触发器,高);
延迟微秒(50);
数字写入(触发器,低电平);
持续时间=脉冲强度(回声,高);
延迟(200);
连续打印(持续时间);
如果(持续时间<分割)
{
//报警1();
}
}

由于我使用了错误的端口,所以它将此打印出来。问题解决了。请务必在额外的时间后检查您的连接

它是一个HC-SR04超声波传感器