전시간에 우리는 LCD창에 메시지를 출력해보았습니다. 하지만 정보를 변경하려면 코드를 직접수정해줘야 했죠. 그래서 이번시간에는 sprintf라는 것을 활용하여 변경되는 정보를 LCD창에 출력해보도록 하겠습니다.
그렇다면 sprintf는 무엇일까요?
str이 가리키고 있는 배열에 문자열을 입력하는 것이라고 생각하면 됩니다.
printf를 썻을때는 화면에 문장이 출력되었다면 sprintf는 화면대신 str배열에 문장이 출력되는 것이지요. 이때 주의할점이 있습니다. sprintf는 str배열의 끝에 NULL을 추가하기 때문에 공간의 여유가 필요합니다.
#include <stdio.h>
int sprintf ( char * str, const char * format, ... );
회로구성은 아래 자료를 확인해주세요!
2017/07/31 - [[아두이노]] - 아두이노 기초 9. LCD디스플레이 제어하기
그럼이제 코드를 수정해봅시다. 지난시간에 했던 LCD창에 메시지를 출력하는 코드입니다.
void setup()
{
Serial.begin(9600);
}
void loop()
{
Serial.print("$CLEAR\r\n");
Serial.print("$GO 1 4\r\n");
Serial.print("$PRINT Welcome to\r\n");
Serial.print("$GO 2 4\r\n");
Serial.print("$PRINT Sizz blog\r\n");
delay(1000);
}
Serial.print()안에 문자열을 입력하여 출력하고 있습니다. 우리는 Serial.print()를 사용하기전에 문자열에 원하는 내용을 미리 완성 시킬 것입니다.
예를들어 sprintf(str,"$PRINT Welcome to %d\r\n", number); 이런식으로 문장안에 숫자형 자료를 추가할수 있게 되죠.
int count=0;
char str[40];
void setup()
{
Serial.begin(9600);
}
void loop()
{
sprintf(str,"$PRINT COUNT : %d \r\n",count++);//str에 숫자count저장
Serial.print("$CLEAR\r\n");
Serial.print("$GO 1 3\r\n");
Serial.print(str);//str문자열 자체를 출력
Serial.print("$GO 2 3\r\n");
Serial.print("$PRINT Sizz blog\r\n");
delay(1000);
}
count = 0 이라 변수를 선언후 1씩증가시키며 그것을 LCD로 보여주는 코드입니다.
str[40](배열의 크기를 적절히 설정하지 않으면 count가 초기화 될수 있습니다.) 문자열에 COUNT : %d(count)를 저장한뒤 Serial.print(str)로 str문자열 전체를 출력해주고 있죠. 이처럼 sprintf를 할때 LCD 시리얼 관련 코드 ex)$PRINT 를 추가하여 사용하시면 됩니다.
'[아두이노]' 카테고리의 다른 글
아두이노 기초 9. LCD디스플레이 제어하기 (0) | 2017.07.31 |
---|---|
아두이노 기초 8. 아날로그(analog) 입력 (1) | 2017.07.30 |
아두이노 기초 7. analog(아날로그) 출력 (0) | 2017.07.28 |
아두이노 기초 전 과정 목록 (0) | 2017.07.27 |
아두이노 기초 6. 시리얼 통신(UART) 하기 (2) | 2017.07.27 |