청소년 IT 메이커 교육 1차

 청소년 IT 메이커 교육 1차

한성대

작성자: 이상훈


이번에 한성대에서 중고등학생을 상대로 코딩교육을 실시하였습니다. 
학생들의 이해를 돕고 강의를 듣지 못했거나 부품의 이상이 있어 수업을 원활하게 진행하지 
못한 학생들의 위해 본 블로그를 이용하여 설명을 보충하고자 합니다.
본 블로그는 제가 작성하였지만 한성대 학생들이 단체로 제작한 프레젠테이션 자료를 주로 
이용하였기 때문에 한성대 학생들 전체가 작성하였다고 봐도 무방할 것 같습니다.

IT 메이커 교육 1차는 기초적인 학습이 많기 때문에 내용이 길고 지루할 수 있으니 
자신이 알고 싶은 부분만 찾아가며 보도록 합시다.



이번 수업의 목차입니다. 
프로그램 소개와 아두이노를 하기 전 알고있어야 할 기초지식을 배우고 
시리얼 통신과 터치센서를 배워봅시다.


프로젝트: 무드등 만들기





이번에 한성대에서는 아두이노를 통해 "무드등" 만들기를 진행하였는데요.
다양한 센서와 장치를 이용하여 키고 끄는 것은 물론 빛의 밝기와 색을 변화할 수 있는 
무드등을 만들기로 하였습니다.
(에듀이노를 통해 부품을 사고 자료를 얻었습니다.)



아두이노 스케치를 잘 설치하였다면 아두이노를 사용하기에 앞서 사전에 알고 있어야 하는 정보가 있습니다.


바로 디지털과 아날로그 인데요.




디지털은 "이산"적인 정보를 아날로그는 "연속"적인 정보를 의미합니다.
쉽게 생각하자면 시계가 있는데요. 
우리가 갖고 있는 스마트폰을 보면 1분이 증가할 때마다 순간적으로 숫자가 +1씩 카운팅 
되는 것을 볼 수 있습니다. 
(예를 들어, 현 시간이 11시 9분이면 1분 증가하면 11시 10분으로 바로 바뀜)
하지만 벽걸이 시계중 시,분,초침이 있는 시계의 경우 이 침들이 천천히 옆으로 움직이는 것을 보실 수 있습니다.

즉, 스마트폰 시계의 경우는 디지털, 벽걸이 시계의 경우 아날로그인 것이죠. 
그래서 "일반적"으로 디지털은 "인공"적으로 아날로그는 "자연"적인 정보로 보기도 합니다.




다음은 데이터 입출력입니다.


앞서 배운 것보다는 비교적 간단하죠?
버튼이나 조도센서는 데이터를 입력하는 것이고 
LED나 부저는 데이터를 출력하는 장치입니다.

다만 디지털 입출력인지, 아날로그 입출력인지에 따라 아두이노에 핀을 꽂는 위치가 
달라질 수 있으니 이 점을 유의하길 바랍니다.



그럼 이제 본격적으로 아두이노 스케치를 사용하는 법을 

배워보겠습니다.


먼저 아두이노에서 기본적으로 제공하는 setup함수와 loop함수에 대해

 알아보겠습니다.




void는 함수 반환이 따로없음을 의미하는 것이니 여러분이 크게 신경쓰실 필요는 없습니다.
다만 setup()과 loop()에 유의해야 하는데요. 
쉽게 생각해서 setup()함수"세팅" 공간 + "단독시행" 공간
loop()"반복시행" 공간이라고 생각하시면 됩니다.

우리가 시리얼 모니터, LED나 다른 센서를 이용하면 기본적으로 세팅을 해주어야 합니다. setup()함수는 이런 세팅을 하는 공간이고, 추가적으로 "1번" 실행을 하는 경우 
setup()함수 내부에 코드를 입력합니다.





이제 아두이노 사용의 기초라고 볼 수 있는 

"시리얼 통신"에 대해 배워보겠습니다.


"시리얼 통신"에서 시리얼은 직렬을 의미합니다. 
즉, "통신할 때 정보가 직렬의 형태로 전달된다"라고 보시면 됩니다. 

사실 우리가 배우는 단계에서는 통신이 어떤 형태로 이루어지던 큰 의미가 없죠?
그냥 학생 여러분은 컴퓨터와 아두이노의 통신을 하기 위해 사용한다고 보시면 됩니다.
우리는 시리얼 통신을 이용하여 장치의 작동이 잘 이루어지고 있는지, 
또 문제가 있으면 어떤 지점에서 발생하였는지를 빠르게 확인할 수 있습니다.




우선 시리얼 모니터와 보드레이트 속도를 맞춰야 하는데요. 시리얼 모니터 하단에 
보드레이트가 9600으로 잘 돼있는지 확인해줍시다. 
속도의 단위는 bps(bits per sec)로 초당 9600비트가 전달됩니다.

하지만 이것도 큰 의미가 없으니 그냥 9600을 기억하며 잘 설정이 돼있는지만 확인해줍니다.




앞서 말한 설정이 잘 돼있다면, 

본격적으로 코드를 적어 시리얼 통신을 해보겠습니다.



주석을 통해 알 수 있는 것을 제외하고 추가적인 설명만 하겠습니다.
많은 학생들이 의아해할 부분이 바로 첫줄에 "변수 선언"을 하는 이유가 아닐까 싶습니다.

"그냥 변수 선언을 안하고 Serial.println(age);를 Serial.println("15");로 쓰면 되는 거 아니야?"
라는 의문이 들 수 있습니다. 물론 이 정도로 간단한 코드에서는 별 문제가 없을 것입니다.

하지만, 우리가 나이를 입력하고 그 나이를 출력하게 만들거나 
코드가 굉장히 복잡한 상태에서 나이를 바꾸고 싶을 때는 상황이 완전히 다릅니다.

요리에 비유하여 이야기하면 변수"그릇"입니다. 
요리는 여러 가지 재료를 이용해서 만들어지죠? 
이때 요리를 하려면 음식 재료를 받아서 어딘가에 놓아야 할 것입니다. 
이때 우리는 "그릇"을 이용하죠. 
이처럼 코딩을 할 때에도 "그릇"의 역할을 할 수 있는 변수가 필요합니다. 


앞서 말한 상황 때문에 변수를 사용해야 할 때는 반드시 "변수 선언"이 필요합니다.
변수 선언은 자료형을 먼저 쓰고 변수 이름을 적으면 됩니다.

변수 이름은 간단하죠? 자신이 사용하고 싶은 "그릇"의 이름이라고 생각할 수 있으니까요.

그렇다면 자료형은 무엇일까요?
자료형은 변수가 저장할 데이터의 유형입니다. 
변수가 정수인지 실수인지 아니면 문자 등의 또 다른 데이터인지를 지정하는 것이죠. 

요리에서 재료마다 놓는 그릇이 다르듯이 
프로그래밍에서도 어떤 그릇을 사용할지 정해줘야 합니다.


표준 자료형은 위의 사진에 적힌 것과 같습니다.
즉, int age = 15; 는 정수형으로 age라는 이름을 가진 변수를 선언하겠다는 의미이죠.
이때 추가적으로 age에 15라는 값을 준 것 뿐입니다.
(만약 값을 따로 넣지 않는다면, 쓰레기값이 들어가게 된다.) 




이제 기초적인 것을 공부하는 지루한 시간이 끝났습니다.

그럼 본격적으로 아두이노와 각종 센서를 연결해봅시다.


우리가 해볼 것은 터치센서를 이용한 시리얼 통신입니다.






앞서 배웠듯이 터치센서는 디지털 입력 센서입니다. 
그래서 VCC는 5V에 GND는 GND에 연결하고 SIG핀은 디지털 입력핀에 연결하도록 합니다.



그림과 같이 핀을 잘 연결하였다면 코드를 작성해봅시다.


코드는 주석을 통해 충분히 이해할 수 있어 추가적으로 설명하진 않겠습니다.




이로써, 청소년 IT 메이커 교육 첫 수업이 마무리되었습니다.


아마 첫 수업은 기초적인 지식을 듣느라 굉장히 지루하셨을 겁니다. 
하지만 이 정도의 기초지식도 없다면 수업이 진행되기 힘들기 때문에 저희도 
어쩔 수 없었다는 점을 양해바랍니다.

긴 글 봐주셔서 대단히 감사합니다.
(아무도 안 볼 거 같지만...)



댓글

이 블로그의 인기 게시물

청소년 IT 메이커 교육 2차

청소년 IT 메이커 교육 특별편 (퀴즈 풀이) ※ 잠깐! 퀴즈 안 푼 사람 출입 금지!!!! ※

청소년 IT 메이커 교육 4차