文字列と整数のLCDを印刷する

文字列と整数をLCDに印刷するにはどうすればよいですか?これが私が試したものです:

int number = 2; int result = (number + number); lcd.print(number, DEC + " plus " + number, DEC + " equals " + result, DEC); 

そして結果はエラーです。試してみると:

lcd.print(number + "look"); 

または

lcd.print("1234 " + number); 

次に、LCDの結果は次のようになります。 「34」、最初の2つの数字が削除されたので!

印刷したい:

1234 2

助けてください!ありがとう!

回答

lcd.print()メソッドは、文字列または数値を次のように受け取ります。引数ですが、一度に両方ではありません。連結に+演算子を使用することは、C文字列に固有のものではありません。 C文字列は、基本的に文字列の最初の文字へのポインタとして格納されます。したがって、lcd.print("1234 " + number)を試して"34 "を取得した場合、最も可能性が高いのは、ポインターを進めて

(ie “1”)by number(ie 2)、したがって、ポインタが 3rd 文字により、lcd.print()"34 "が表示されます。文字列と整数の両方を含むものを印刷するための最も簡単な方法は、各部分をArduino文字列に変換してから、前に行ったように+演算子を使用してそれらを連結することです。

 lcd.print(String("1234 ") + String(number)); lcd.print(String(number) + String(" plus ") + String(number) + String(" equals ") + String(result)); 

これらはいくつかの例です。十分な大きさのcharバッファーを作成し、stdio.hsprintf()を使用してビルドすることもできます。整数と文字列で構成される文字列。詳細については、C / C ++の教科書を参照してください。

回答

同じ問題が発生し、文字列を印刷して次のようにカーソルを移動して、同じ行の整数:

 lcd.setCursor(0, 0); <----------Column 0 , Line 1 lcd.print("This code failed"); lcd.setCursor(0, 1); <----------Column 0 , Line 2 lcd.print("Error Code = "); lcd.setCursor(13, 1); <-change the cursor for the INT. Column 13 , Line 2 lcd.print(int); 

コメント

  • どうなりますか最初のエラーコードがたとえば1234の場合、別のエラーコードは57です…ディスプレイには" 5734 "と表示されますよね?

回答

これの何が問題になっていますか:

lcd.print(number, DEC + " plus " + number, DEC + " equals " + result, DEC); 

これはパラメーターの数であり、plusが文字列リテラルを連結するという仮定です。

lcd.print("1234 " + number); 

これにより、数値が2の場合に「34」が得られます。 。 なぜ?これは、文字列リテラルポインタに2を追加した結果、つまり文字「3」で始まる文字列であるためです。代わりに、個別のprintステートメントを使用してください。

lcd.print("1234 "); lcd.print(number); 

文字列を連結するために文字列を使用しないでください。これはSRAM、処理の無駄であり、ヒープの断片化のリスクがあります。 AVRなどの小規模な組み込みシステムでは単に悪い考えです。

これらのエラーを理解するには、戻ってC / C ++の文字列と文字列リテラルについて読む必要があります(Javaと比較して:)。

乾杯!

回答

int a=0; float b=10.01; char str[16]; sprintf(str,"a=%d, b=%.2f, c=%d", a, b, 2); // use sprintf() to compose the string str lcd.print(str); 

出力は「a = 0、b = 10.01、c = 2」になります

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です