我正在阅读红外夏普距离传感器:
http://www.robofun.ro/senzori/infrarosu/senzor_sharp_%20GP2D120XJ00F
通过阅读,我正在命令伺服系统将机器人引导到墙壁上,这是一个非常简单的地图并编写代码。
我遇到的问题是传感器读数偏离了方向,没有表现出线性...我知道其他人使用这些传感器很好,我知道它们的接线很好。
我的问题是如何消除发送到伺服的任何振荡?机器人在距离墙壁固定距离处静止不动,我得到 1 到 3 度的振动。
下面你有我的代码:
#include <Servo.h>
Servo myservo;
int val;
int val1;
int IRpin = A7;
// analog pin for reading the IR sensor
void setup() {
myservo.attach(3);
Serial.begin(9600); // start the serial port
}
void loop() {
float volts = analogRead(IRpin);
delay(100);
val1 = map(volts, 230,500, 0 ,100);
val = map(val1, 0, 100, 100, 80);
myservo.write(val);
Serial.println(val);
}
请注意,双重映射是必要的,否则变化会更糟。
感谢任何愿意花时间回答这个问题并帮助我的人......
LE:我已经考虑过滞后,但我想要一些不会因不必要的读数和计算而浪费时间的东西。