我已經爲我的原型再次做了我的新代碼,我的問題是: 當arduino開始運行時,三臺SG90微型伺服電機同時旋轉360度,沒有停止。當我按下圓形按鈕時,它會減慢伺服電機的旋轉速度。SG90微型伺服電機按鈕Arduino自動售貨機Machie原型
當我試圖模擬我的程序123d.circuits.io,它的工作。由於沒有圓形按鈕,我使用了瞬時按鈕。
我想要實現的是:
當按鈕A/B/C被推動時,伺服電機A/B/C將旋轉360度,以分配一個項目爲我的自動售貨機的原型。
這是我的代碼。希望您能夠幫助我。
#include <Servo.h>
const int pushButtonA = 2;
const int pushButtonB = 4;
const int pushButtonC = 7;
Servo myservoA;
Servo myservoB;
Servo myservoC;
int pos = 0;
int buttonStateA = 0;
int buttonStateB = 0;
int buttonStateC = 0;
void setup() {
Serial.begin(9600);
pinMode(pushButtonA, INPUT);
pinMode(pushButtonB, INPUT);
pinMode(pushButtonC, INPUT);
myservoA.attach(3);
myservoB.attach(5);
myservoC.attach(9);
}
void loop() {
buttonStateA = digitalRead (pushButtonA);
buttonStateB = digitalRead (pushButtonB);
buttonStateC = digitalRead (pushButtonC);
if((buttonStateA == LOW) && (buttonStateB == HIGH) && (buttonStateC == HIGH)){
digitalWrite(3, HIGH);
for(pos = 0; pos <=360; pos++);
myservoA.write(pos);
delay(15);
digitalWrite(3, HIGH);
}
if((buttonStateB == LOW) && (buttonStateA == HIGH) && (buttonStateC == HIGH)){
digitalWrite(5, HIGH);
for(pos = 0; pos <=360; pos++);
myservoB.write(pos);
delay(15);
digitalWrite(5, HIGH);
}
if((buttonStateC == LOW) && (buttonStateB == HIGH) && (buttonStateA == HIGH)){
digitalWrite(9, HIGH);
for(pos = 0; pos <=360; pos++);
myservoC.write(pos);
delay(15);
digitalWrite(9, HIGH);
};
}
'爲(位置= 0; POS <= 360; POS ++);'相當於'POS = 361;' – MikeCAT
所以它應該是正<360? – Chrys
我的意思是'for'循環不會像循環一樣工作,因爲除了增加'pos'之外,它們沒有做任何工作。 – MikeCAT