Ультразвуковой дальномер

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем Беженарь Миша, 8 ноя 2015.

  1. Начал работу с ультразвуковым дальномером. Сначала всё было хорошо всё работало.На следующий день продолжил работу с ним и он мне начал постоянно выдаёт значения около 100 см (+ - 30 см)
    Я и ардуинки менял и ультразвуковой дальномер менял,НО ничего не происходит.
    КОД:

    #define Trig 9
    #define Echo 8
    #define ledPin 13

    void setup()
    {
    pinMode(Trig, OUTPUT); //инициируем как выход
    pinMode(Echo, INPUT); //инициируем как вход
    pinMode(ledPin, OUTPUT);
    Serial.begin(9600);
    /* задаем скорость общения. В нашем случае с компьютером */
    }
    unsigned int impulseTime=0;
    unsigned int distance_sm=0;

    void loop()
    {
    digitalWrite(Trig, HIGH);
    /* Подаем импульс на вход trig дальномера */
    delayMicroseconds(10); // равный 10 микросекундам
    digitalWrite(Trig, LOW); // Отключаем
    impulseTime=pulseIn(Echo, HIGH); // Замеряем длину импульса
    distance_sm=impulseTime/58; // Пересчитываем в сантиметры
    Serial.println(distance_sm); // Выводим на порт
    delay(100);

    if (distance_sm<30) // Если расстояние менее 30 сантиметром
    {
    digitalWrite(ledPin, HIGH); // Светодиод горит
    }
    else
    {
    digitalWrite(ledPin, LOW); // иначе не горит
    }
    delay(100);
    /* ждем 0.1 секунды, Следующий импульс может быть излучён, только после исчезновения эха от предыдущего.
    Это время называется периодом цикла (cycle period).
    Рекомендованный период между импульсами должен быть не менее 50 мс. */
    }



    Ребят помогите.Мне разобраться с этой "летучей мышью" очень важно.
     
  2. DrProg

    DrProg Вечный нерд

    Загоните код в специальную вставку вот так:
    Код (C++):
    unsigned int getDistance(byte trig, byte ping) { // указать тригерную и приемную ноги
        unsigned int duration = 0;
        unsigned int Distance = 0;
        digitalWrite(trig, LOW);
        delayMicroseconds(2);
        digitalWrite(trig, HIGH);
        delayMicroseconds(10);
        digitalWrite(trig, LOW);
        duration = pulseIn(ping,HIGH);
        Distance = duration/29/2;
        return Distance;
    }
    Если все работало, а потом вдруг перестало, значит проблема в контактах. Проверьте те места, которые не меняются при смене датчиков и ардуин.
     
  3. alp69

    alp69 Форумчанин

  4. Больше не буду.:oops::)
     
  5. Если все работало, а потом вдруг перестало, значит проблема в контактах. Проверьте те места, которые не меняются при смене датчиков и ардуин.[/QUOTE]
    Растолкуйте пожалуйста.
    В рамочку брать раньше пытался, но не получалось.Научите пожалуйста:).
     
  6. DrProg

    DrProg Вечный нерд

    Кнопка слева от кавычек вызывает окно куда копипастим код, нажимаем ОК и постим сообщение.
     
    ИгорьК и Беженарь Миша нравится это.
  7. Максимус-Бог

    Максимус-Бог Убийца матрёшек

    Растолкуйте пожалуйста.
    В рамочку брать раньше пытался, но не получалось.Научите пожалуйста:).[/QUOTE]
    2015-11-08 20-26-19 Ультразвуковой дальномер   Амперка   Форум - Google Chrome.png
    Красным выделил
     
    Беженарь Миша нравится это.
  8. DrProg

    DrProg Вечный нерд

    Вероятно у вас в браузере что то отключено. Попробуйте на другом.
     
    ИгорьК и Беженарь Миша нравится это.
  9. Максимус-Бог

    Максимус-Бог Убийца матрёшек

    ??
     
    Беженарь Миша нравится это.
  10. Максимус-Бог

    Максимус-Бог Убийца матрёшек

  11. Я слегка не корректно написал. Растолкуйте пожалуйста код.:)

    Код (C++):
    unsigned int getDistance(byte trig, byte ping) { // указать тригерную и приемную ноги
        unsigned int duration = 0;
        unsigned int Distance = 0;
        digitalWrite(trig, LOW);
        delayMicroseconds(2);
        digitalWrite(trig, HIGH);
        delayMicroseconds(10);
        digitalWrite(trig, LOW);
        duration = pulseIn(ping,HIGH);
        Distance = duration/29/2;
        return Distance;
    }
    Учусь.
     
  12. DrProg

    DrProg Вечный нерд

    На излучатель подается импульс. Приемник засекает время за которое звук вернется (точнее его окончание) от препятствия и далее, зная скорость звука, мы вычисляем расстояние до этого препятствия. Попробовали этот код у себя? Главное не забывать между вызовами этой функции делать паузу милисекунд 10.
     
    ИгорьК нравится это.
  13. а к чему тринг и екхо подключены
     
  14. А где сетап и луп?

    Я поставил в таком же виде как вы мне его дали и он мне выдаёт ошибку нет лупа и сетапа
    К чему подключены пи ны УЗ дальномера?
    И почему с самого начало всё работало а сейчас нет?
     
    Последнее редактирование: 9 ноя 2015
  15. DrProg

    DrProg Вечный нерд

    Елки палки, это ФУНКЦИЯ! Вы правда не знаете что это такое и как ее использовать?
     
    ИгорьК и Беженарь Миша нравится это.
  16. Я самоучка сам по книжке одной учусь и про функции там не сказано. Можете посоветовать в каких источниках я могу повысить свой навык.
     
  17. DrProg

    DrProg Вечный нерд

    В интернете можно найти все и в первую очередь обучающие статьи с примерами. Первая же ссылка раскрывает тему. Вы мини-проекты из Амперкиной википедии поделвли бы, они очень неплохо дают стартовые умения и понимания.
     
    ИгорьК нравится это.
  18. Добро
     
  19. Tomasina

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