시리얼 통신은 기기들 사이에서 송신(TX), 수신(RX) 2개의 데이터 선을 이용하여 한번에 한 비트씩 전송하는 방법
UNO 보드
1개의 하드웨어적인 시리얼 통신 사용 가능
USB 포트
디지털 입출력 핀 0번(RX)와 1번(TX) 이용
아두이노 보드에서 PC의 모니터에 “Hello Arduino!” 전송
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println("Hello Arduino!");
delay(1000);
}
setup() 함수 안에서 Serial 통신 설정
void setup() {
Serial.begin(9600);
}
Serial.print(), Serial.println() 명령을 사용하여 데이터 전송
void loop() {
Serial.println("Hello Arduino!");
delay(1000);
}
아두이노 IDE의 시리얼 모니터에서 데이터 출력 확인
센서 값 모니터에서 확인하기
빛 센서 (CDS) 예제 1에서 CDS 센서 값을 모니터에 출력
void setup() {
pinMode(5, OUTPUT);
// CDS 센서의 값을 확인하기 위하여 시리얼 통신을 설정 (전송속도 9600bps)
Serial.begin(9600);
}
void loop() {
int cdsValue = analogRead(2);
int pwmValue = map(cdsValue, 0, 1023, 0, 255);
analogWrite(5, pwmValue);
// 변환된 PWM 값를 시리얼 모니터에 출력합니다.
Serial.print("pwmValue=");
Serial.println(pwmValue);
delay(500);
}
아두이노 Web IDE 왼쪽 Monitor 메뉴를 클릭하여 출력 값을 확인
PC에서 시리얼 통신을 통하여 아두이노 보드로 한 개의 문자를 보내고, 아두이노 보드에서 받은 데이터를 다시 PC의 시리얼 모니터에 출력
한 개의 문자를 받아서 시리얼 모니터에 출력하기
void setup() {
Serial.begin(9600);
}
void loop() {
if (Serial.available()) {
char ch = Serial.read();
Serial.println(ch);
}
}
PC와 아두이노보드의 시리얼 통신 기능을 사용하여 아두이노 보드의 LED의 ON-OFF를 제어해 보자.
PC의 키보드로 부터 1, 2, 3, 4
을 시리얼 통신으로 아두이노 보드로 전송
1이면 LED1,
2이면 LED2,
3이면 LED3,
4이면 LED4가 켜지도록 제어
핀 연결 구성
int pin_LED[4] = {8,9,10,11};
int k;
void setup() {
Serial.begin(9600);
for (k=0; k<4; k++) {
pinMode(pin_LED[k], OUTPUT);
}
Serial.println("Enter 1,2,3,4!");
}
void loop() {
if (Serial.available()) { // 입력된 문자가 하나 이상 있는지 검사
char select = Serial.read(); // PC로부터 1개의 문자를 받아 저장
Serial.print("Select Number=");
Serial.println(select); // 저장된 문자를 표시
if (select == '1') { // 문자 '1'이 입력된 경우
digitalWrite(pin_LED[0],HIGH); // pin_LED[0]에 연결된 LED ON
} else if (select == '2') { // 문자 '2'이 입력된 경우
digitalWrite(pin_LED[1],HIGH); // pin_LED[1]에 연결된 LED ON
} else if (select == '3') { // 문자 '3'이 입력된 경우
digitalWrite(pin_LED[2],HIGH); // pin_LED[2]에 연결된 LED ON
} else if (select == '4') { // 문자 '4'이 입력된 경우
digitalWrite(pin_LED[3],HIGH); // pin_LED[3]에 연결된 LED ON
} else { // 나머지 경우
for (k=0; k<4; k++) { // 모든 LED OFF
digitalWrite(pin_LED[k], LOW);
}
}
delay(1000);
}
}