문자열 및 정수 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”, 처음 두 숫자를 삭제했습니다!

인쇄를 원합니다 :

1234 2

도와주세요! 감사합니다!

Answer

lcd.print() 메소드는 문자열 또는 숫자를 논쟁이지만 동시에 둘다는 아닙니다. 연결에 + 연산자를 사용하는 것은 C 문자열에 고유하지 않습니다. C 문자열은 기본적으로 문자열의 첫 번째 문자에 대한 포인터로 저장됩니다. 따라서 lcd.print("1234 " + number)를 시도하고 "34 "를 얻었을 때 가장 가능성이 높은 것은 포인터를 앞당겨

(예 : “1”) by number (예 : 2), 따라서 포인터가 3 번째 문자가 문자열에 포함되어 lcd.print()"34 "가 표시됩니다. 문자열과 정수가 모두 포함 된 항목을 인쇄하려면 가장 간단한 방법은 각 조각을 Arduino 문자열로 변환 한 다음 이전에했던 것처럼 + 연산자를 사용하여 연결하는 것입니다.

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

다음은 몇 가지 예입니다. 충분히 큰 char 버퍼를 만들고 stdio.h에서 sprintf()를 사용하여 빌드 할 수도 있습니다. 정수와 문자열로 구성된 문자열. 자세한 내용은 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); 

Comments

  • 첫 번째 오류 코드가 1234 인 경우 다른 코드는 57입니다. 디스플레이에 " 5734 "가 표시됩니다. 맞습니까?

답변

문제 :

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

매개 변수의 수이며 플러스가 문자열 리터럴을 연결한다는 가정입니다.

lcd.print("1234 " + number); 

숫자가 2 일 때 “34”를 제공합니다. . 왜? 이는 문자열 리터럴 포인터에 2를 더한 결과이기 때문입니다. 즉, 문자 “3”에서 시작하는 문자열입니다. 대신 별도의 인쇄 문을 사용하십시오.

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

문자열을 연결하는 데 문자열을 사용하지 마십시오. 이는 SRAM, 처리 낭비이며 힙 조각화의 위험이 있습니다. AVR과 같은 소규모 임베디드 시스템에서는 단순히 나쁜 생각입니다.

이러한 오류를 이해하려면 돌아가서 C / C ++의 문자열 및 문자열 리터럴에 대해 읽어야합니다 (Java와 비교 :).

Cheers!

답변

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″입니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다