2017-12-24 26 views
0

昨日私はArduinoでLoRaモジュールの作業を開始しました。どのように動作するかを理解するために、スケッチの例を使用しました。今度は、受信した値を確認して、LEDのオン/オフを切り替えるなど、特定の作業を行いたいと考えています。RA-02 SX1278データ出力でのLoRaの異常動作

私の問題は、受け取った値がLoRaライブラリの生の例のスケッチでは正しいが、それらを変数に格納しようとするとすぐに間違ってしまうことです。

受信した値を取得するために作成したコードは次のとおりです。

#include <SPI.h> 
#include <LoRa.h> 

void setup() { 
    Serial.begin(9600); 
    while (!Serial); 
    Serial.println("LoRa Receiver"); 

    if (!LoRa.begin(433E6)) { 
    Serial.println("Starting LoRa failed!"); 
    while (1); 
    } 
} 

void loop() { 
    // try to parse packet 
    int packetSize = LoRa.parsePacket(); 

    if (packetSize) { 
    // received a packet 
    Serial.print("Received packet '"); 
    byte buffer[packetSize]; 
    int index = 0; 
    // read packet 

    while (LoRa.available()) { 
     Serial.println((char)LoRa.read()); 
     buffer[index] = LoRa.read(); 
     index++; 
    } 
    char result = char(buffer); 
    Serial.println(result); 
    } 
} 

注:このコードのすべてではありません。私は部分的に私を助けるために例のスケッチを取った。

こののコンソール出力は次のようになります。

Received packet '3' with RSSI -73 
⸮ 
Received packet '4' with RSSI -85 
⸮ 
Received packet '5' with RSSI -84 
⸮ 
... 
Received packet '8' with RSSI -83 
⸮ 
Received packet '9' with RSSI -83 
⸮ 
Received packet '1' with RSSI -82 
⸮ 

送信者は、特別なものの16までカウントして、最初から開始し、何もしません。これはちょうど非常に基本的な仕事ですが、私はこの技術をあまりよく知らないので、私はこれをどのように働かせることができるのか分かりません。私が '?'の代わりに値を取得することを意味します。第2の問題は、10より大きい数字が1に縮小されるということです。

私はあなたに建設的な助けを与えることができますか、少なくとも私がこの仕事をする方法を示唆してくれることを願っています。

答えて

0
char result = char(buffer); 
Serial.println(result); 

あなたはchar、ない10進値を印刷しています。そう、ええ、シングルバイトの奇妙な文字を持つことを期待しています。

uint8_t result = char(buffer); 
Serial.println(result); 

関連する問題