我想用蓝牙护城河控制我的伺服系统。我给出了旋转它的某些值。但是,当我按下这些值时,伺服系统会旋转,但又保持了原来的位置,pc机也会发出arduino板断开的声音,因为我用我的pc机供电(也尝试用powerbank )。
这是我的密码
#include <Servo.h>
Servo myservo;
int pos = 0;
char data = 0;
void setup() {
myservo.attach(9);
Serial.begin(9600);}
void loop(){
if(Serial.available() > 0){
data = Serial.read();
if(data == 'F'){
// for (pos = 0; pos <= 180; pos += 1) even this line dosent work
myservo.write(180);
delay(1);
}}
else if(data == 'B'){
// for (pos = 180; pos >= 0; pos -= 1) even this line dosent work
myservo.write(0);
delay(1);
}}连接伺服红线- 5v (不工作在3.3v)橙色线. pin9棕色线- gnd
蓝牙(hc05) 5v -- 5v gnd -- gnd tx rx
发布于 2022-06-23 13:42:50
您的else if (data=='B'){位于错误的位置--它是if(Serial.available() > 0) {条件的一部分--而不是if(data == 'F'){条件。注意前面一行中的双}}。
我已经更正了代码并对其进行了修改,这样您就可以清楚地看到匹配的开始和结束大括号。
这适用于通过串行监视器传递命令的Tinkercad电路 --所以想象一下它可以很好地从蓝牙接收命令。
#include <Servo.h>
Servo myservo;
int pos = 0;
char data = 0;
void setup() {
myservo.attach(9);
Serial.begin(9600);
}
void loop() {
if(Serial.available() > 0) {
data = Serial.read();
if(data == 'F'){
for (pos = 0; pos <= 180; pos += 1) {
myservo.write(pos);
delay(1);
}
}
else if(data == 'B'){
for (pos = 180; pos >= 0; pos -= 1) {
myservo.write(pos);
delay(1);
}
}
}
}https://stackoverflow.com/questions/72730486
复制相似问题