[Robot Arm Arduino Project] RAAP프로젝트 -테스트(2), 회전 값 출력
2024. 1. 26. 17:07ㆍUnity
728x90
반응형
지난 번에 연기난 서보 모터 드라이버는 새 드라이버로 바꿨고, 다시 테스트에 돌입했다...
수 많은 테스트 끝에 Base 서보 모터가 고장이 났고, Elbow를 담당하는 Potentiometer가 고장 난 것을 알아냈다. Potentiometer는 여유분이 있어서 바꾸고 잘 동작했지만, 서보 모터는 여유분이 없어서 다시 주문했다...
그리고 Elbow 서보 모터를 서보 모터 드라이버의 0번으로 옮겼다. 원래 위치가 잘 동작하지 않았기 때문이다.
아래의 코드는 수정된 코드이다.
#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>
#define MIN_PULSE_WIDTH 650
#define MAX_PULSE_WIDTH 2350
#define FREQUENCY 60
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
int potWrist = A0; //첫 번째 포텐셜미터
int potElbow = A1; //두 번째 포텐셜미터 //Assign Potentiometers to pins on Arduino Uno
int potShoulder = A2; //세 번째 포텐셜미터
int potBase = A3; //네 번째 포텐셜미터
int hand = 11;
int wrist = 12;
int elbow = 0; //Assign Motors to pins on Servo Driver Board
int shoulder = 14;
int base = 15;
void setup()
{
delay(5000); // <-- So I have time to get controller to starting position
Wire.begin();
pwm.begin();
pwm.setPWMFreq(FREQUENCY);
pwm.setPWM(11, 0, 90); //Set Gripper to 90 degrees (Close Gripper)
pinMode(13,INPUT_PULLUP);
Serial.begin(9600);
}
void moveMotor(int controlIn, int motorOut)
{
int pulse_wide, pulse_width, potVal;
potVal = analogRead(controlIn); //Read value of Potentiometer
pulse_wide = map(potVal, 800, 240, MIN_PULSE_WIDTH, MAX_PULSE_WIDTH);
pulse_width = int(float(pulse_wide) / 1000000 * FREQUENCY * 4096); //Map Potentiometer position to Motor
Serial.println(pulse_wide);
pwm.setPWM(motorOut, 0, pulse_width);
}
void loop()
{
moveMotor(potWrist, wrist);
moveMotor(potElbow, elbow);
//Assign Motors to corresponding Potentiometers
moveMotor(potShoulder, shoulder);
moveMotor(potBase, base);
int pushButton = digitalRead(13);
if(pushButton == LOW)
{
pwm.setPWM(hand, 0, 180); //Keep Gripper closed when button is not pressed
Serial.println("Grab");
}
else
{
pwm.setPWM(hand, 0, 90); //Open Gripper when button is pressed
Serial.println("Release");
}
}
MoveMotor() 함수에 넣어준 println 함수로 서보 모터의 회전값을 출력할 수 있게 되었다.
Serial.println(pulse_wide);
이제 Base 서보 모터만 새로 오면 된다!
다음 목표는 완전체로 조립한 후 일정 시간 간격으로 모터 회전 값을 받아오는 것이다.
추가로, 아래 글에 따르면, 외부 전원과 컴퓨터 전원을 함께 쓸 수 있으며, 외부 전원만 사용하기 위해서는 아두이노의 VIN에 최소 7.2V가 공급되어야 한다.
728x90
반응형
'Unity' 카테고리의 다른 글
[Robot Arm Arduino Project] RAAP프로젝트 -로봇 완성 (0) | 2024.02.05 |
---|---|
[Robot Arm Arduino Project] RAAP프로젝트 -테스트(3) 서보 모터 떨림 고치기 (0) | 2024.02.01 |
[Robot Arm Arduino Project] RAAP프로젝트 -아두이노 IDE 작성, 테스트 (0) | 2024.01.23 |
[Robot Arm Arduino Project] RAAP프로젝트 -회로 완성 (0) | 2024.01.17 |
[Robot Arm Arduino Project] RAAP프로젝트 -컨트롤 로봇 조립, 전선 연결 (0) | 2024.01.11 |