이 프로젝트는 36개의 서보 모터가 만들어내는 역동적인 전자 아트 작품입니다. 아두이노 우노와 세 개의 16채널 PWM 컨트롤러가 배경에서 작동하며, 450개 서보로 구성된 대형 미술관 설치작품에서 영감을 받아 소규모로 재현했습니다. 36개만으로도 매력적인 시각 효과를 낼 수 있습니다.
선택 사양: 인터랙티브 손 추적 기능
디스플레이 상단 뒷면에 초음파 센서 5개를 장착하면 관람객의 손 움직임을 추적하는 인터랙티브 모드를 활성화할 수 있습니다. 중앙 센서 위에 손을 올리면 모든 서보가 손의 위치를 따라 움직이며, 손을 치우면 몇 초 후 자동으로 데모 모드로 돌아갑니다. 이 기능은 선택 사항이며, 센서 없이도 기본 데모 쇼는 정상 작동합니다.
하드웨어 구성
기계적 조립
32인치 폭으로 재단한 페그보드에 서보를 4인치 간격으로 배치하고 글루건으로 고정합니다. 서보 축에는 3.25인치로 자른 아이스크림 막대를 글루건으로 부착합니다. SG90 서보는 180도 회전 사양이지만 실제로는 160도 미만인 제품도 많으므로, 5세트(40개) 구매 후 160도 이상 회전하는 36개를 선별하세요.
서보 초기 위치 설정
모든 서보를 PWM 150(최소 위치)으로 설정한 상태에서 아이스크림 막대가 정면에서 보아 수평 오른쪽을 향하도록 장착해야 합니다. 이를 위한 테스트 스케치 SetServosToMinimum을 제공합니다.
후면 배선 레이아웃: 왼쪽 PWM 컨트롤러 3개, 오른쪽 30W 파워 서플라이, 별도 USB 전원으로 아두이노 구동
전원 및 배선
서보 전원: 5V 30W 서플라이에서 PWM 컨트롤러 3개로 분배
아두이노 전원: USB 어댑터 별도 공급 (프로그래밍 시 USB 연장 케이블로 PC 연결 편의)
초음파 센서(선택): 디스플레이 상단 가장자리에 글루건과 막대로 고정, 소형 브레드보드로 전원 분배
소프트웨어 구조
핵심 알고리즘
Adafruit PWM 라이브러리로 48채널(실제 36개 사용)을 제어합니다. 두 개의 룩업 테이블을 사용합니다:
curPos[36]: 현재 위치 (PWM 값 ÷ 3, 1바이트 저장)
tarPos[36]: 목표 위치 (동일 스케일)
3으로 나누는 이유: (1) 0~255 범위의 바이트 타입으로 저장 가능, (2) 서보 이동을 3스텝 단위로 수행하여 연산량 감소.
초기화 루틴
시작 시 모든 서보를 수직 위치(중립)로 이동하고 curPos, tarPos를 해당 값으로 초기화합니다. 이후 목표 위치만 변경하면 goToTargets() 서브루틴이 부드럽게 이동시킵니다.
이동 제어: goToTargets(reps, mydelay)
reps: 15스텝 단위 반복 횟수 (이동 속도 제어)
mydelay: 각 스텝 간 지연 시간(ms) (추가 속도 제어)
데모 쇼 시퀀스
약 3분 분량의 다양한 패턴(파동, 회전, 랜덤 등)이 순차 재생되며 루프합니다. 코드 내에 각 효과별 파라미터 테이블이 정의되어 있습니다.
인터랙티브 추적: trackRoutine()
중앙 초음파 센서가 물체(손)를 감지하면 호출됩니다. 5개 센서의 거리값을 읽어 손의 X/Y 위치를 추정하고, 모든 서보 각도를 실시간으로 조정하여 손을 따라가게 합니다. 수 초간 감지되지 않으면 데모 모드로 복귀합니다.
코드
ServosArt 소프트웨어 (아두이노 우노용)
다운로드만 제공 (미리보기 없음)
회로도
아두이노 우노와 3개 PWM 컨트롤러, 36개 서보 연결HC-SR04 5개 센서 아두이노 연결 (인터랙티브 기능용)