1. 이번 시간은
2. 스케치를 실행합니다.
2.1 아케치 실행
2.2 아케치 편집창 확대
최대화 버튼 클릭
3. 아두이노 연결 확인과 시리얼 모니터 확인
3.1 툴 > 포트 > COM번호
만약 COM번호가 보이질 않으면 아두이노를 PC에 연결하고 다시 확인하여야 합니다.
3. 2 시리얼 모니터 확인
화면 오른쪽 위의 돋보기 아이콘 클릭
시리얼 모니터 출력
4. 새 프로그램 만들기
4.1 메뉴 파일 > 새파일
4.2 새 프로그램 편집창 확대
4.3 새 프로그램에는 항상 setup() 함수와 loop() 함수가 있습니다.
5. 코드
5.1 char inChar = 0;
char는 데이터 종류 중의 하나로 문자 1개를 저장할 수 있습니다. 데이터 종류에 대한 자세한 것은 다음에 자세히 공부할겁니다. inChar는 변수이름입니다. 기억하기 좋은 이름을 지어서 쓰면 됩니다. 변수 inChar은 초기값을 0으로 한다는 뜻입니다. 다시 말하면 변수 inChar은 문자 1개를 저장하고 기억하는데 처음값은 0이다 입니다.
5.2 Serial.begin(9600)은 시리얼 통신속도는 9600으로 설정하겠다 입니다.
5.3 if문
if(조건) {
명령문
}
if문은 조건이 맞으면 { 와 } 사이에 있는 코드(명령문)들을 실행하고 조건이 맞지 않으면 { 와 } 사이에 있는 코드(명령문)들을 실행하지 않습니다. 이번 if문은 { 와 } 사이에 명령문이 2개가 있네요.
이 if문의 조건은 Serial.available() 가 0 보다 크면 입니다. 연산자 > 은 오른쪽이 왼쪽보다 크다 입니다. Serial.available() 은 시리얼 모니터의 입력창에 입력한 문자수를 알려줍니다. 입력이 없으면 0, 문자가 1개이면 1, 2개이면 2가 됩니다.
즉, 시리얼 모니터의 입력창에 입력한 문자수가 0보다 크면 이 if문의 { 와 } 사이에 있는 2개의 명령문이 실행이 되고 그렇지 않으면 실행되지 않습니다.
5.4 if문이 맞으면 실행하는 명령문 2개
1) inChar = Serial.read();
시리얼 모니터의 입력창에 입력한 문자 1개를 읽어 변수 inChar에 저장하라 입니다. 연산자 = 는 같다 라는 기호가 아니고 오른쪽의 것을 왼쪽으로 옮기는 연산자입니다. 참고로 연산자 == 가 오른쪽과 왼쪽이 같다는 연산자입니다.
2) Serial.print(inChar);
변수 inChar에 저장된 값을 시리얼 모니터의 출력창에 출력하는 것입니다. 지난 시간에 print와 println의 차이점을 알아보았죠.여기의 print는 라인을 바꾸지 않고 붙어서 출력하는 것이였습니다.
5.5 loop() 함수
loop() 함수의 코드(명령문)들은 계속 반복한다고 했죠. 이번 loop문은 시리얼 모니터의 입력창에 문자가 있으면 일을 하고 문자가 없으면 일을 하지 않습니다. 이번 loop문의 안에는 크게보면 코드는 if문 1개밖에 없습니다. if문의 조건이 맞아야 if문 안으로 들어와서 코드(명령문) 2개가 실행되죠.
6. 시리얼 모니터에서 결과 확인
6.1 프로그램 저장
메뉴 파일 > 저장
파일 이름은 arduino02 로 합니다.
6.2 컴파일과 업로드
6.3 시리얼 모니터에서 결과 확인
6.3.1 문자 1개 a 입력하고 Enter Key
![]() |
![]() |
6.3.2 문자 2개 bb 입력하고 Enter Key
![]() |
![]() |
6.3.3 모든 사람이 좋아하는 I love you 입력하고 Enter Key
![]() |
![]() |
6.3.4 한글 안녕하세요? 입력하고 Enter Key
![]() |
![]() |
6.3.5 loop() 함수 코드 복습
문자 1개 a 입력하고 Enter Key
문자가 1개 이므로 Serial.available() 의 값은 1이고 0보다 크므로 시리얼로 문자 1개를 읽어 inChar에 보관하고 시리얼의 print로 보관한 inChar의 값을 출력창에 출력합니다.
이 때 Serial.read()를 하면 1개를 읽었으므로 Serial.available() 의 값은 0이 됩니다. loop() 함수는 반복되니까 다시 if문에 가서 조건을 확인하면 Serial.available() 의 값은 0이므로 0보다 크지 않아서 조건에 만족할 수 없어 일을 하지 않습니다.
문자 2개 bb 입력하고 Enter Key
문자가 2개 이므로 Serial.available() 의 값은 2이고 0보다 크므로 시리얼로 문자 1개를 읽어 inChar에 보관하고 시리얼의 print로 보관한 inChar의 값을 출력창에 출력합니다.
이 때 Serial.read()를 하면 1개를 읽었으므로 Serial.available() 의 값은 2에서 1이 됩니다. loop() 함수는 반복되니까 다시 if문에 가서 조건을 확인하면 Serial.available() 의 값은 1이므로 아직 0보다 크므로 시리얼을 읽고 출력도 합니다. 그러나 이제는 2개 모두 읽었으므로 Serial.available() 의 값은 0이 되고 다음부터 일을 하지 않습니다.
Serial.print()는 라인을 바꾸지않고 출력하니까 출력창에 b를 출력하고 한바퀴 돌고 다음에 b를 출력해도 빨리 동작하니까 붙어서 bb로 출력하는 것으로 보이는겁니다.
14. 다음 시간에는
수고하셨습니다.
** 동영상 **
'아두이노 냠냠' 카테고리의 다른 글
08 LED 깜박이기 - 이해하기 (0) | 2020.10.19 |
---|---|
07 LED 깜박이기 - 그냥 따라하기 (0) | 2020.10.15 |
05 시리얼 모니터 사용하기 1 (0) | 2020.10.11 |
04 첫번째 아두이노 프로그램 만들기 (0) | 2020.10.10 |
03 예제 소스(내장된 LED 깜박이기) 수정하기 (0) | 2020.10.06 |