首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每次我送些钱的时候,伺服都会保持它的位置

每次我送些钱的时候,伺服都会保持它的位置
EN

Stack Overflow用户
提问于 2022-06-23 12:51:43
回答 1查看 38关注 0票数 -1

我想用蓝牙护城河控制我的伺服系统。我给出了旋转它的某些值。但是,当我按下这些值时,伺服系统会旋转,但又保持了原来的位置,pc机也会发出arduino板断开的声音,因为我用我的pc机供电(也尝试用powerbank )。

这是我的密码

代码语言:javascript
复制
#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

EN

回答 1

Stack Overflow用户

发布于 2022-06-23 13:42:50

您的else if (data=='B'){位于错误的位置--它是if(Serial.available() > 0) {条件的一部分--而不是if(data == 'F'){条件。注意前面一行中的双}}

我已经更正了代码并对其进行了修改,这样您就可以清楚地看到匹配的开始和结束大括号。

这适用于通过串行监视器传递命令的Tinkercad电路 --所以想象一下它可以很好地从蓝牙接收命令。

代码语言:javascript
复制
#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);
      }
    }
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72730486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档