Сервопривод сохраняет свою позицию каждый раз, когда я отправляю какое-то значение

Я хотел управлять своим сервоприводом с помощью модуля Bluetooth.

Я дал определенные значения для поворота. Когда я нажимаю эти значения, сервопривод вращается, но затем сохраняет свое исходное положение, а ПК также издает звук отключения платы Arduino, потому что я запитал плату от своего ПК (также пробовал с блоком питания). Даже мой Bluetooth отключается.

Это мой код:

#include <Servo.h>

Servo myservo;
int pos = 0;
char data = 0; 
           
void setup() {
  myservo.attach(9);
  Serial.begin(9600);
}

void loop() {
  if (Serial.available() > 0) { 
    data = Serial.read();             
    if (data == 'F') {        
      // for (pos = 0; pos <= 180; pos += 1) 
      myservo.write(180);
      delay(1);
    }
  }
  else if (data == 'B') {     
    // for (pos = 180; pos >= 0; pos -= 1) 
    myservo.write(0); 
    delay(1);
  }
}

Подключения:

Сервопривод:

красный провод -- 5 В (не работает при 3,3 В)
оранжевый провод -- pin9
коричневый провод -- масса

Bluetooth (hc05):

5 V -- 5 V
gnd -- gnd
rx -- tx
tx -- rx

, 👍-1

Обсуждение

Я исправил твой отступ. Вам не хватает 2 закрывающих фигурных скобок в конце. Также ваш цикл for для символа F ничего не делает, кроме ожидания (вы там не пишете сервоприводу). Если ваше USB-соединение не работает, когда сервопривод движется, это может указывать на проблему с питанием. Какой именно тип сервопривода у вас есть? Вы пробовали запитать сервопривод отдельно от более мощного источника питания?, @chrisl

Нет линии позиционирования сервопривода при нажатии «F» (myservo.write), я предполагаю, что это случайное упущение в опубликованном вами коде. Ваше описание симптомов указывает на то, что плата Arduino сбрасывается, предположительно, проблема с питанием. Полная электрическая схема поможет диагностировать вашу проблему., @Bra1n

@chrisl Я зарядил его зарядным устройством, но все равно не работает., @Rathore Brothers

Как именно вы питали его от зарядного устройства? Через USB-порт Arduino? В зависимости от потребляемой мощности сервопривода вы можете перегрузить там диод. Пожалуйста, попробуйте подключить сервопривод напрямую от зарядного устройства (не через Arduino). И скажите нам, какой у вас сервопривод, @chrisl

у меня сервопривод 9g, @Rathore Brothers

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


1 ответ


Лучший ответ:

0

Я попытался заменить кабель USB B на более качественный, и это сработало.

,

Это нормально, чтобы ответить на свой вопрос. Теперь, пожалуйста, отметьте это для будущих посетителей с похожей проблемой., @the busybee