# 프로그램 설명
1. 데이터를 터미널로 입력받기 위하여 setup() 부분에 시리얼 전송 속도를 9600bps9600 bps로 설정하여 시리얼 통신을 시작한다.
2. char형 변수 c를 선언하고 터미널에 들어온 데이터가 있으면 Serial.read() 함수로 데이터를 읽어 변수 c에 저장한다. 데이터가 들어온 여부를 판별하기 위하여 Serial.available() 함수를 사용한다. 이 함수는 데이터가 들어온 것이 없으면 0을 반환하는 함수이므로 데이터가 들어온 경우에는 true라는 성질을 이용한다.
3. 입력한 문자를 변수 c에 저장한 후, 이 값을 3가지의 경우에 따라 값을 변경하거나 유지한다. 3가지의 경우에는 입력한 문자가 대문자인 경우, 소문자인 경우, 대소문자가 아닌 경우가 있다. 모든 경우에서 Serial.println() 함수를 사용하여 c를 출력한다.
① 대문자인 경우 : 입력한 문자를 소문자로 변환하여 터미널에 출력한다.
if(c >= 'a' && c <= 'z')가 참이면 대문자이므로 소문자로 변환하기 위하여 ‘a’-‘A’ 값인 32를 c에서 빼준다.
② 소문자인 경우 : 입력한 문자를 대문자로 변환하여 터미널에 출력한다.
else if(c >= 'A' && c <= 'Z')가 참이면 소문자이므로 대문자로 변환하기 위하여 ‘a’-‘A’ 값인 32를 c에 더해준다.
③ 대소문자가 아닌 경우 : 입력한 문자를 그대로 출력한다.
4. enter키를 치지 않아도 입력되게 하기 위하여 터미널 에뮬레이터(Tera Term)에서 문자를
입력을 하고 프로그램을 통하여 변환된 c가 터미널 에뮬레이터에 출력된다. Tera Term에서 문자를 입력할 때 입력한 문자는 보이지 않는다.
# 코드
void setup() {
Serial.begin(9600); // 시리얼모니터 전송 속도 설정
}
void loop() {
char c;
if(Serial.available()>0){ // 데이터가 들어온 것이 있으면
c = Serial.read(); // c에 입력한 문자 저장
if(c >= 'a' && c <= 'z'){ // c가 소문자이면 대문자로 변환하여 출력
c -= 32;
Serial.println(c);
}
else if(c >= 'A' && c <= 'Z'){ // c가 대문자이면 소문자로 변환하여 출력
c += 32;
Serial.println(c);
}
else // c가 대소문자가 아니면 그대로 출력
Serial.println(c);
}
}
# 실행 결과 (터미널 에뮬레이터 – Tera Term)
- a, B, c, D, e, F, g, 5, 7을 순서대로 입력한 경우의 출력 결과
a, c, e, g는 대문자로 변환되어 출력되고 B, D, F는 소문자로 변환되어 출력되고 대소문자가 아닌 5, 7 은 그대로 출력된다.
'전공 공부 > 아두이노프로그래밍' 카테고리의 다른 글
적외선 장애물회피센서, 내장 LED (0) | 2021.01.18 |
---|---|
터미널 에뮬레이터를 이용하여 PC 키보드 1~8의 숫자 키로 입력을 받아 한 옥타브(낮은 ‘도’~높은 ‘도’)를 연주하는 프로그램을 제작하시오. 이때 숫자를 입력할 때 enter키 입력하지 않아도.. (0) | 2021.01.17 |
serialEvent() 함수를 사용하여 터미널에서 입력한 문자를 터미널 에뮬레이터로 반환하는 프로그램 (0) | 2021.01.17 |
직렬통신 (0) | 2021.01.17 |
4x4 키패드 모듈 (작동 오류) (0) | 2021.01.17 |