-1

我是编码新手,在过去的几天里,我一直在尝试通过在连接到 HC 05 蓝牙模块的手机上的应用程序上键入 1 来使伺服旋转 180 度。当我输入 1 时,伺服旋转 180 度,当我输入 0 时,伺服旋转 180 度,反之亦然。到目前为止,这就是我通过组合不同代码的位所做的。你能帮忙解决什么问题吗?(我真的不明白)这是代码:

 #include <Servo.h>
 char data = 0; 
 int pos = 0;      
 Servo servo;

 void setup() 
 {
 servo.attach(9);
 }

 void loop(){
 data = Serial.read();      
 Serial.print(data);     
 Serial.print("\n");         
 if(data == '1')            
 digitalWrite(pos = 0; pos <= 180; pos += 1) {
 servo.write(pos);              
 delay(15); 

else if(data == '0')
digitalWrite(pos = 180; pos >= 0; pos -= 1) { 
servo.write(pos);              
delay(15);
}
}

感谢您的时间!

PS:拼写错误请见谅

4

1 回答 1

0

你可能想要这样的东西:

#include <Servo.h>

int data = 0;
int pos = 0;

int degrees = 30;
//int degrees = 180;

Servo servo;

void setup()
{
    Serial.begin(9600);
    servo.attach(9);
}

void loop(){

    if (Serial.available() > 0) {

        data = Serial.read();
        Serial.println(data);

        if(data == '1') {
            for (pos = 0; pos <= degrees; pos++) {
                servo.write(pos);
                delay(15);
            }
        }
        else if(data == '0') {
            for (pos = degrees; pos >= 0; pos--) {
                servo.write(pos);
                delay(15);
            }
        }
    }
}

首先尝试 30 度,因为并非所有舵机都支持 180 度。

于 2020-03-24T15:57:58.737 回答