我对Arduino很陌生,我想弄清楚如何连接2个引脚,然后从一个引脚输出信息(或PWM),并在另一个引脚上输入。
到目前为止,我尝试了这个但它只显示相同的数字(~500到440),即使我断开了引脚:
int pin_out = 9;
int pin_in = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
analogWrite(pin_out, 255);
delay(500);
Serial.println(analogRead(pin_in));
}
编辑:
我设法用这段代码测量一些信号:
int pin_out = 9;
int pin_in = 0;
void setup() {
Serial.begin(9600);
pinMode(pin_out, OUTPUT);
pinMode(pin_in, INPUT);
}
void loop() {
analogWrite(pin_out, HIGH);
Serial.println(pulseIn(pin_in, HIGH));
delay(500);
analogWrite(pin_out, LOW);
Serial.println(pulseIn(pin_in, HIGH));
delay(500);
}
信号范围从0到9.我在测量什么?
答案 0 :(得分:2)
如果使用PWM,请使用pulse()函数进行测量。模拟读取无法帮助你。
这是一个有趣的问题。也许尝试使用远离彼此的引脚,因为大气噪声可能会破坏信号。
答案 1 :(得分:1)
两个引脚之间的通信可能是棘手的,PWM信号主要用于与需要来自< 0,2000>的输入值的电动机或设备通信。范围。
确保您的Arduino引脚可以使用analogWrite生成PWM信号。在大多数arduino板中,可用作PWM输出的引脚在其周围标有白色圆圈。如果你看不到他们中的任何一个,请在文档中查看。
在我看来,如果你真的想用2个引脚与PWM相似的信号进行通信,你应该使用Servo.h库。使用write()方法,您可以轻松生成PPM信号。您可以使用pulseIn函数读取它,但我建议使用中断,因为它更快。
实际上已经创建了名为UART的2针通信协议。如果你想发送超过< 0,2000>的数据,你可以尝试使用softwareSerial或类似的东西。值。 I2C也使用2个引脚。我会推荐其中一个。