728x90

# 프로그램 설명

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’ 값인 32c에서 빼준다.

② 소문자인 경우 : 입력한 문자를 대문자로 변환하여 터미널에 출력한다.

else if(c >= 'A' && c <= 'Z')가 참이면 소문자이므로 대문자로 변환하기 위하여 ‘a’-‘A’ 값인 32c에 더해준다.

③ 대소문자가 아닌 경우 : 입력한 문자를 그대로 출력한다.

 

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 은 그대로 출력된다.

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기