아두이노에서 직렬 통신 또는 LCD 등에 문자열을 출력할 수 있다. 이때, format을 가진 내용을 단순히 print( )라는 함수만으로 구현하기는 귀찮은 면이 있다. 이때 사용하는 함수가 sprintf( )이다. 이 함수는 아두이노를 구성하는 AVR에서 제공하는 함수이다.
int sprintf( char *buffer , const char *format[,argument]...)
C-언어에서 printf( )가 문자열을 화면에 출력하는데 비해 sprintf( )는 첫번째 매개변수인 buffer에 출력한다. 즉, 출력할 내용이 문자열 buffer에 저장된다. 이 문자열 buffer[ ]를 전송하면 format이 있는 양식으로 직렬포트 또는 LCD에 출력할 수 있다.
char buffer[20];
int num1 = 12345;
char c = 'A';
char str[] = "Hello";
sprintf(buffer , "%6d , %x, %c, %s", num1, num2, c, str);
Serial.print(buffer);
그런데 아두이노에서는 실수(float, double)를 sprintf( )로 출력하면 정상적인 값이 출력되지 않고 '?'가 출력된다.
이 때 dtostrf( )를 이용하여 실수를 문자열로 변환한 후 sprintf( ) 등으로 format을 지정할 수 있다.
char* dtostrf( double _val, signed char _width, unsigned char _prec, char *_s)
_val : 변환하고자 하는 double, float 데이터
_width : 소수점을 포함한 전체 자릿수
_prec : 소수점 이하 자릿수
_s : 변환된 문자열. 문자열을 선언할 때 적어도 _width+1 이상의 크기를 가져야 정상적으로 저장된다.
char temp[20];
char buffer[20];
int i = 123;
float f = 32.4;
char c = 'A';
char str[] = "Hello";
dtostrf(f, 4, 1, temp);
sprintf(buffer, "%d , %s , %c , %s", i, temp, c, str);
Serial.print(buffer);

'개발자 > Arduino' 카테고리의 다른 글
| Decoding and Encoding JSON with Arduino Nano 33 IoT 3 (0) | 2020.10.12 |
|---|---|
| Decoding and Encoding JSON with Arduino Nano 33 IoT 1 (0) | 2020.10.10 |
| Decoding and Encoding JSON with Arduino Nano 33 IoT 2 (0) | 2020.10.09 |
| ArduinoJson 데이터의 Decoding / Ecoding 예제 (0) | 2020.10.08 |
| SSD1306 OLED 로 LM35 온도센서 값을 디스플레이 (0) | 2020.10.07 |
| 달리기와 술자리도 마다하고, 여기까지 돌아가는 코드 (0) | 2020.10.06 |
| Nano 33 IoT 보드 온도 습도 센서 dht11 테스트 (0) | 2020.10.06 |
| Nano 33 IoT 보드 간단한 서버 만들고 AP로 동작 (0) | 2020.10.03 |
취업, 창업의 막막함, 외주 관리, 제품 부재!
당신의 고민은 무엇입니까? 현실과 동떨어진 교육, 실패만 반복하는 외주 계약,
아이디어는 있지만 구현할 기술이 없는 막막함.
우리는 알고 있습니다. 문제의 원인은 '명확한 학습, 실전 경험과 신뢰할 수 있는 기술력의 부재'에서 시작됩니다.
이제 고민을 멈추고, 캐어랩을 만나세요!
코딩(펌웨어), 전자부품과 디지털 회로설계, PCB 설계 제작, 고객(시장/수출) 발굴과 마케팅 전략으로 당신을 지원합니다.
제품 설계의 고수는 성공이 만든 게 아니라 실패가 만듭니다. 아이디어를 양산 가능한 제품으로!
귀사의 제품을 만드세요. 교육과 개발 실적으로 신뢰할 수 있는 파트너를 확보하세요.
지난 30년 여정, 캐어랩이 얻은 모든 것을 함께 나누고 싶습니다.
귀사가 성공하기까지의 긴 고난의 시간을 캐어랩과 함께 하세요.
캐어랩