아두이노로 RC카, RC 탱크 등을 하려다 보니, 서보를 다루는 경우가 많습니다.
그렇게 되면 센터에 맞춰놓고 조립을 해야 하는 경우가 있는데, 그 때마다 아두이노 프로그램을 해서 맞추곤 했습니다. 꽤 번거롭습니다.
서보 테스터를 알아보다 보니, 구미에 딱 맞는 게 없습니다.
그래서, 하나 만들었습니다.
LCD를 빼고 구성품 배치를 보면, 다음과 같습니다.
외부 전원은 흔한 Micro USB 커넥터를 통해 공급받고요
아두이노는 제가 제일 애용하는 Pro Mini입니다. 크기도 작고 저렴하기도 하고요.
별로 쓸 일은 없겠지만, 아두이노 리셋 버튼도 하나 달았고요.
1602 캐릭터 LCD는 밝기 조정을 위해 가변 저항을 하나 쓰면 선명하게 세팅할 수 있어요.
서보 각도 조정을 위한 좀 큼직한 가변 저항을 하나 썼습니다.
서보는 5V에서 동작하는 것과 저전압용을 위한 커넥터를 각각 마련했습니다. 저전압용은 3.3V에서 동작합니다.
회로도는 다음과 같습니다. 엄청 간단합니다. ㅋ
5V는 microUSB 커넥터를 통해 공급받고, 서버용 3.3V는 AMS-1117-3.3이란 작은 레귤레이터를 하나 썼습니다.
서보 조향을 위한 가변 저항을 A0 아날로그 입력으로 설정하고, 코드에서 그걸 서보 출력을 위한 각도로 변환하게 해서 PWM 출력 중 하나인 D3 단자를 통해 출력하게 했습니다. 진짜 엄청 간단함.
소스도 간단합니다.
// Servo Tester by Crazy Doctor 2020.07.29.
#include <LiquidCrystal.h>
#include <Servo.h>
const int rs = 12, en = 10, d4 = 6, d5 = 7, d6 = 8, d7 = 9;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
int inputPin = A0;
float ANGLE;
float AINPUT;
Servo servo;
int servoPin = 3;
int ANGLE_i;
int AINPUT_i;
void setup() {
lcd.begin(16, 2);
servo.attach(servoPin);
lcd.setCursor(2,0); lcd.print("SERVO Tester");
lcd.setCursor(1,1); lcd.print("by CrazyDoctor");
delay(2000);
lcd.clear();
}
void loop() {
AINPUT=analogRead(inputPin);
ANGLE=(AINPUT/1023)*180;
AINPUT_i=AINPUT;
ANGLE_i=ANGLE;
lcd.setCursor(0, 0); lcd.print("Dial:");
lcd.setCursor(6, 0); lcd.print(AINPUT_i);
lcd.setCursor(0, 1); lcd.print("Angle:");
lcd.setCursor(6, 1); lcd.print(ANGLE_i);
servo.write(ANGLE_i);
delay(100);
lcd.clear();
}
이렇게 해서 동작하는 모습을 영상으로도 찍어 봤습니다.
이렇게 해서 간단하게 서보 테스터를 하나 만들었습니다.
나중에 시간 좀 나면 케이스도 하나 만들어줄까 싶기도 합니다. ㅋㅋ
이렇게 해서 간단한 아두이노 프로젝트 소개글 마칩니다.
'디지털 라이프 電子的生活 My Digital Life > 아두이노 (Arduino)' 카테고리의 다른 글
아두이노 코드 올리는 라즈베리파이 피코!!! (0) | 2021.06.07 |
---|---|
팬 컨트롤 + 온습도 센싱 + LCD 디스플레이 = ?? (0) | 2021.04.15 |
Bluno Beetle과 Blynk 간의 BLE 통신 실험 (1) | 2020.02.07 |
아두이노RC탱크 프로젝트 4. BLYNK 기본 테스트 (0) | 2018.12.30 |
아두이노RC탱크 프로젝트 3. 회로도 (1) | 2018.10.21 |