액츄에이터들과 조이스틱의 동시 사용법 배우기
50번 글에서 배웠던 네오픽셀과 서보모터의 동시 사용 방법을 이용하여 간단한 장식품을 하나 만들었다. 장난감이라고 하기에는 조금 모자라 작품이라 이름 붙였다.
원형의 네오픽셀을 스트립 형태의 네오픽셀로 바꾸고 서보모터의 변화 각도에 맞추어 LED가 켜지게 하였다.
마치 서보모터에 연결된 연필의 끝이 네오픽셀 위를 지나며 불을 켜고 끄는 듯한 효과를 노렸다.
그런데 이 부분만 만들면 앞선 이야기와 다를 바가 없어서 한 가지 기능을 더 추가하였다.
바로 조이스틱을 사용하여 네오픽셀 LED의 색을 변경시키는 것이다.
조이스틱은 상하좌우로 움직여 연결된 가변저항을 변화시키는 장치이다. 그래서 좌우는 VRx, 상하는 VRx로 표현되는 핀의 변화로 그 움직임을 알 수 있게 되어 있다.
조이스틱은 아래의 사진처럼 5개의 핀을 가지고 있다.
위에서부터
GND는 아두이노의 GND
+5V는 아두이노의 5V
VRx와 VRy는 는 조이스틱의 좌우 상하 움직임을 판단하는 아날로그 값이므로 A0, A1
SW는 디지털 스위치와 같은 기능을 하므로 디지털 2번에 연결하였다.
네오픽셀의 데이터 핀은 디지털 6번 핀
서보모터의 데이터 핀은 디지털 9번 핀에 연결하였다.
사진을 보면 아래와 같이 연결된다.
네오픽셀 스트립을 붙인 플라스틱은 즉석밥을 맛있게 먹고 나서 그 용기의 주변을 잘라 만들었다.
아두이노 작품 만들기는 폐품을 활용할 것을 권장한다 ^^
연결된 장치를 움직이기 위하여 아래와 같이 코드를 만든다.
코드의 주요 위치에 대해 이해해 보자.
6번 줄 : 네오픽셀 스트립에 LED 전구가 12개 붙어 있다.
15번 줄 : 네오픽셀 전구의 밝기가 너무 밝아서 밝기를 줄였다. 이 값은 0~255까지 세팅할 수 있다.
위에 만든 예제 회로에서 50도 충분히 밝았다.
loop 함수에서
26번 줄 : 앞선 이야기에서는 서보모터의 각도에 따라 불이 켜지는 형태의 코드를 만들었는데, 이번 코드에서는 네오픽셀 전구가 켜지는 순서에 따라 서보모터가 회전하는 형태의 코드를 만들었다.
27번, 28번 줄 :
red=analogRead(A0)/4;
blue=analogRead(A1)/4;
은 조이스틱에 연결된 가변 저항값이 0부터 1024까지 변화되므로 컬러의 변화값을 이에 대응하도록 0~256까지 변화하게 만들어 준 것이다.
만일 가변 저항의 값이 1024가 아니고 다른 특정한 값으로 변화한다면 map 함수를 사용하여 이를 변경하여야 할 것이다.
33번 줄 : 12개의 전구가 켜지는 것인데 각 전구가 켜질 때 13도만큼 회전하도록 하여 총 143도가 회전하도록 하였다. 그러나 더 중요한 건 불이 켜지는 위치와 서보모터에 연결된 연필 끝이 가리키는 방향이 같도록 조절하기 위하여 그 각도를 넣었다. 전구의 위치가 역으로 되어 있어 (180-i*13)으로 각도를 조절하였다.
34번 줄: 네오픽셀의 컬러를 Color(red, 128, blue)로 만들었는데, 그 이유는 조이스틱의 저항이 2개이므로 붉은색과 푸른색만을 변화시키려고 한 것이다. 초록색은 그냥 128로 두었다.
39번 줄~44번 줄 : 역으로 하나씩 불을 끄는 명령어들.
값싼 카메라로 녹화하여 빛의 색 변화가 명확하지는 않으나 조이스틱의 변화에 따라 색이 변화하는 것을 알 수 있다. 실제로 동작시켜보면 마치 무지개 빛처럼 화려한 빛의 변화를 볼 수 있을 것이다.