【发布时间】:2013-03-25 19:28:10
【问题描述】:
我正在与 2 个 Arduinos Leonardo 一起做一个通信系统。 为了传输,我必须将字符串转换为位并通过 PWM 引脚发送它们。 问题是,接收方怎么办?
我的想法是在数字引脚中接收数据,因此我可以将 LOW/HIGH 转换为“0”和“1”,将 8 位放入字符串中,转换为 char,然后我就有了最终的字符串。
任何帮助/建议将不胜感激。
编辑:
- 我使用PWM是因为我想实现FSK调制,逐位发送;
- 我有一些硬件可以让通信系统正常工作;
- 我的物理通信通道是串行(通过 Arduino 引脚);
- 在接收器中,硬件会为我提供 TTL 信号,所以我会有 0V/5V。这就是我认为 digitalRead() 应该起作用的原因;
- 数据通过 PWM 发送,并以两级信号接收;
- 我将不得不做一些协议来发送/接收数据,仍然不知道如何.. ;
【问题讨论】:
-
无论您做什么,确保接地!如果您不这样做,它们对 5V 的定义将不同,从而导致意外行为。 (简而言之)。另外,您为什么使用 PMW 引脚?您可以通过非 PMW 引脚发送数据。 PMW 只是非常快地打开-关闭(我什至不知道 Arduino 是否能读懂:有人请支持这个或争论这个 - 我不知道。)这可以模拟较低的电压来“调暗”一个 LED不会浪费一个模拟引脚。
-
@AnnonomusPerson 检查我的编辑信息。 “连接地面”是什么意思? PWM 工作正常,至少我在串行监视器中得到数据没有错误。
-
我的意思是从一个 Arduino 的地面到另一个。如果它是无线的,则无需执行此操作。电压只是与地的比较;如果有不同的接地但相同的能量,它们将是不同的电压。很难解释,我自己也不是很理解,但是有人在 SO 上将电路板连接在一起时遇到了问题,连接地面是解决方案。只是一般的经验法则,如果不同的电气组件通过电线连接,则连接接地。空间和时间用完了,稍后会解释。
-
为什么要让两个 Arduino 通过 FSK 进行通信?
-
其实我想要两个以上的 Arduino 进行交流。它将类似于无线中的环形链接,这意味着每个 Arduino 都将成为接收器/发射器。
标签: string serial-port arduino