Ультразвуковой датчик + светодиод.

Zybaster
Zybaster аватар
Offline
Зарегистрирован: 25.03.2016

Здравствйте, нужна помощь, только начинаю заниматься ардуино, подскажите что не так. Задумка была такова, когда объект ближе чем 50 см, то загорается лампочка, если нет, то не включается или же вообще отключена.

В моём случае светодиот просто загорается и горит, скорее всего я не правильно прописал (echoPin <= 50).

int echoPin = 9; 
int trigPin = 8; 
int red = 2;
 
void setup() { 
  Serial.begin (9600); 
  pinMode(trigPin, OUTPUT); 
  pinMode(echoPin, INPUT);
  pinMode(red, OUTPUT);
  
  if
  (echoPin <= 50)
  {
    digitalWrite(red, HIGH);
  }
  else
  {
    digitalWrite(red, LOW);
  }
 
void loop() { 
  int duration, cm; 
  digitalWrite(trigPin, LOW); 
  delayMicroseconds(2); 
  digitalWrite(trigPin, HIGH); 
  delayMicroseconds(10); 
  digitalWrite(trigPin, LOW); 
  duration = pulseIn(echoPin, HIGH); 
  cm = duration / 58;
  Serial.print(cm); 
  Serial.println(" cm"); 
  delay(100);
}
ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015
Araris
Offline
Зарегистрирован: 09.11.2012

Да, Вы неправильно прописали,

1. не echoPin <= 50 (echoPin - всего лишь константа, задающая номер пина для датчика), а cm <= 50 (cm - расстояние, измеренное датчиком).

2. if должен находиться не в функции setup(), а где-то после строки cm = duration / 58.

3. Советом Евгения обязательно воспользуйтесь, так удобнее и вопрошающему, и отвечающему.

Zybaster
Zybaster аватар
Offline
Зарегистрирован: 25.03.2016

Спасибо большое за помощь, всё работает, в следующий раз учту совет.