如何使用Arduino在一定距离上打开LED
我正在做一个Arduino项目,但我无法让它工作 只要有人离传感器5英寸远,程序就会打开。问题是,每当我启动程序时,无论发生什么情况,LED都会熄灭。这是我的节目如何使用Arduino在一定距离上打开LED,arduino,ping,led,Arduino,Ping,Led,我正在做一个Arduino项目,但我无法让它工作 只要有人离传感器5英寸远,程序就会打开。问题是,每当我启动程序时,无论发生什么情况,LED都会熄灭。这是我的节目 const int pingPin =7 ; const int ledPin = 13; void setup() { Serial.begin(9600); pinMode(ledPin, OUTPUT); } void loop() { long duration, inches, cm;
const int pingPin =7 ;
const int ledPin = 13;
void setup() {
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
}
void loop() {
long duration, inches, cm;
pinMode(pingPin,OUTPUT);
digitalWrite(pingPin,LOW);
delayMicroseconds(2);
digitalWrite(pingPin,HIGH);
delayMicroseconds(5);
digitalWrite(pingPin,LOW);
pinMode(pingPin,INPUT);
duration =pulseIn(pingPin,HIGH);
inches = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);
Serial.print(inches);
Serial.print("in, ");
Serial.print(cm);
Serial.print("cm");
Serial.println();
delay(100);
while (true) {
if (inches <= 5) {
digitalWrite(ledPin, HIGH);
}
else {
digitalWrite(ledPin, LOW);
}
}
}
long microsecondsToInches(long microseconds)
{
return microseconds /74/2;
}
long microsecondsToCentimeters(long microseconds)
{
return microseconds /29/2;
}
const int pingPin=7;
常数int ledPin=13;
无效设置(){
Serial.begin(9600);
引脚模式(LED引脚,输出);
}
void循环(){
长持续时间,英寸,厘米;
pinMode(pingPin,输出);
数字写入(pingPin,低电平);
延迟微秒(2);
数字写入(pingPin,高);
延迟微秒(5);
数字写入(pingPin,低电平);
pinMode(pingPin,输入);
持续时间=脉冲强度(pingPin,高);
英寸=微秒(持续时间);
cm=微秒秒(持续时间);
连续打印(英寸);
序列号。打印(“,”);
连续打印(cm);
连续打印(“cm”);
Serial.println();
延迟(100);
while(true){
如果(英寸仔细查看代码的最后一部分:
while (true) {
if (inches <= 5) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
}
while(true){
如果(英寸)非常感谢!我真不敢相信我没有看到现在唯一的问题是它随机闪烁,当它打开时,LED随之亮起并开始随机闪烁。闪烁是一个单独的问题。我不知道你使用的是哪种传感器-因此可能存在核心问题(它是如何设置的,它的读数有多少波动,等等)。延迟微秒+延迟(100)是怎么回事?我发现噪音传感器(或环境)有助于读取一些读数(每个循环()
)并对它们进行平均以确定最终值。此外,打印语句需要一些时间来处理,因此对于真正的测试,请将它们注释掉(除非项目需要它们)。别介意我让它工作了!我所做的只是将距离(以英寸为单位)缓存到一个变量中,如果(英寸<距离),则执行顺便说一句:写digitalWrite(ledPin,英寸)要短得多