与伺服和直流电机发生冲突

时间:2018-06-04 15:23:07

标签: arduino

我正在建造一个避开机器人的障碍物并正在测试我的电机护罩(Adafruit Motor Shield V2 for Arduino)。 我将直流电机的代码上传到arduino uno,这是简单运动的基本代码,但我的伺服似乎也在运行。

如何停止并仅检查直流电机?

连接是:

  • 伺服引脚连接到motorhield上的ser1。
  • ultrasonicsensors' gnd和vcc分别为gnd和5v的arduino
  • 分别对A4和A5进行触发和回声
  • 电机屏蔽上的M1和M2直流电机
  • 最后将motorhield转移到arduino。

这是我更新的电机代码:

#include<AFMotor.h>
AF_DCMotor rmotor(1, MOTOR12_1KHZ);
AF_DCMotor lmotor(2, MOTOR12_1KHZ);

void setup() {
  Serial.begin(9600);
  rmotor.setSpeed(255);
  lmotor.setSpeed(255);
}
void loop() {
  rmotor.run(FORWARD);
  lmotor.run(FORWARD);
  delay(5000);
  rmotor.run(FORWARD);
  lmotor.run(BACKWARD); delay(1000);
  rmotor.run(FORWARD);
  lmotor.run(FORWARD);
  delay(5000);
  rmotor.run(BACKWARD);
  lmotor.run(FORWARD);
  delay(500); // put your main code here, to run repeatedly:
}

1 个答案:

答案 0 :(得分:-1)

一般。如果你不关心测试伺服,你可以拔掉它(然后它会关闭)。如果你想让它保持插入,但你不想让它移动,那么你实际上需要设置一个角度,以便Arduino can keep it fixed in one place

所以你可能只是希望将伺服系统固定在90度(中点),或许是这样的:

#include<AFMotor.h>
#include <Servo.h>

AF_DCMotor rmotor(1, MOTOR12_1KHZ);
AF_DCMotor lmotor(2, MOTOR12_1KHZ);
Servo servo;

void setup() {
  Serial.begin(9600);
  rmotor.setSpeed(255);
  lmotor.setSpeed(255);

  servo.attach(9);
  server.write(90);  // set servo to mid-point
}
void loop() {
  rmotor.run(FORWARD);
  lmotor.run(FORWARD);
  delay(5000);
  rmotor.run(FORWARD);
  lmotor.run(BACKWARD); delay(1000);
  rmotor.run(FORWARD);
  lmotor.run(FORWARD);
  delay(5000);
  rmotor.run(BACKWARD);
  lmotor.run(FORWARD);
  delay(500); // put your main code here, to run repeatedly:
}