Arduino电路开启LED而不是伺服

时间:2017-04-08 01:11:42

标签: arduino arduino-uno led

我有一个项目,我在面包板上有一个按钮,通过编程的Arduino激活伺服。目前,这是我的代码:

#include <Servo.h>

Servo sA;

int d=2;   // to store on or off value

void setup(){
  sA.attach(A0);
  pinMode(2,INPUT);
  pinMode(A0,OUTPUT);
  pinMode(13,OUTPUT);
  sA.write(90);
}

void loop(){
  d=digitalRead(2);
  if(d==0){
    sA.write(90);
    digitalWrite(13,HIGH);
  }elseThe
  sA.write(0);}
  digitalWrite(13,LOW);
} 

这里的LED是对按钮的测试(我遇到了问题)。按下按钮时,LED会在if语句中按照预期亮起。伺服(TowerPro MG995)直接连接到VEX 7.2伏电池供电,我知道这对电源有用。但是,该按钮不会激活伺服或根本没有注册响应。代码有问题吗?伺服的数据线直接连接到引脚A0,如代码所示。

2 个答案:

答案 0 :(得分:0)

我重写了您的代码,检查您的连接并尝试此代码:

#include <Servo.h>

Servo sA;

int d=2;   // to store on or off value
void setup(){
  pinMode(d, INPUT);
  sA.attach(9); //pin 9
  //sA.write(90); //will move to 90degrees
}

void loop(){
  if(digitalRead(d)==HIGH){
  sA.write(90);
  digitalWrite(13,HIGH);
  }
  else{
  sA.write(0);
  digitalWrite(13,LOW);
  } 
}

请记住,只有按下按钮才会移动伺服,如果松开,伺服将会返回。

答案 1 :(得分:0)

电气问题

提醒一下。伺服电机的最大电压为6.6V。完全充电的7.2V VEX电池将为8.4V,因为7.2V只是电池的平均电压(yep)。

代码问题

  • 无需放pinMode(A0, OUTPUT);

其他所有 似乎 确定。