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

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем Zybaster, 25 мар 2016.

  1. Zybaster

    Zybaster Нуб

    Здравствйте, нужна помощь, только начинаю заниматься ардуино, подскажите что не так. Задумка была такова, когда объект ближе чем 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);
    }
     
  2. Tomasina

    Tomasina Сушитель лампочек Модератор

    echoPin - это номер пина для подключения датчика, а не показания с него.
     
  3. Zybaster

    Zybaster Нуб

    А не подскажете, как доработать данный код что бы завершить программу?
     
    Последнее редактирование: 25 мар 2016
  4. Tomasina

    Tomasina Сушитель лампочек Модератор

    какая переменная отвечает за расстояние? ;)
     
  5. Zybaster

    Zybaster Нуб

    int duration, cm;

    Отвечает за текущее значение дальнометра.

    cm = duration / 58;

    Отвечает за значение только уже в сантиметрах, я не могу понять как снять его с этой переменной и использовать в функции If и т.д.
     
  6. Tomasina

    Tomasina Сушитель лампочек Модератор

    ну duration нам не очень нужно, а cm - оно самое. :)
    Получается
    Код (C++):
    if (cm <= 50)
       {
          digitalWrite(red, HIGH);
       }
    else
       {
          digitalWrite(red, LOW);
       }
    надо вставить после Serial.println(" cm");
     
  7. Zybaster

    Zybaster Нуб

    Получается я правильно мыслил, просто принял функцию не в том месте, спасибо большое за помощь. :)
     
  8. Tomasina

    Tomasina Сушитель лампочек Модератор

    не в том месте и взял не ту переменную. А все остальное правильно.