청소년 IT 메이커 교육 2차
청소년 IT 메이커 교육 2차
한성대
작성자: 이상훈
이번 수업의 목차입니다.
네오픽셀 LED, 가변저항을 사용해보도록 하겠습니다.
(아마 1차보다는 이번 내용이 더 재밌을 겁니다.)
네오픽셀 LED(RGB LED)부터 알아봅시다.
이미 수업을 통해 라이브러리 추가하는 법을 배우셨을 겁니다.
한번만 설치하면 되기 때문에 따로 추가하는 법을 적진 않겠습니다.
우선, 네오픽셀 LED의 기본정보입니다.
당연히 디지털 출력 장치겠죠?
그래서 IN이라고 적힌 핀은 디지털 입력핀과 연결하도록 합시다.
이때 코드에 맞게 출력핀만 디지털 3번핀에 연결해주면 됩니다.
다음은 LED의 순서입니다.
우리는 순서를 이야기할 때 1번부터 이야기 합니다.
그래서 RGB LED는 1번부터 반시계 방향으로 8번까지 순서를 세면 됩니다.
하지만 프로그래밍을 할 때는 조금 다릅니다.
프로그래밍을 할 때는 기본적으로 0번부터 순서를 세기 때문에
0번부터 반시계 방향으로 7까지 세주어야 합니다.
(이외에도 나중에 반복문, random() 함수를 사용할 때도 0부터 세는 것이 일반적임)
그렇다면, 이제는 LED 색을 어떤 식으로 지정할 수 있는 지를 배워보겠습니다.
빛의 삼원색과 관련된 내용은 중고등학생분들이기 때문에 따로 말하진 않겠습니다.
아마 여러분이 궁금해 하실 부분은 색상 값의 범위가 0~255라는 점입니다.
앞서 말했듯이 숫자 카운팅이 실생활에서는 1부터
프로그래밍에서는 0부터 이루어지는 점을 감안하면 255는 256이 될겁니다.
256 = 2의 8제곱으로 8비트 영역에서 색상 범위를 지정했다고 보시면 됩니다.
색상표를 이용하여 원하는 색을 지정해보도록 합시다.
핀을 알맞은 위치에 잘 연결했다면 이제는 코드 분석을 할 차례입니다.
처음으로 반복문이 나왔는데요. 반복문은 이름처럼 반복할 때 사용합니다.
여러번 적는 수고로움을 간단한 코드 몇줄로 해결할 수 있습니다.
이때 loop()함수 안의 코드가 반복되는 것을 기억하는 사람 중 누군가는
"loop()함수 안의 코드는 무한반복이 된다고 했는데 왜 반복문을 또 사용하는 거야?" 라는
의문을 가질 수 있습니다.
이는 반복문안에서도 반복을 하는 즉 이중반복을 할 필요가 있기 때문입니다.
간단하게 예를 들겠습니다.
😀😀😀😀😀😀😀😀😀😀
😀😀😀😀😀😀😀😀😀😀
😀😀😀😀😀😀😀😀😀😀
😀😀😀😀😀😀😀😀😀😀
😀😀😀😀😀😀😀😀😀😀
위 그림과 같이,
우리가 가로로 10명씩 세로로는 5명씩 줄 세워 (10행, 5열) 간식을 나눠준다고 생각해봅시다.
우리는 가로로 이동하며 간식을 나눠주고 끝에 도착해서는 세로로 한번 이동한 후
다시 가로로 이동하며 간식을 나눠주는 반복을 하게 될 것입니다.
즉, 가로뿐만 아니라 세로로도 반복 이동을 하게 될 것입니다.
위의 원리를 생각해보면 LED를 3초 간격으로 끄고 키는 반복을
8개의 LED 마다 해주어야 하기 때문에 총 두 종류의 반복이 존재하게 됩니다.
따라서 loop()문 안에 또 다른 반복문이 있어야 하는 것이죠.
앞서 적은 코드 이외에도 다른 코드가 있으니 이 코드를 넣어보고
어떤 동작이 이루어 지는지 확인해봅시다.
(다른 코드는 해당 교사에게 부탁해서 얻길 바랍니다.)
다음은 가변저항입니다.
돌리면서 저항 값을 조절하는 가변저항은 아날로그 입력 장치이겠죠?
다른 센서들과는 달리, 가변저항은 따로 VCC, GND 등 핀을 꽂는 위치가 적혀있지 않습니다.
이는 VCC와 GND의 위치가 정해져 있지 않아서 인데요, 어느쪽에 5V를 연결하냐에 따라
가변저항을 돌려서 저항값이 올라가는 방향이 달라집니다.
따라서, 아날로그 입력핀만 가운데에 꽂으면
돌리는 방향은 자기 마음대로 설정할 수 있습니다.
이제 시리얼 모니터를 통해 가변저항을 돌리면서 저항 값을 알아보겠습니다.
코드를 잘 입력했다면, 시리얼 모니터 창을 열어 저항값을 확인해봅시다.
이렇게 네오픽셀 LED와 가변저항을 사용해봤다면
마지막으로 가변저항을 돌려서 LED를 조작해보겠습니다.
그림과 같이 핀을 잘 연결하셨나요?
브레드보드(빵판)을 이용하여 핀을 잘 연결했다면 이젠 코드를 적어봅시다.
우리가 보지 못한 코드가 두 종류나 등장했습니다.
우선 map()함수부터 알아보겠습니다. map()함수는 범위값을 조절하기 위해 사용합니다.
위에서 가변저항을 사용했다면 저항의 양쪽 끝값이 0과 1023으로 뜨는 것을
확인할 수 있는데요.
우리는 LED off, R, G, B, W 총 5가지의 경우만을 원합니다.
하지만 기존 저항은 0~1023 즉 1024가지의 값이 있습니다.
따라서 map()함수를 이용하여 값의 범위를 새로 맵핑할 필요가 있습니다.
다음은 조건문 입니다.
특정 조건을 만족하면(~할 때), 아래 코드가 실행되도록 하고 싶을 때 사용합니다.
크게 보자면 if, else if, else 이렇게 총 3가지가 사용되었는데요.
if는 조건문을 처음 사용할 때 쓰고, else if와 else는 그 이후에 사용합니다.
else if와 else의 다른 점은 else if는 if를 제외한 다른 조건을 만족하는 것이고
else는 이들을 제외한 나머지 경우 모두를 의미합니다.
이로써, 청소년 IT 교육 2차의 내용이 마무리 되었습니다.
반복문과 조건문 또 새로운 함수가 등장하여 코드 분석이 더 어려웠을 것이라고 생각합니다.
그래도 첫 수업보다는 다양한 센서를 만져보며 더 재밌는 수업을 했을 것 같기도 하고요.
또 제가 이해한 방식으로 코드를 분석하다 보니 누군가는 이해하기 어려울 수도 있습니다.
이런 경우, 자신이 영어를 좀 할 줄 안다면
arduino 모르는 함수 stackoverflow라고 구글에 검색해서 찾아보셔도 되고
영어를 못한다면 그냥 구글창에 아두이노 모르는 함수를 검색하셔서 찾아보시면 됩니다.
(안 찾아볼 거 알아지만 그래도...)











댓글
댓글 쓰기