Почему мой сервопривод и ультразвуковой датчик не работают вместе?

У меня завтра сдача школьного проекта, и я планирую подключить серводвигатель к ультразвуковому датчику. Если расстояние меньше 10 см, серводвигатель должен повернуться на 180 градусов и вернуться к 0 градусам, когда перед датчиком нет объекта. Я пробовал их по отдельности, датчик сам по себе работает и может считывать расстояние как обычно, сервопривод тоже работает. Однако, когда я соединяю два кода вместе, кажется, что они просто нейтрализуют друг друга. Я не особо разбираюсь в кодировании, но почти уверен, что датчик должен печатать расстояние на последовательном мониторе, но он просто перестает работать, я также добавил некоторый код, чтобы попытаться заставить сервопривод вращаться, но это тоже не помогает. работа... Итак, я застрял, пожалуйста, помогите мне, срок сдачи завтра :(

Может ли это быть мой источник энергии? Я использую свой ноутбук для питания... но мой друг выполнил тот же проект, и он хорошо работал, используя ноутбук в качестве источника питания, но я видел подобный пост, который побуждал меня сменить источник питания, но это не так. ноутбук - огромный источник энергии? (искренне спрашиваю)

#include <Servo.h>
#define servopin 9
#define echoPin 4
#define trigPin 5

Servo Myservo;
int long duration;
int distance;

void setup() {
    Myservo.attach(servopin);
    pinMode(echoPin, INPUT);
    pinMode(trigPin, OUTPUT);
}

void loop() {
    digitalWrite(trigPin, LOW);
    delayMicroseconds(2);
    digitalWrite(trigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin, LOW);

    duration = pulseIn(echoPin, HIGH);
    distance = (duration * 0.034 / 2);

    if (distance < 10)
    {
        Myservo.write(180);
    }
    else
    {
        Myservo.write(0);
    }
    delay(500);
}

, 👍-1

Обсуждение

у вас нет отладочного кода... добавьте его... прямо сейчас у вас нет возможности узнать значение расстояния, @jsotola

«Но разве ноутбук не является огромным источником питания?» Большинство портов USB должны выдавать только ток 500 мА. Фактически, некоторые из них переходят в режим постоянного тока для защиты компьютера., @st2000


1 ответ


0

Я попробовал ваш код на онлайн-симуляторе, и он работает отлично!
Может быть, просто попробуйте еще одну проверку расстояния, например if(distance<30) (по крайней мере), и посмотрим, что произойдет.
Я не думаю, что использование ноутбука в качестве источника питания — ваша проблема

,

Я знаю, да, это очень сбивает с толку. Он отлично работает на Tinkercad, но не будет работать в реальной жизни, я попробую ваше предложение. Спасибо большое :D, @pinkuro