2017-04-17 12 views
0

現在、電卓を作ろうとしていますが、これはユーザーがIRリモートを使用して番号を入力する最初の部分です。Arduino出力の問題

現在のところ私の問題は、配列に入力した数値を文字列として出力しているので(後でそれらを組み合わせることができます)、奇数文字を出力しているときです。

これは、これまでの私のコードです:私はすべての私の値に入力した後、私は取得しています

#include <boarddefs.h> 
#include <IRremote.h> 
#include <IRremoteInt.h> 
#include <ir_Lego_PF_BitStreamEncoder.h> 


int RECV_PIN = 6; 
IRrecv irrecv(RECV_PIN); 
decode_results results; 

int part1digits = 0; 
String part1[16]; 
void setup() 
{ 
    Serial.begin(9600); 
    irrecv.enableIRIn(); // Start the receiver 
} 

void loop() { 
    if (part1digits <= 15) { 
    while (!irrecv.decode(&results)) { 
     /* DO NOTHING WHEN NO IR SIGNAL IS RECEIVED 
     This WHILE loop will run continuously, doing nothing 
     until there IS a signal received 
     */ 
    } 
    // if IR signals is received, then do this 
    getCode(); 

    part1digits++; 
    } else { 
    for (int i = 0; i <= 15; i++) { 
     Serial.print(part1[part1digits]); 
    } 
    // The while loop below is to 'stop' the program 
while(1){} 

    } 
} 

void getCode() { 
    if (results.value == 16738455) { 
    part1[part1digits] = "0"; 
    Serial.println(part1[part1digits]); 
    } 
    else if (results.value == 16724175) { 
    part1[part1digits] = "1"; 
    Serial.println(part1[part1digits]); 
    } 
    else if (results.value == 16718055) { 
    part1[part1digits] = "2"; 
    Serial.println(part1[part1digits]); 
    } 
    else if (results.value == 16743045) { 
    part1[part1digits] = "3"; 
    Serial.println(part1[part1digits]); 
    } 
    else if (results.value == 16716015) { 
    part1[part1digits] = "4"; 
    Serial.println(part1[part1digits]); 
    } 
    else if (results.value == 16726215) { 
    part1[part1digits] = "5"; 
    Serial.println(part1[part1digits]); 
    } 
    else if (results.value == 16734885) { 
    part1[part1digits] = "6"; 
    Serial.println(part1[part1digits]); 
    } 
    else if (results.value == 16728765) { 
    part1[part1digits] = "7"; 
    Serial.println(part1[part1digits]); 
    } 
    else if (results.value == 16730805) { 
    part1[part1digits] = "8"; 
    Serial.println(part1[part1digits]); 
    } 
    else if (results.value == 16732845) { 
    part1[part1digits] = "9"; 
    Serial.println(part1[part1digits]); 
    } 

    // Serial.println(results.value, HEX); 
    delay(250); // Delay, so you don't send 3 signals back to back 
    // while the button is depressed. 
    irrecv.resume(); // Receive the next value 
} 

出力の小さなスニペットは、次のとおりです。あなたが間違っを選択したため

ôïÿ9ÝKÏÞóõx;ÿoקÿ^Øè«ÙÝ™ë]^ �ßå¿n'Þ 

答えて

0

これが起こりますシリアル・モニタのボー・レート。コードは9600と言うので、そのボーレートでシリアルモニタが選択されていることを確認してください。

0

ボーレートをもう一度確認し、9600,38400または57600の間でボーレートを変更してください