거리를 제어하는 거리를 제어하는 LED를 만들려고합니다. 나는 arduino Leonardo와 거리 센서를 사용하고 있습니다. 순간에 보드에 플러그를 꽂으면 LED가 계속 켜져 있고 거리가 줄어들면 LED가 꺼지지 않습니다. 이 일을하기 위해서 무엇이 바뀌어야하는지 말해 주시겠습니까?거리 제어 led가
const int TrigPin = 2;
const int EchoPin = 3;
float cm;
int ledPin = 12; //define ledPin12 is the output port of led’s level.
int val = 0; //define original of val.
void setup()
{
Serial.begin(9600);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
pinMode(ledPin, OUTPUT); //set ledPin output
}
void loop()
{
digitalWrite(TrigPin, LOW); //Low-high-low level sent a short time pulse to TrigPin
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
cm = pulseIn(EchoPin, HIGH)/58.0; //Echo time converted into cm
cm = (int(cm * 100.0))/100.0; // retain two decimal places
Serial.print(cm);
Serial.print("cm");
Serial.println();
delay(1000);
val = analogRead(EchoPin); //get the value from sensor
if(val<=1)
{
//512=2.5V, if want the sensor be more sensitive, increase the number, or lese low the number.
digitalWrite(ledPin, HIGH); //when the value of val is less than 512(2.5V), light up led lamp
}
else
{
digitalWrite(ledPin, LOW);
}
}
StackOverflow의 디버거 없습니다. 어떤 오류가 있습니까? 상수 값을 사용하여 논리를 테스트 했습니까? 주석이 코드와 일치하지 않는 이유는 무엇입니까? –
그것은 나에게 어떤 오류도주지 않고있다, 나는 단지 기대했던 것처럼 기능하지 않는다. –
pulseIn() 및 analogRead()는 무엇을합니까? 두 핀 모두를 똑같은 핀으로 빠르게 호출 할 수 있습니까? cm 인쇄를위한 출력물은 무엇입니까? –