首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Servo的串行I/O功能

Servo的串行I/O功能
EN

Stack Overflow用户
提问于 2016-03-07 14:59:17
回答 1查看 74关注 0票数 0

所以我把伺服电机连接到我的Arduino上的6号数字针脚上。我想输入一个数字到串口,并让伺服旋转到那个程度。

我试着做两个函数,

1)从串口请求和接收一个介于10和170之间的数字。如果无效,则要求重新进入。仅当数值正确时才返回。

2)接受一个度数参数,将该参数写为伺服度数,打印出状态:"Servo moved x ticks to y degrees“。

代码语言:javascript
复制
#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++的新手,我认为这可能只是变量混淆的问题。使用指针似乎也是一种选择,但尝试实现它们还没有走得太远。

EN

回答 1

Stack Overflow用户

发布于 2016-03-07 15:15:59

这对你来说应该是可行的:

函数recieveNum应将-1返回给indicator无效输入:

代码语言:javascript
复制
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.");
  }
  return -1; 
  ^^^^^^^^^
}

void loop() 
{
  if (Serial.available() != 0) 
  {
     if(-1 != recieveNum(deg))
     { // Valid '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);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35837910

复制
相关文章

相似问题

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