Проблемы с дальномером hc-sr04

Тема в разделе "Arduino & Shields", создана пользователем evans7, 21 авг 2021.

  1. evans7

    evans7 Нуб

    Всем привет.

    Ситуация такова: опробовал несколько скетчей из интернета для робота на Ардуино, и ни в одном из них не работает дальномер. По итогу робот не видит препятствия и просто едет, игнорируя часть кода с дальномером. Скетчи проверенные и без ошибок (99%). Все остальное (моторы, серва, ик-датчик) работает. При проверке дальномера отдельным скетчем- функционирует, измеряет расстояние до обьекта. Пины в программе совпадают с пинами шилда. Питание две литиевых батарейки 18650 3,7V.

    Дальномер также сильно нагревается, не знаю, нормально это или нет. Если нужно, добавлю пример с кодом.
     
  2. Airbus

    Airbus Радиохулиган Модератор

    [​IMG]
    Сейчас посмотрю
     
    Asper Daffy нравится это.
  3. evans7

    evans7 Нуб

    Вот пример кода с интернета, самый простой, но сонар все равно не работает. Почему- непонятно. Помогите пожалуйста.


    Код (C++):
    #define Trig 8
    #define Echo 9
    const int in1 = 2; // IN4 pin 2
    const int in2 = 4; // IN3 pin 4
    const int in3 = 5; // IN2 pin 5
    const int in4 = 7; // IN1 pin 7
    int ENB1 = 3;
    int ENA2 = 6;
    void setup()
    {
    pinMode(Trig, OUTPUT); // выход
    pinMode(Echo, INPUT); // вход
    pinMode(in1, OUTPUT); // выход на L298n
    pinMode(in2, OUTPUT); // выход на L298n
    pinMode(in3, OUTPUT); // выход на L298n
    pinMode(in4, OUTPUT); // выход на L298n
    pinMode (ENB1, OUTPUT);
    pinMode (ENA2, OUTPUT);
    }
    unsigned int impulseTime=0;
    unsigned int distance_sm=0;
    void loop()
    {
    digitalWrite(Trig, HIGH);
    delayMicroseconds(10); // 10 микросекунд
    digitalWrite(Trig, LOW);
    impulseTime=pulseIn(Echo, HIGH); // замеряем длину импульса
    distance_sm=impulseTime/58; // переводим в сантиметры
    if (distance_sm>20) // если расстояние более 20 сантиметров
    {
    digitalWrite(in1, HIGH);
    delay(300);
    digitalWrite(in1, LOW);
    digitalWrite(in2, LOW);
    digitalWrite(in3, HIGH);
    delay(300);
    digitalWrite(in3, LOW);
    digitalWrite(in4, LOW);
    analogWrite(ENB1,250);
    analogWrite(ENA2,250);
    }
    else
    {
    digitalWrite(in1, LOW);
    digitalWrite(in2, LOW);
    digitalWrite(in3, LOW);
    digitalWrite(in4, LOW);
    delay(500);
    digitalWrite(in1, LOW);
    digitalWrite(in2, HIGH);
    digitalWrite(in3, LOW);
    digitalWrite(in4, HIGH);
    analogWrite(ENB1,250);
    analogWrite(ENA2,250);
    delay(200);
    digitalWrite(in1, LOW);
    digitalWrite(in2, HIGH);
    digitalWrite(in3, HIGH);
    digitalWrite(in4, LOW);
    analogWrite(ENB1,250);
    analogWrite(ENA2,250);
    delay(100);
    }
    delay(50);
    }