★ 이전 시간에 millis() 함수를 학습해보았습니다. 그래서 이번 시간은 Serial 통신의 두번째 시간을 가져볼까 합니다.
★★ 준비 ★★
◎ 아두이노 보드 ( 본 예제는 아두이노 시리즈 중 UNO 보드를 사용했습니다 )
1. 아두이노 millis() 사용하기에서 작성된 코드 입니다
◎ 위 작성된 코드는 1초마다 현재 시간을 출력하도록 한 코드입니다. ( 자세한 내용은 4. millis() 학습참고 )
2-1. 위 코드의 Serial.println()함수를 Serial.print() 함수로 변경해봅니다
◎ Serial.println(now); 함수를 사용할때는 줄바꿈이 자동으로 입력되었었습니다.
◎ Serial.print(now); 함수는 위 이미지와 같이 줄바꿈이 자동으로 생성되지 않습니다.
※ 두 함수의 차이는 바로 줄바꿈을 자동으로 해주냐? 안해주냐의 차이입니다.
2-2. Serial.print()함수는 아래와 같이 사용이 가능합니다.
◎ 문자열 또는 문자와 데이터를 한줄로 표기하고 싶은 경우 사용합니다.
2-3. Serial.print()도 아래와 같이 줄 바꿈을 할 수 있습니다.
◎ '\n'은 줄바꿈(개행, new line) 문자라고 생각하시면 편합니다.
( C 언어를 배우신분은 printf(".... \n"); 으로 출력할때 끝에 붙이는 '\n' 과 동일합니다 )
◎ 다음은 줄을 바꾸기 위한 방법을 몇가지 표기합니다.
○Serail.println(now); 이렇게 사용해도 줄을 바꿀 수 있습니다
○Serial.println();함수를 밑에 한번 더 추가해줌으로써 줄바꿈을 실행할 수 있습니다.
※ 위(2-3) 이미지 코드는 모두 동일한 작업을 실행하는 코드들입니다. 상황과 스타일에 맞게 골라서 사용하면 됩니다.
2-4. ( 2-3 )은 라인수가 많습니다. Serial.print(); 함수 하나만 사용해서 위에 기능을 작성할 수 있습니다.
◎ 큰 따옴표는 문자열이라고 지난 시간에 이야길 했습니다. 문자열과 문자는 위 코드와 같이 ' + ' 를 이용하여 붙이기를 할 수 있습니다.
단! 위 코드는 정상적으로 동작이 될까요?
답은, 아닙니다. 쓰레기값(알수없는값)이 올라올 가능성이 높습니다.
이유는 뭘까요? ' + ' 는 문자열 또는 문자를 붙일 수 있다고 했습니다. 근데, now 의 타입은 정수형입니다. 즉, 숫자이기에 문자열 또는 문자가 아니라고 생각하고 쓰레기 값 또는 오류 발생될 확률이 높습니다.
◎ 위 코드처럼 String(now) , 즉 String() 으로 감싸버리면 해당 정수형 타입이 String 타입으로 변환되어서 문자열로 바뀌어 정상 출력이 되는겁니다.
★ 위 타입 변환에 대한 내용은 기초를 배우는 분들에게 매우 중요한 내용입니다.
그럼 Serial.println("현재 시간 : " + String(now)); <-로 출력을 해보면 어떤 결과가 나올까요? 한번 변경해보시기 바랍니다.
★ 여러분들은 지금까지 Serial 통신과 millis() 함수를 배우셨습니다. 이제 여러분들은 IOT코아 앱과 IOT리아 앱을 이용하요즘 핫 이슈인, 사물인터넷을 만들어볼 수 있는 수준의 레벨까지 올라오신거라 보시면 됩니다.
원래 이번 주제에서 다룰려고 하였으나, 내용이 길어질거 같아서 다음 6. 에서 IOT코아 & IOT리아 앱을 사용하는 방법을 익혀보도록하겠습니다.( 사물인터넷 어렵지 않습니다. )
'아두이노 기초 학습' 카테고리의 다른 글
7. 아두이노 1시간 학습 후 사물인터넷(IOT) 1분 적용 두번째시간 (0) | 2022.12.12 |
---|---|
6. 아두이노 1시간 학습 후 사물인터넷(IOT) 1분 적용 (0) | 2022.12.09 |
4. 아두이노 millis() 사용하기 (0) | 2022.12.09 |
3. 아두이노 Serial 사용하기 (0) | 2022.12.08 |
2. 아두이노 스케치 (0) | 2022.12.08 |
댓글