Arduino 与伺服电机和直流电机冲突

Arduino 与伺服电机和直流电机冲突,arduino,Arduino,我正在建造一个避障机器人,并测试我的马达护罩(Arduino的Adafruit马达护罩V2)。 我将直流电机的代码上传到arduino uno上,这是简单运动的基本代码,但我的伺服似乎也在运行 如何使其停止并仅检查直流电机 连接为: 伺服销连接至motorshield上的ser1 超声波传感器的gnd和vcc分别与arduino的gnd和5v相连 分别触发和回显至A4和A5 直流电机至电机屏蔽上的M1和M2 最后,摩托盾牌进入arduino 这是我更新的电机代码: #include<A

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

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

连接为:

  • 伺服销连接至motorshield上的ser1
  • 超声波传感器的gnd和vcc分别与arduino的gnd和5v相连
  • 分别触发和回显至A4和A5
  • 直流电机至电机屏蔽上的M1和M2
  • 最后,摩托盾牌进入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个,电机12个1KHZ);
自动对焦电机(2个,电机12个1KHZ);
无效设置(){
Serial.begin(9600);
电机设定速度(255);
l电机设定转速(255);
}
void循环(){
跑(向前);
l电机运行(前进);
延迟(5000);
跑(向前);
电机运行(向后);延迟(1000);
跑(向前);
l电机运行(前进);
延迟(5000);
rmotor.运行(向后);
l电机运行(前进);
delay(500);//将主代码放在这里,以便重复运行:
}

一般情况下。如果你不关心测试伺服,你可以拔下它(然后它会关闭)。如果你想让它插上电源,但你不想让它移动,那么你实际上需要把它设置成一个角度,这样它就可以移动了

因此,您可能只想将伺服系统固定到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:
}
#包括
#包括
自动对焦电机(1个,电机12个1KHZ);
自动对焦电机(2个,电机12个1KHZ);
伺服;
无效设置(){
Serial.begin(9600);
电机设定速度(255);
l电机设定转速(255);
伺服。连接(9);
server.write(90);//将伺服设置为中点
}
void循环(){
跑(向前);
l电机运行(前进);
延迟(5000);
跑(向前);
电机运行(向后);延迟(1000);
跑(向前);
l电机运行(前进);
延迟(5000);
rmotor.运行(向后);
l电机运行(前进);
delay(500);//将主代码放在这里,以便重复运行:
}

u是指将其固定在0度或类似于tat的位置???包括AF\u DC电机rmotor(1,电机12\u 1KHZ);自动对焦电机(2个,电机12个1KHZ);void setup(){Serial.begin(9600);rmotor.setSpeed(255);lmotor.setSpeed(255);}void loop(){rmotor.run(前进);lmotor.run(前进);delay(5000);rmotor.run(前进);lmotor.run(后退);delay(1000);rmotor.run(前进);delay(5000);rmotor.run(后退);lmotor.run(前进);delay(500);//把主代码放在这里,重复运行:}这是我为arduino编写的代码。同时也感谢你的回复。是的,没错,因为你要让你的伺服插上电源,你可能想在某种程度上修复它。中点(90)可能是一个不错的选择。我不建议尝试将其修正为0或180,极端值可能会有所不同(如果伺服未校准)。您正在为Arduino使用Adafruit Motor Shield V2?