[ArduBlock] DFRobot 아두이노 블락 킷 (Ardublock Kit) 사용기
본체험제품은 No1. 전자부품 전문 쇼핑몰 아이씨뱅큐의 지원을 받아 작성한 것입니다.
아두이노는 setup, loop 의 두가지 함수로 구성이 된다. setup 은 초기화를 담당하고, loop 는 아두이노가 반복적으로 해야 되는 일을 나타낸다. ArduBlock 을 처음 실행하면 '반복' 이라는 블락이 생성된다. loop 에 해당되는 블락이다.
반복 블락에 다른 블락을 붙여서 프로그래밍을 할수도 있지만 좀더 세련되게 변수를 기술하고 초기화를 하기 위해서는 setup 을 만들어야 한다. 왼쪽의 '제어' 메뉴에서 '프로그램' 블락을 선택한다. '
셋업'과 'loop' 두 개로 나누어진 접합부가 있다.
이 곳들을 채워나가면서 프로그래밍을 하는것이 아두블락의 핵심이다.
아두이노의 프로그래밍에서는 setup 부에서 입출력 pin 을 정의한다. 입출력 핀의 이름을 정하고 정수값을 지정해 주면 된다.
예를 들어 1번 핀을 출력으로 지정하고 싶으면
pinMode(LEDpin, OUTPUT);
과 같이 하면 된다.
아두블락에서는 다음과 같이 한다. 왼쪽의 'Variables and Constants' 에서 '정수 변소 설정' 을 선택한다. ('정수 변수 설정'의 오타이다.) 셋업에 붙인다.
변수에 있는 'integer variable name' 을 클릭한다. 'LEDpin' 이라고 이름을 변경한다. 값을 클릭하여 '1' 로 변경한다.
이것이 아두이노 스케치에서는 int LEDpin = 1; 로 표현된다.
이제부터 모듈들을 하나씩 테스트 하면서 사용법을 익혀본다.
왼쪽의 'DFRobot' 메뉴를 선택하면 DFRobot 사에서 판매하는 여러가지 모듈들이 나열된다.
킷에 제공되는 모듈들을 하나씩 선택해서 loop 에 붙이면 된다.
1. 디지털 푸시 버튼(Digital Push Button)
'디지털 푸시 버튼'을 끌어서 옮겨 놓는다. 그런데 loop 에 붙일 수가 없다. loop 에 붙일 수 있는 다른 블락을 찾아야 한다. 버튼은 언제 쓰는 걸까 [만약 '버튼'이 눌려졌다면 LED 를 켜겠다.] 와 같은 문장에서 '만약' 이 먼저 와야 한다. '제어' 메뉴에서 '만약' 블락을 끌어서 옮긴다. loop 와 잘 결합된다. '만약' 블락의 '시험'에 '디지털 푸시 버튼'을 가까이 하면 붙는 것을 알 수 있다.
LED 를 켜기 위해서는 '그 다음' 에 LED 모듈을 연결해야 한다. '발광 다이오드 모듈' 을 끌어온다. '핀 번호' 와 '상태' 를 정할 수 있다. '핀 번호'는 숫자로 되어 있다. 이것을 변수로 바꾸고 싶으면 숫자로 되어 있는 블락을 떼어서 버리고 'Variables and Constants' 메뉴에서 'integer variable name' 블락을 끌어서 붙이면 된다. 클릭한 후에 'LEDpin' 을 입력하면 셋업에서 정수 변수로 설정했던 LEDpin 의 값이 7이 된다. 디지털 푸시 버튼도 마찬가지로 변경 가능하다. 디지털 푸시 버튼을 누르면 발광 다이오드를 켜기 위한 프로그램은 다음과 같다.
ardublock_usage_pushbutton.abp
2. 아날로그 사운드 센서(Analog Sound Sensor)
'아날로그 사운드 센서' 는 마이크로 입력받은 음성 신호를 Op-Amp 로 증폭시켜서 아날로그 입력값으로 사용하는 센서이다. 그 자체로 스위치 역할을 하는 것은 아니고 산술연산의 값으로 입력된다. 아날로그 사운드 센서에 입력되는 음의 높낮이에 따라서 발광 다이오드의 밝기가 변하는 프로그램을 만들어 본다.
(1) 제어 메뉴에서 '프로그램' 블락을 선택한다. 정수 변수 설정에 'sound_value' 라고 입력한 후에 값은 0으로 초기화한다.
(2) 제어 메뉴에서 '반복'을 선택한다. 반복 블락이 여러개가 있는데 '시간'과 'commands' 가 있는 블락을 선택한다.
(3) 정수 변수 설정 블락을 추가하여 'commands' 블락에 붙인뒤에 변수를 'sound_value' 로 설정한다.
(4) '값' 블락을 삭제한다.
(5) 'Math operators' 메뉴에서 'sum of two numbers' 블락(제일 위에 있다.)을 끌어서 '값'블락에 붙인다.
(6) 'sound_value' 블락을 우클릭하여 '클론'을 선택한다. 블락이 복제되어 추가된다. 동일 블락을 재사용하고 싶다면 앞으로는 클론기능을 사용하는 것이 편하다.
(7) 'sum of two numbers' 블락에 'sound_value' 블락을 붙인다. 나머지 빈 곳에는 사운드 센서를 붙인다. 'DFRobot' 메뉴에서 '아날로그 사운드 센서' 블락을 끌어서 이어 붙인다.
(8) 'DFRobot' 메뉴에서 '발광 다이오드 밝기' 블락을 끌어서 '반복' 블락 밑에 붙인다. '수준' 블락을 버리고 그 자리에 'Math Operators' 메뉴에서 '맵' 블락을 끌어서 붙인다.
(9) 맵의 값은 sound_value 로 하고 '~부터' 는 [0, 500] '~에서' 는 [0, 255] 를 입력한다. 영어에서 'from, to' 에 해당하는 단어가 어색하게 번역되었다.
이 프로그램은 다음과 같이 작동한다.
(1) 아날로그 입력 'A0' 에서 '아날로그 사운드 센서'로부터 소리를 입력받아서
(2) PWM 출력 '3번' 으로 소리에 해당하는 밝기를 출력한다.
맵은 입력되는 소리의 값을 발광 다이오드의 출력값으로 변환한다. 입력값을 올리면 소리를 아주 크게 질러야 발광 다이오드가 발광할 것이다. 발광 다이오드의 최대값은 정해져 있으므로 건드릴 필요가 없다. sound_value 의 값이 매시간마다 초기화되어야 소리를 입력받을 때만 발광 다이오가 발광할 것이므로 loop 에서 값을 초기화해야 한다. 셋업에 있는 것을 끌어다 쓰면 된다.
ardublock_usage_soundsensor.abp
3. 서보 모터(Servo Motor)
'서보 모터' 는 PWM 출력으로 제어하므로 디지털 핀 중에서 PWM 표시(*) 가 된 핀만 사용할 수 있다. 11번 핀을 서보 모터의 출력핀으로 사용한다. 서보 모터는 보통 180도까지 사용할 수 있으며 몇몇 모터는 360 도 회전이 가능하다. 또한 0도 에서 작동하지 않기 때문에 기본값을 10도 정도로 설정해야 한다. 서보 모터의 각도를 90도로 움직였다가 20도로 바꾸는 예제는 다음과 같다. 서보의 핀번호는 숫자만 입력할 수 있다.
사운드 센서로 소리를 입력 받아서 서보 모터를 회전 시키는 예제는 다음과 같다.
실제로 작동시켜 본 결과 서보 모터의 작동 소음이 사운드 센서로 유입되어 다시 서보 모터를 움직이는 되먹임 현상이 관찰되었다. 따라서 모터 작동후에는 긴 지연시간이 필요하다.
4. 부저(Buzzer)
소리를 내는 스피커이다. 소리를 내는 주파수와 시간을 정할 수 있다. 멜로디도 연주가능하다.
실제로 작동시켜 본 결과, 진동이 너무 심해서 스티커를 붙여야 안정적인 소리가 나왔다. 소음을 줄일 수 있도록 대책을 세우는 것이 좋다.
5. 조정가능한 적외선 센서 스위치 (Adjustable Infrared Sensor Switch)
'변경 가능한 적외선 센서 스위치'를 선택한다. Adjustable 이라는 단어는 조정가능하다는 단어인데 틀리게 해석되었다.
이 센서의 역할은 일정 거리에서 물체를 감지하는 것이다. 그 거리를 '조정'가능하다는 뜻이다. 스위치의 뒷면에 있는 포텐셔메터를 (-)자 드라이버로 값을 조정할 수 있다.
거리를 측정하는 것이 아니라 일정 거리 이하에서 물체가 감지되면 값이 '낮음' 이 되므로 디지털 값인 '높음' 또는 '낮음' 값을 갖는다. 따라서 스위치로 입력되는 값을 디지털 변수로 저장해야 한다.
ardublock_usage_infraredswitch.abp
6. 아날로그 주변광 센서(Analog Ambient Light Sensor)
주변광(Ambient Light) 의 밝기를 전압으로 변환해 주는 센서이다. 아날로그 입력으로 값을 받아서 처리해 주면 된다. 사운드센서의 프로그램을 그대로 이용하여 센서만 광센서로 바꾸어 주었다.
serial print ln 은 값을 시리얼 모니터로 출력해 준다. 윗쪽에 있는 메뉴 '시리얼 모니터'를 클릭해 주면 광센서로 입력되는 값을 확인할 수 있다.
ardublock_usage_lightsensor.abp
7. 로테이션 센서(Rotation Sensor)
그냥 볼륨이다. 광센서를 뽑아내고 그 자리에 로테이션 센서를 장착하여 값을 변화시키면 발광 다이오드의 밝기가 변하는 것을 알 수 있다. 아날로그 센서들은 종류만 다를 뿐 값을 입력받는 것은 동일하므로 같은 위치에 센서 종류만 바꾸어도 잘 작동한다.
아두블락의 각종 센서와 모듈들의 작동을 동영상으로 확인해본다.
아두블락 키트(ArduBlock Kit) 구입처 : 아이씨뱅큐 http://www.icbanq.com/P005670333
아이씨뱅큐 100% 무상체험단 카페 바로가기 : http://cafe.naver.com/icbanq