2017-12-24 4 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까지 카운트 아무것도하지 않습니다. 이것은 단지 기본적인 작업 일 뿐이지 만이 기술에 익숙하지 않으므로 어떻게 작동시킬 수 있는지 이해할 수 없습니다. 나는 '대신'값을 얻는다는 것을 의미합니까? 두 번째 문제는 10보다 큰 숫자가 1로 축소된다는 것입니다.

이 작업을 수행하는 데 도움이되거나 최소한 힌트를 줄 수 있기를 바랍니다.

답변

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

십진수가 아닌 char을 인쇄하고 있습니다. 그래서 예, 싱글 바이트 이상한 문자가있을 것으로 예상됩니다.

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

당신에게 앞장설 것입니다.