728x90

아두이노의 Serial.write() 함수는  Serial 포트에 하나의 바이트 또는 그 이상의 바이트를 전송하는데 사용합니다. 주로 데이터 통신을 구현할 때 사용되며 Serial.print() 함수와 구분되어 사용합니다.

Serial.write() 함수는 숫자를 전송할 때 숫자 있는 그대로 전송합니다. 이는 숫자를 ASCII 코드로 변환하여 전송하는 Serial.print() 함수와 구분되며 일부 매개변수 입력에도 차이가 있습니다.

 

Serial.write()

 

Serial.write(val);
Serial.write(str);
Serial.write(buf, len);

매개변수(Parameters)
val : 1 바이트 데이터(0x00 ~ 0xFF)
str : 문자열(ex ‘A’, “Hello”)
buf : byte형 배열에 저장된 데이터, len 만큼 바이트 전송

반환값(Return)
size_t: write() : 전송한 byte 수

 

 

byte buff[10] = { 64, 'A', 0x42, 67, 68, 69, 70, 71, 72, 73};
 
void setup() {
  Serial.begin(115200);
}
 
void loop() {
  Serial.write(64);
  Serial.write("abc");
  Serial.write(buff, 5);
  Serial.println(" ");
  delay(1000);
}

위 예제를 아두이노 보드에 업로드하고 시리얼 모니터로 실행 결과를 보면 “@abc$ABCD” 이 반복적으로 출력될 것입니다.

하나씩 살펴보면

시리얼 모니터에서 수신된 <64>를 ASCII 값으로 판단하고 이에 해당하는 문자 ‘@’을 출력합니다. 문자열은 그대로 출력하여 “abc”가 이어서 출력되고 byte형 배열 중 5개의 데이터는 숫자는 ASCII 문자로, 문자는 문자로 출력합니다.

<64> → ‘@’
“abc” → “abc”
<36> → ‘$’
‘A’ → ‘A’
<0x42> → ‘B’
<67> → ‘C’
<68> → ‘D’

 

참고

아두이노 시리얼 모니터는 수신된 데이터를 ASCII 코드의 문자로 변화하여 출력합니다.  raw 데이터를 확인하기 위해서는 헥사(16진수) 값 등을 확인할 수 있는 별도의 시리얼 모니터 프로그램을 사용하셔야 합니다.

'홍익인간 프로젝트 > Arduino C' 카테고리의 다른 글

LiquidCrystal and Adafruit SSD1306(SSH1102) Collison  (0) 2021.03.19
delayMicroseconds()  (0) 2021.03.11
pulseIn() Function  (0) 2021.01.22
pinMode() Function  (0) 2021.01.22
What's means F() function ?  (0) 2021.01.14

+ Recent posts