> 업계 통찰 >커스텀 드라이브
기술 지원

Arduino 버튼을 사용하여 3단계로 서보 제어

게시됨 2026-04-29

Arduino 개발 보드를 사용하면 버튼을 통해 서보의 회전 각도를 제어할 수 있습니다. 이는 전자제품 생산에서 가장 실용적인 기본 기능 중 하나입니다. 이 기사에서는 완전한 솔루션을 직접 제공합니다. 일반 버튼을 사용하세요. 누르면 서보가 90도 회전하고, 떼면 0도로 돌아갑니다. Arduino 개발 보드, 9g 서보, 버튼, Dupont 와이어 몇 개, 브레드보드만 있으면 됩니다. 아래 배선도와 코드에 따르면 30분 안에 완료가 가능합니다.

01필요한 하드웨어 및 배선 방법(핵심 작업)

필수 하드웨어 목록:

Arduino 개발 보드(모든 모델이 허용됩니다. 이 문서에서는 가장 일반적인 모델을 예로 들어 보겠습니다.)

SG90 9g 서보(저전력 서보, 보급형에 적합)

터치 버튼(6x6x5mm 4핀)

10kΩ 저항(풀다운 저항용)

브레드보드와 듀퐁 와이어

배선 단계(정확해야 함):

1. 서보 신호선(보통 주황색 또는 노란색)을 Arduino의 핀 9에 연결합니다.

2. 서보 전원 케이블(빨간색)을 5V 핀에 연결합니다.

3. 서보 접지선(갈색 또는 검정색)을 GND 핀에 연결합니다.

按键控制舵机程序_arduino按键控制舵机_arduino舵机控制板

4. 버튼의 한 핀은 5V에 연결되고 다른 핀은 핀 2에 연결됩니다.

5. 10kΩ 풀다운 저항을 핀 2와 GND 사이에 병렬로 연결하여 누르지 않을 때 입력이 LOW인지 확인합니다.

일반적인 실수는 풀다운 저항을 생략하면 버튼 상태가 비정상적으로 점프하게 된다는 것입니다. 저항의 한쪽 끝은 핀 2에 연결되고 다른 쪽 끝은 GND에 연결됩니다.

02전체 코드(직접 복사하여 사용)

#포함하다서보 기구나의서보 기구; //서보 객체 생성 int ButtonPin = 2; //버튼 연결 핀 int ButtonState = 0; //저장 버튼 상태 int서보 기구위치 = 0; // 현재 서보 각도 void setup() { myServo.attach(9); // 서보 신호 라인을 9번 핀에 연결합니다. pinMode(buttonPin, INPUT); // 버튼 핀을 입력으로 설정 myServo.write(0); // 서보 각도를 0도로 초기화합니다. } void loop() {buttonState = digitalRead(buttonPin); // 버튼 상태 읽기 if (buttonState == HIGH) { // 눌렀을 때 myServo.write(90); // 서보가 90도로 회전합니다. Delay(15); // 서보가 해당 위치에 도달할 때까지 기다립니다. } else { // 누르지 않은 경우 myServo.write(0); // 서보가 0도로 복귀합니다. Delay(15); } }

핵심 코드 로직은 digitalRead()를 사용하여 핀 2의 레벨을 지속적으로 감지하는 것입니다.버튼이 눌려지면, 즉 핀이 HIGH 상태가 되면 서보는 write(90) 동작을 수행합니다.버튼을 놓으면 서보는 쓰기(0) 작업으로 돌아갑니다.. 구조화된 작성을 통해 프로그램을 초기화, 읽기, 판단 및 실행의 네 가지 명확하게 구성된 모듈로 나누어 후속 단계에서 다중 키 또는 다중 각도 제어 모드로 확장할 수 있습니다.

03자주 묻는 질문 및 문제 해결(Q/A 형식)

Q: 서보가 전혀 움직이지 않습니다. 이유가 무엇일까요?

전원이 부족합니다. 서보는 별도로 전원을 공급받아야 합니다. 9g 서보는 Arduino의 5V를 직접 사용할 수 있으며, 더 큰 서보는 외부 전원 공급 장치를 통해 전원을 공급받아야 합니다.

Q: 버튼을 한 번 누르면 서보가 한 번 회전합니다. 출시되면 0으로 돌아가나요?

A: 코드에 논리 오류가 있습니다. 키를 누른 후 조건을 결정하는 대신 위에 제공된 if-else 구조를 사용해야 합니다.

Q: 스티어링 기어가 흔들리거나 스티어링이 잘못된 경우 어떻게 해야 합니까?

按键控制舵机程序_arduino舵机控制板_arduino按键控制舵机

1. 신호선이 느슨한지 확인하세요. 2. write() 뒤에 지연(15)을 추가합니다. 3. 이는 서보에 충분한 동작 시간을 제공합니다.

Q: 한 번 누르면 90도 회전하고 다시 누르면 0으로 돌아가도록 변경하는 방법은 무엇입니까?

상태를 기록하려면 변수를 추가해야 합니다. 버튼을 누른 것이 감지될 때마다 플래그 비트가 변경되고 해당 각도가 기록됩니다.

Q: 버튼의 반응이 느리고 가끔 반응이 일어나지 않는 경우가 있나요?

키의 기계적 지터로 인해 레벨 변화를 감지한 후 지연(10)을 추가하여 지터를 제거하거나 Bounce2 라이브러리를 사용할 수 있습니다.

04확장된 애플리케이션: 단일 버튼에서 다중 모드 제어까지

기본적인 단일 버튼 제어를 익히면 다음과 같은 고급 기능을 쉽게 구현할 수 있습니다.

1. 두 개의 버튼은 각각 정방향 및 역방향을 제어합니다.

버튼 A: 누르면 180도로 이동하고 떼면 0도로 돌아갑니다.

버튼 B: 누르면 45도로 이동하고 떼면 0도로 돌아갑니다.

코드 수정: 두 번째 버튼 핀을 추가하고 별도로 판단합니다.

2. 세 가지 각도를 순환하는 단일 버튼

// 누를 때마다 각도가 누적됩니다. 0→60→120→0 loop int angles[] = {0, 60, 120}; 정수 인덱스 = 0; if (buttonState == HIGH && !flag) { // 더블클릭 방지 index = (index+1) % 3; myServo.write(angles[index]); 플래그 = 참; }

3. 길게 누르면 계속 회전됩니다.

버튼 지속 시간을 감지하고 500ms를 초과한 후 버튼을 놓을 때까지 계속해서 각도를 늘립니다.

다음은 확장 기능이 포함된 전체 코드 예제입니다. 원칙은 모두 이 글의 구조화된 글쓰기 논리, 즉 명확한 입력을 기반으로 합니다. 이 입력은 키 상태, 각도 계산인 처리, 마지막으로 서보 명령으로 사용되는 출력으로 구성됩니다.

05핵심 아이디어 및 실행 제안 반복

핵심 포인트 강조: 서보의 Arduino 버튼 제어의 본질은 "디지털 신호를 PWM 신호로" 변환하는 것입니다. 버튼은 높음과 낮음 레벨을 제공하며, 레벨 값에 따라 미리 설정된 각도로 서보가 회전합니다.배선이 정확하고(풀다운 저항을 생략하면 안 됨) 코드 로직이 if-else 또는 상태 머신을 사용하는 한 안정적인 제어를 달성할 수 있습니다.

다음은 즉시 취할 수 있는 세 가지 조치 제안입니다.

1. 오늘 밤에는 기본 버전을 만들어 보겠습니다. 이 기사의 배선도와 코드를 기반으로 브레드보드를 ​​사용하여 완전한 회로를 만들고 버튼을 눌렀을 때 서보가 회전하는 장면을 직접 목격합니다.

2. 각도 값을 변경하여 실험 탐색: 90도 상태를 45도, 135도, 180도 등 임의의 숫자 형태로 변경하고, 관찰로 인해 발생하는 조향 위치의 변화에 ​​주의 깊게 주목한 다음, write() 함수의 매개변수 범위가 0~180도임을 이해합니다.

3. 두 번째 버튼을 추가하고 현재 코드를 사용하여 버튼 읽기 모듈을 복사하여 다양한 각도에서 다양한 버튼으로 제어할 수 있는 실제 대화형 특성을 갖춘 제품 프로토타입을 만듭니다.

버튼으로 제어되는 서보를 처음부터 구현하기 위한 모든 핵심 지식을 이미 갖추고 있습니다. 이제 Arduino IDE를 열고 하드웨어를 연결한 후 각 단계를 직접 확인해 보세요.

업데이트 시간:2026-04-29

미래에 힘을 실어주다

귀하의 제품에 적합한 모터 또는 기어박스를 추천하려면 Kpower 제품 전문가에게 문의하십시오.

케이파워에 메일보내기
문의 제출
WhatsApp 메시지
+86 0769 8399 3238
 
kpower지도