在Arduino Uno上的2个引脚之间传递信息

时间:2018-05-12 12:28:57

标签: arduino

我对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.我在测量什么?

2 个答案:

答案 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个引脚。我会推荐其中一个。