NAVER

질문 아두이노 Serial통신 관련 질문입니다.
41**** 조회수 1,881 작성일2018.10.03
int incomingByte=0; // for incoming serial data
//
void setup(){
  Serial.begin(9600); // opens serial port,sets data rate to 9600 bps
}
//
void loop(){
  if(Serial.available()>0){ // send data only when you receive data:
    incomingByte=Serial.read(); // read the incoming byte:
    Serial.print("I received: "); 
    Serial.print(incomingByte); // say what you got:
  }
}

위 소스에서 제가 시리얼모니터 창에 숫자 1을 입력한다면, 아두이노 버퍼 메모리에 숫자 1이 저장이 될테고, Serial.read로 불러들여서 incomingByte에 저장이 되겠지요. 그럼 이 값을 Serial.print로 출력을 하면, 어쨌든 시리얼 모니터에는 1 값으로 보여야 하는것 아닌가요?  그런데 왜, 1의 아스키코드값이 뜨는건가요? Serial.print가 1의 아스키코드값으로 변환해서 PC로 보내줘도 결국 시리얼모니터에서 다시 1로 변환시켜 주는거 아닌가요?
프로필 사진

답변자님,

정보를 공유해 주세요.

1 개 답변
1번째 답변
프로필 사진
키트 박옥현
우주신
전기, 전자 공학 6위, 프로그래머 1위, 프로그래밍 22위 분야에서 활동
본인 입력 포함 정보
Serial.read();  // 입력받은 데이터를 변형없이 그대로 수신
Serial.write(); // 데이터를 변형없이 그대로 송신
Serial.print(); // 데이터를 문자로 변형해서 송신

PC에서 키보드로 입력하는 '1' 키는 문자입니다.
'1' = 0x31 = 49

incomingByte='1';
Serial.print(incomingByte); 이렇게 출력하면 "49"가 출력됩니다.
1바이트 받아서 2바이트를 전송하는 것이죠

Serial.write(incomingByte); 이렇게 출력하면 '1' 1바이트가 출력되서 모니터에 1이 표시 됩니다.

Table of ASCII Characters

binary
MSN 
0000
0001
0010
0011
0100
0101
0110
0111
LSN 
hex
0
1
2
3
4
5
6
7
0000
0
NUL
0  
00
DLE
16  
10
SP
32  
20
0
48  
30
@
64  
40
P
80  
50
`
96  
60
p
112  
70
0001
1
SOH
1  
01
XON  
(DC1)
17  
11
!
33  
21
1
49  
31
A
65  
41
Q
81  
51
a
97  
61
q
113  
71
0010
2
STX
2  
02
DC2
18  
12
"
34  
22
2
50  
32
B
66  
42
R
82  
52
b
98  
62
r
114  
72
0011
3
ETX
3  
03
XOFF (DC2)
19  
13
#
35  
23
3
51  
33
C
67  
43
S
83  
53
c
99  
63
s
115  
73
0100
4
EOT
4  
04
DC4
20  
14
$
36  
24
4
52  
34
D
68  
44
T
84  
54
d
100  
64
t
116  
74
0101
5
ENQ
5  
05
NAK
21  
15
%
37  
25
5
53  
35
E
69  
45
U
85  
55
e
101  
65
u
117  
75
0110
6
ACK
6  
06
SYN
22  
16
&
38 
26
6
54  
36
F
70  
46
V
86  
56
f
102  
66
v
118  
76
0111
7
BEL
7  
07
ETB
23  
17
'
39  
27
7
55  
37
G
71  
47
W
87  
57
g
103  
67
w
119  
77
1000
8
BS
8  
08
CAN
24  
18
(
40  
28
8
56  
38
H
72  
48
X
88  
58
h
104  
68
x
120  
78
1001
9
HT
9  
09
EM
25  
19
)
41  
29
9
57  
39
I
73  
49
Y
89  
59
i
105  
69
y
121  
79
1010
A
LF
10  
0A
SUB
26  
1A
*
42  
2A
:
58  
3A
J
74  
4A
Z
90  
5A
j
106  
6A
z
122  
7A
1011
B
VT
11  
0B
ESC
27  
1B
+
43  
2B
;
59  
3B
K
75  
4B
[
91  
5B
k
107  
6B
{
123  
7B
1100
C
FF
12  
0C
FS
28  
1C
,
44  
2C
<
60  
3C
L
76  
4C
\
92  
5C
l
108  
6C
|
124  
7C
1101
D
CR
13  
0D
GS
29  
1D
-
45  
2D
=
61  
3D
M
77  
4D
]
93  
5D
m
109  
6D
}
125  
7D
1110
E
SO
14  
0E
RS
30  
1E
.
46  
2E
>
62  
3E
N
78  
4E
^
94 
5E
n
110  
6E
~
126  
7E
1111
F
SI
15  
0F
US
31  
1F
/
47  
2F
?
63  
3F
O
79  
4F
_
95  
5F
o
111  
6F
DEL
127  
7F

1
49  
0x31


2018.10.03.

  • 채택

    질문자가 채택한 답변입니다.

도움이 되었다면 UP 눌러주세요!
UP이 많은 답변일수록 사용자들에게 더 많이 노출됩니다.