brunch

You can make anything
by writing

C.S.Lewis

by Cylogic Aug 30. 2020

23. 다섯 번째 장난감 : 비눗방울 발생기 만들기

DC 모터와 서보 모터의 활용

하나의 서보모터를 활용한 꼬리 치는 강아지를 만들어 보았고 DC 모터를 사용하는 방법도 배웠다.

이 두 가지 부품은 아두이노 장난감에서 가장 많이 사용되는 부품이므로, 이번에는 이 두 가지 모터를 이용한 장난감을 만들어 보자.


자동으로 비눗물을 링에 찍어 DC 모터의 바람으로 분사하는 장난감.


필요한 부품은 다음과 같다.

아두이노 우노 보드와 브레드 보드

1개의 서보모터

1개의 DC 모터와 프로펠러

구조물을 만들 나무젓가락 또는 비슷한 크기의 나무 조각

연결할 전선


장난감의 외형의 외형은 아래의 사진과 같다.


서보모터에 비눗방울 장난감의 막대기를 고정하고.

이 비눗방울 장난감 막대기의 뒤편에 DC 모터에 연결된 프로펠러를 장착한다.

사진에는 보이지 않지만 막대 아래에 비눗물을 놓고 전원이 연결되고 스위치가 켜지면 막대기에 비눗물을 적셔 프로펠러 바람으로 비눗방울을 만들어 내는 장치이다.



회로의 구성은 아래와 같다.

7번 핀에 스위치를 달고

5, 6 번은 모터 드라이버

9번은 서보모터와 연결을 하였다.

앞 강좌의 회로에서 서보모터만 추가한 것이다.


비눗방울 발생기의 코드는 아래와 같다.

주요한 동작 부분을 설명하면 다음과 같다.

코드 24번 라인부터 28번 라인까지가 loop 함수의 자리인데, 이 함수 내부에서 pattern1이라고 하는 함수를 호출한다. 

이렇게 별도의 함수를 외부에 만드는 이유는 동작의 형태가 일부 달라질 경우, 대부분의 회로 연결부는 손댈 필요가 없고,  해당 함수만을 수정하면 되기 때문에 논리적으로 잘 구분된 코드가 만들기도 편하고, 수정하기도 편하기 때문이다.


서보모터가 움직이는 부분을 한 번에 oSrv.write(45); 와 같이 할 경우 움직이는 속도가 너무 빨라서 비눗물이 옆으로 튀는 상황이 발생하였다. 그래서 그 속도를 줄이는 방법으로 위와 같이 서서히 움직일 수 있는 코드를 만들었다. 

 

  for (int i=0; i <45; i+=5){ 

       oSrv.write(i);

       delay(10);

    }

    delay(500);

    for (int i=45; i>=0; i-=5){ 

       oSrv.write(i);

       delay(10);

    }

    delay(300);


만일 동일한 작품을 만들어 본다면 아래의 i+=5 또는 delay(10)의 값을 조정하여 그 속도를 원하는 속도로 변경할 수 있다.



비눗방울 발생기의 작동 모습을 보여주는 동영상이다. 아두이노에는 휴대폰 배터리 충전기를 연결하고, 오른쪽의 전원 공급 장치에서는 6V의 전원을 DC 모터에 연결된 모터 드라이버에 공급하여 동작하게 하는 연결 모습이다. 



브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari