아두이노 나노 조이스틱 서보 모터
이 튜토리얼은 아두이노 나노와 조이스틱을 사용하여 두 개의 서보 모터나 팬-틸트 키트를 제어하는 방법을 안내합니다.
조이스틱은 서로 수직인 두 개의 가변저항기( X-축과 Y-축으로 알려져 있음)가 장착되어 있습니다. 이 가변저항기들은 VRX 및 VRY 핀에서 아날로그 값을(X-값과 Y-값) 출력합니다. 우리는 이 아날로그 값을 사용하여 두 개의 서보 모터를 독립적으로 제어할 것입니다: X-값으로 서보 #1을 제어하고 Y-값으로 서보 #2를 제어합니다. 팬-틸트 키트를 사용할 때, 두 서보 모터의 움직임은 3-D 동작을 만듭니다.
두 가지 애플리케이션 사용 사례가 있습니다:
사례 1: 조이스틱의 엄지 동작에 따라 서보 모터가 회전합니다:
사례 2: 조이스틱을 사용하여 서보 모터를 조작합니다 (위/아래/왼쪽/오른쪽 명령)
조이스틱의 엄지를 왼쪽으로 밀면 서보 모터 #1이 시계 방향으로 움직입니다.
조이스틱의 엄지를 오른쪽으로 밀면 서보 모터 #1이 반시계 방향으로 움직입니다.
조이스틱의 엄지를 위로 밀면 서보 모터 #2가 시계 방향으로 움직입니다.
조이스틱의 엄지를 아래로 밀면 서보 모터 #2가 반시계 방향으로 움직입니다.
조이스틱의 엄지가 놓아지면, 서보 모터는 중앙 위치로 돌아가지 않습니다.
조이스틱을 누르면 (버튼을 누름), 서보 모터가 중앙 위치로 돌아갑니다.
튜토리얼은 두 시나리오 모두에 대한 코드를 제공합니다.
1 × 아두이노 나노 쿠팡 | 아마존
1 × USB A to Mini-B USB 케이블 쿠팡 | 아마존
1 × 조이스틱 (Joystick) 쿠팡 | 아마존
2 × 서보 모터 쿠팡 | 아마존
2 × (추천) 서보 모터가 포함된 팬 틸트 키트 아마존
1 × 점퍼케이블 쿠팡 | 아마존
1 × (추천 ) 아두이노 나노용 스크루 터미널 확장 보드 쿠팡 | 아마존
1 × (추천 ) 아두이노 나노용 브레이크아웃 확장 보드 쿠팡 | 아마존
1 × (추천 ) 아두이노 나노용 전원 분배기 쿠팡 | 아마존
공개: 이 포스팅 에 제공된 일부 링크는 아마존 제휴 링크입니다. 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
조이스틱 및 서보 모터(핀 배치, 기능, 프로그래밍 등 포함)에 익숙하지 않다면 다음 튜토리얼이 도움이 될 수 있습니다:
이 이미지는 Fritzing 을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
Arduino Nano와 기타 부품에 전원을 공급하는 가장 효과적인 방법은 다음 링크를 참조하세요: 아두이노 나노 전원 공급 방법 .
외부 전원의 GND 를 Arduino Nano의 GND 에 연결하는 것을 잊지 마십시오.
#include <Servo .h>
#define VRX_PIN A6
#define VRY_PIN A7
#define SERVO_X_PIN 6
#define SERVO_Y_PIN 11
Servo servo_X;
Servo servo_Y;
void setup () {
Serial .begin (9600) ;
servo_X.attach (SERVO_X_PIN);
servo_Y.attach (SERVO_Y_PIN);
}
void loop () {
int value_X = analogRead (VRX_PIN);
int value_Y = analogRead (VRY_PIN);
int xAngle = map (value_X, 0, 1023, 0, 180);
int yAngle = map (value_Y, 0, 1023, 0, 180);
servo_X.write (xAngle);
servo_Y.write (yAngle);
Serial .print ("조이스틱: " );
Serial .print (value_X);
Serial .print (", " );
Serial .print (value_Y);
Serial .print (" => 서보 모터: " );
Serial .print (xAngle);
Serial .print ("°, " );
Serial .print (yAngle);
Serial .println ("°" );
}
USB 케이블을 아두이노 나노와 PC에 연결하세요.
아두이노 IDE를 실행하고, 올바른 보드와 포트를 선택하세요.
코드를 복사해서 아두이노 IDE에서 열세요.
아두이노 IDE에서 Upload 버튼을 클릭하여 코드를 아두이노 나노에 전송하세요.
시리얼 모니터를 엽니다
조이스틱을 특정 방향으로 밀어주세요
서보 모터의 회전을 확인하세요
시리얼 모니터에서 결과를 확인하세요
∞
Newbiely | Arduino IDE 2.3.8
8
Serial .println ("Hello World!" );
Message (Enter to send message to 'Arduino Nano' on 'COM15')
Coming soon
Ln 11, Col 1
Arduino Nano on COM15
2
#include <Servo .h>
#include <ezButton .h>
#define VRX_PIN A6
#define VRY_PIN A7
#define SW_PIN 2
#define SERVO_X_PIN 6
#define SERVO_Y_PIN 11
#define COMMAND_NO 0x00
#define COMMAND_LEFT 0x01
#define COMMAND_RIGHT 0x02
#define COMMAND_UP 0x04
#define COMMAND_DOWN 0x08
#define LEFT_THRESHOLD 400
#define RIGHT_THRESHOLD 800
#define UP_THRESHOLD 400
#define DOWN_THRESHOLD 800
#define UPDATE_INTERVAL 100
ezButton button (SW_PIN);
Servo servo_X;
Servo servo_Y;
int value_X = 0 ;
int value_Y = 0 ;
int xAngle = 90;
int yAngle = 90;
int command = COMMAND_NO;
unsigned long lastUpdateTime = 0;
void setup () {
Serial .begin (9600) ;
servo_X.attach (SERVO_X_PIN);
servo_Y.attach (SERVO_Y_PIN);
button .setDebounceTime (50);
}
void loop () {
button .loop ();
if (millis () - lastUpdateTime > UPDATE_INTERVAL) {
lastUpdateTime = millis () ;
value_X = analogRead (VRX_PIN);
value_Y = analogRead (VRY_PIN);
command = COMMAND_NO;
if (value_X < LEFT_THRESHOLD)
command = command | COMMAND_LEFT;
else if (value_X > RIGHT_THRESHOLD)
command = command | COMMAND_RIGHT;
if (value_Y < UP_THRESHOLD)
command = command | COMMAND_UP;
else if (value_Y > DOWN_THRESHOLD)
command = command | COMMAND_DOWN;
if (command & COMMAND_LEFT) {
Serial .println ("COMMAND LEFT" );
xAngle--;
}
if (command & COMMAND_RIGHT) {
Serial .println ("COMMAND RIGHT" );
xAngle++;
}
if (command & COMMAND_UP) {
Serial .println ("COMMAND UP" );
yAngle--;
}
if (command & COMMAND_DOWN) {
Serial .println ("COMMAND DOWN" );
yAngle++;
}
}
if (button .isPressed ()) {
Serial .println ("The button is pressed" );
xAngle = 90;
yAngle = 90;
}
servo_X.write (xAngle);
servo_Y.write (yAngle);
Serial.print("Servo Motor's Angle: ");
Serial.print(xAngle);
Serial.print("°, ");
Serial.print(xAngle);
Serial.println("°");
}
Arduino IDE의 왼쪽 바에서 Libraries 아이콘을 클릭하세요.
“ezButton” 을 검색하고 ArduinoGetStarted.com 에서 버튼 라이브러리를 찾으세요.
EzButton 라이브러리를 설치하려면 Install 버튼을 누르세요.
∞
Newbiely | Arduino IDE 2.3.8
8
Serial .println ("Hello World!" );
Message (Enter to send message to 'Arduino Nano' on 'COM15')
Ln 11, Col 1
Arduino Nano on COM15
2
소스 코드의 주석에 포함된 줄별 설명을 확인하세요!
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.