2017-04-08 87 views
0

我有一個項目,我有一個麪包板上的按鈕,通過編程的Arduino激活伺服器。目前,這是我的代碼:Arduino電路打開LED而不是伺服

#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。

+0

在寫入引腳之前放了一段延遲,您正試圖立即旋轉它。你應該考慮一般的電子設備,這是否正確?不知道,這是你現在如何寫在arduino的else語句? – Roljhon

回答

0

我改寫了你的代碼,請檢查您的conections和試試這個代碼:

#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); 
    } 
} 

請記住,只有當按下按鈕,伺服將移動,如果你釋放它會支持。

0

電氣故障

只是一個提醒。您的伺服器的最大電壓爲6.6V。充滿電的7.2V VEX電池的電壓爲8.4V,因爲7.2V只是電池的平均電壓(yep)。


代碼問題

  • 沒有必要把pinMode(A0, OUTPUT);

其他一切似乎確定。