디스플레이 문자 표시_2
정해진 문자를 디스플레이에 표시를 하는 것은 간단합니다. 3D 펜이 온도가 계속해서 변경되는 것을 표시를 하려면 조금 문제가 생깁니다.
아래와 같은 예제를 보겠습니다.
1#include "ssd1306.h" // 라이브러리 포함
2
3String str = "cremaker"; // 문자열 선언
4
5void setup()
6{
7 /* Replace the line below with ssd1306_128x32_i2c_init() if you need to use 128x32 display */
8 ssd1306_128x64_i2c_init();
9 ssd1306_fillScreen(0x00);
10 ssd1306_setFixedFont(ssd1306xled_font6x8);
11 ssd1306_printFixedN (0, 32, str, STYLE_BOLD, FONT_SIZE_2X); //문자열을 매개변수로 전달
12}
13
14
15void loop()
16{
17}
위와 같은 코드를 컴파일을 하면 다음과 같은 에러가 나타납니다.
cannot convert ‘String’ to ‘const char*’ for argument ‘3’
이 에러는 3번째 매개변수 에서 String에서 const char*로 변환이 안된다는 뜻입니다. * 기호는 포인터개념이 있어야 함으로 여기에서 설명드리진 않고
겉으로는 같은 문자열을 취급하지만 자료형이 달라 사용을 못합니다.
String을 사용하려면, String을 char 배열 형태로 바꿔주어야 합니다. 물론 char 를 사용하는 것이 메모리도 적게먹고 번거롭게 하지 안하도 되지만, 메모리 주소등과 같은 복잡한 개념을 이해하고 있어야 하기 때문에 String을 사용합니다.
toCharArray 함수를 사용하여 String을 char[] 로 변경해줍니다. 이 함수를 적용하면 다음과 같습니다.
1char ch[20]; // 문자 배열의 선언
2String str = "cremaker"; // 문자열 선언
3str.toCharArray(ch, str.length()); // 문자열을 문자 배열에 저장
위 코드는 사용예시입니다. str.length()는 str 변수 문자열의 길이를 반환합니다.
이제 첫번째 예제에 toCharArray 함수를 적용해보겠습니다.
1#include "ssd1306.h" // 라이브러리 포함
2
3char ch[20];
4String str = "cremaker"; // 문자열 선언
5
6void setup()
7{
8 str = str + "\n";
9 str.toCharArray(ch, str.length());
10
11 /* Replace the line below with ssd1306_128x32_i2c_init() if you need to use 128x32 display */
12 ssd1306_128x64_i2c_init();
13 ssd1306_fillScreen(0x00);
14 ssd1306_setFixedFont(ssd1306xled_font6x8);
15 ssd1306_printFixedN (0, 32, ch, STYLE_BOLD, FONT_SIZE_2X); //문자열을 매개변수로 전달
16}
17
18
19void loop()
20{
21}
8줄의 코드는 삽입된 이유는, 해당 코드 없이 업로드를 하면 마지막 문자가 짤려서 표시됩니다. 문자배열 끝에 n가 포함되어야 마지막 문자가 짤리지 않고 전체가 디스플레이에 표시가 됩니다.