컴퓨터에서 아두이노로 0~9의 숫자를 전송한다. 아두이노에서는 전송 받은 숫자만큼 아두이노 보드의 LED를 점멸 시킨다.
※ 명령어
- Serial.available( ) : 시리얼 통신에 수신된 데이터가 있는지 확인한다. 있을 경우 참(true)의 값을 갖는다.
- Serial.read( ) : 시리얼 통신을 통하여 수신된 값을 읽는다.
- isDigit(변수) : 변수의 값이 ASCII 코드의 0~9의 숫자 범위에 있는지 여부를 판단한다. 범위에 있을 경우 참(true)의 값을 갖는다.
- pinMode(핀번호, 설정) : 핀의 입출력 모드를 설정한다. '핀번호'에는 설정하고자 하는 핀의 번호, '설정'에는 입력으로 사용하기 위해서는 'INPUT', 출력으로 사용하기 위해서는 'OUTPUT', 입력이며 풀업 사용시 'INPUT_PULLUP'을 기술한다.
- digitalWrite(핀번호, 값) : 핀에 디지털 출력(High or Low)을 한다. '핀번호'에는 출력하고자 하는 핀의 번호를, '값'에는 'HIGH' 혹은 'LOW'를 설정하여 High 혹은 Low 출력을 한다.
/*
* 예제
* 컴퓨터로부터 시리얼 통신을 통하여 데이터 수신하기
*/
const int ledPin = 13; // LCD 출력을 할 핀번호 설정
int blinkNumber = 0; // 점멸횟수 변수 설정
void setup() {
Serial.begin(9600); // 9600bps로 시리얼 통신 설정
pinMode(ledPin,OUTPUT); // 13번 핀을 출력으로 설정
}
void loop() {
// 시리얼 통신으로 입력 받은 데이터가 있는지를 검사하여
// 데이터가 있을 경우에 if문 안의 명령어를 실행
if(Serial.available()){
char val = Serial.read(); // val 변수에 시리얼 통신값 읽어오기
if(isDigit(val)){ // 입력된 값이 0~9의 숫자인지를 판단
blinkNumber = (val - '0'); // val은 ASCII 코드값이므로 숫자로 바꿔주기 위하여 '0'의 아스키 코드값을 빼주면 실제 숫자가 저장된다.
}
}
// blinkNumber 만큼 LED를 점멸시킴
for(char i = 0; i<blinkNumber; i++){
digitalWrite(ledPin,HIGH);
delay(200);
digitalWrite(ledPin,LOW);
delay(200);
}
blinkNumber=0; // 점멸 횟수를 리셋한다.
}
시리얼 모니터에서 6을 입력했다.
'아두이노' 카테고리의 다른 글
[아두이노] LED 점멸 (0) | 2020.10.13 |
---|---|
[아두이노] I2C를 이용한 LCD 출력 ② (0) | 2020.10.10 |
[아두이노] I2C를 이용한 LCD 출력 ① (0) | 2020.10.10 |
[아두이노] 변수 유형별로 컴퓨터에 전송하기 (0) | 2020.10.10 |
[아두이노] 아두이노에서 컴퓨터로 데이터 전송하기 (0) | 2020.10.10 |