带伺服的串行 I/O 功能
Serial I/O functions with Servo
所以我将伺服电机连接到Arduino上的数字引脚6。我想在串行端口中键入一个数字,并让伺服器旋转到该度数。
我正在尝试制作两个函数,
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
应返回指标无效输入-1
:
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);
}
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 多态性和功能结合
- 带内存和隔离功能的SQLite
- 在CMakeLists.txt的安装功能中使用.cmake文件有什么用
- 类模板的成员功能的定义在单独的TU中完全专业化
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 如何在C++中获得"静态纯虚拟"功能?
- 两个文件使用彼此的功能-如何解决
- 我应该实现右值推送功能吗?我应该使用std::move吗
- 如何为伺服电机创建中断或返回值?
- 如何使用Arduino控制伺服电机
- 伺服电机一直试图达到134°以下,出了什么问题?
- 串行和 Arduino 伺服库的问题
- 请求在"伺服控制器"中请求成员"附加",该成员属于非类类型"int"
- 带伺服的串行 I/O 功能
- Arduino:如果在构造函数中使用了 this->object.attach(pin),则带有伺服的类会破坏伺服行为
- CentOS 5.7 存取系統呼籲在 apache Web 伺服器檢查檔案是否存在時返回 EACCES
- 连接传感器后,Arduino驱动的伺服电机停止工作
- 编码时很难分配伺服器
- 伺服转换应该具有什么抽象级别