我正在用 2 Arduinos Leonardo 做一个通信系统。要传输,我必须将字符串转换为位并通过 PWM 引脚发送它们。问题是,我该如何做接收器?
我的想法是在数字引脚中接收数据,因此我可以将 LOW/HIGH 转换为“0”和“1”,将 8 位放入字符串中,转换为 char,然后我就有了最终的字符串。
一些信息:-我正在使用 PWM,因为我想实现 FSK 调制,逐位发送;--我有一些硬件可以使通信系统正常工作;- 我的物理通信渠道是串行(通过 Arduino 引脚);- 在接收器硬件中会为我提供 TTL 信号,所以我会有 0V/5V。这就是为什么我认为 digitalRead() 应该起作用的原因;- 数据通过 PWM 发送,并以两级信号接收;- 我必须做一些协议来发送/接收数据,但仍然不知道如何......
这是我写的代码:
void setup() {
Serial.begin(9600);
while (!Serial) {;}
}
void loop() {
char bitPosition = 0;
String inMessage = 0;
while (Serial.available() > 0) {
char outChar;
boolean digValue = digitalRead(inPin);
for(bitPosition = 7; bitPosition >= 0; ){
if(digValue == LOW){
bitWrite(outChar, bitPosition, 0);
}
if(digValue == HIGH){
bitWrite(outChar, bitPosition, 1);
}
bitPosition--;
}
inMessage.concat(outChar);
if(inMessage != 0){
Serial.println("Received: " + inMessage);
}
}
}
我希望此代码将数字读取中的高/低状态转换为字符串。0/1 -> 字符 (outChar) -> 字符串 (inMessage)。我不知道我是不是想错了。建议?我应该对波特率做些什么来接收/传输数据吗?如何?
任何帮助/建议将不胜感激。