所以我把伺服電機連接到Arduino的數字引腳6上。 我想在串口中輸入一個數字,並讓伺服旋轉到那個程度。帶伺服的串行I/O功能
我試圖讓兩個功能,
1)詢問,並從10 & 170之間的串行端口接收到大量請求再入若無效。 只有在數字好的時候纔會返回。
2)取得程度參數,將參數寫爲伺服程度, 打印出狀態:「伺服將x記號移動到y度。」
#include <Servo.h>
Servo myServo;
int deg;
int degree;
int inputDeg;
int ang;
int angle;
int inputAng;
int servoMin = 10;
int servoMax = 175;
int recieveNum(int inputDeg) {
inputDeg = Serial.parseInt();
if (inputDeg >= 0 && inputDeg <= 180) {
Serial.println("You did great!");
return degree;
} else {
Serial.println("Hey! Try giving me a number between 0 and 180 this time.");
}
}
int servoTranslate(int inputAng) {
angle = map(degree, 0, 180, servoMin, servoMax);
return angle;
}
void setup() {
Serial.begin(9600);
myServo.attach(6);
}
void loop() {
if (Serial.available() == 0) {}
else {
recieveNum(deg);
int finalAng = servoTranslate(degree);
Serial.print(" Servo moved ");
Serial.print(degree);
Serial.print(" tick(s) to ");
Serial.print(finalAng);
Serial.println("º");
myServo.write(finalAng);
}
}
我對C++仍然很陌生,我認爲它可能只是一個變量被混淆的問題。使用指針似乎也是一種選擇,但還沒有試圖實現這些。
在'recieveNum()'你需要另一個'return'聲明在函數的結束。除此之外,你完全不清楚你在問什麼。 –