Здравейте!
Свързвам два сензора към ардуино платката и вкарвам ето този код:
#define trigPin1 13
#define echoPin1 12
#define led1 11
#define led2 10
#define trigPin2 9
#define echoPin2 8
#define led3 7
#define led4 6
void setup() {
Serial.begin (9600);
pinMode(trigPin1, OUTPUT);
pinMode(echoPin1, INPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(trigPin2, OUTPUT);
pinMode(echoPin2, INPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(trigPin3, OUTPUT);
pinMode(echoPin3, INPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
}
void loop() { //L1
long duration, distance;
digitalWrite(trigPin1, LOW);
delayMicroseconds(2);
digitalWrite(trigPin1, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin1, LOW);
duration = pulseIn(echoPin1, HIGH);
distance = (duration/2) / 29.1;
if (distance < 10) { //L2
digitalWrite(led1,HIGH);
digitalWrite(led2,HIGH);
} //R1
else { //L3
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
}
{
long duration, distance;
digitalWrite(trigPin2, LOW);
delayMicroseconds(2);
digitalWrite(trigPin2, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin2, LOW);
duration = pulseIn(echoPin2, HIGH);
distance = (duration/2) / 29.1;
if (distance < 10) {
digitalWrite(led3,HIGH);
digitalWrite(led4,HIGH);
}
else
digitalWrite(led3,LOW);
digitalWrite(led4,LOW);
}
delay(500);
}
Обаче ардуино, когато няма нищо пред сензорите на по-далечно разстояние подава високо ниво на пиновете. Демек на затворено пространство сензорите реагират добре, но щом ги изкарам на вън пиновете са на постоянно високо ниво, докато не сложа нещо пред сензора (на примерно 2метра), тогава вече ардуино работи по програмата, задава високо ниво при 10 см. Как да поправя този проблем?