2台のArduinos Leonardoで通信システムをやっています。送信するには、文字列をビット単位で変換し、PWM ピン経由で送信する必要がありました。問題は、受信機をどうするかです。
私の考えは、デジタル ピンでデータを受信することです。そのため、LOW/HIGH を「0」と「1」に変換し、8 ビットを文字列に入れ、char に変換すると、最終的な文字列が得られます。
いくつかの情報: - FSK 変調を実装し、ビットごとに送信したいので、PWM を使用しています;- - 通信システムを動作させるためのハードウェアがあります。- 通信用の物理チャネルはシリアル (Arduino ピン経由) です。- 受信機のハードウェアは TTL 信号を提供するので、0V/5V になります。だからこそ、digitalRead() が機能するはずです。- データは PWM 経由で送信され、2 つのレベルの信号で受信されます。- データを送受信するために何らかのプロトコルを実行する必要がありますが、まだ方法がわかりません...
これは私が書いたコードです:
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);
}
}
}
このコードで、digitalRead の HIGH/LOW 状態を文字列に変換する必要があります。0/1 -> 文字 (outChar) -> 文字列 (inMessage)。私の考えが間違っているかどうかはわかりません。提案?データを送受信するためにボーレートについて何かする必要がありますか? どのように?
ヘルプ/提案をいただければ幸いです。