2021-1 이족보행 로봇 제작 프로젝트 #5 (Motor control software)
어느 정도 하드웨어가 해결되었으니 이제 본격적으로 코딩을 할 차레다.
내가 아두이노 이전에 쓰던 MiniRobot의 MR-C2000, C3000은 자체 코딩 프로그램인 로보 베이직에서 실시간 모터 컨트롤 기능을 제공했었다.
이게 없으면 일일히 동작 하나하나 수정할 때 마다 '각도 코드 수정 → 업로드 → 아두이노 재시작 → 해당 동작 실행' 의 과정을 거쳐야 한다.
사실상 불가능하다.
하지만 아두이노는 이를 기본으로 제공하지 않는다. 따라서 다른 유저들이 만든 프로그램을 찾을 필요가 있었다.
우선 servo shield 제작 회사인 adafruit에서 배포한게 있나 찾아봤지만 없었다.
하지만 pca9685가 워낙 많이 쓰이기에 이를 사용할 수 있는 모터 컨트롤 소프트웨어는 금방 찾았다.
https://www.instructables.com/Tims-PCA9685-Controller/
Tim's PCA9685 Controller
Tim's PCA9685 Controller: Many projects done with the Arduino, involve using a Servo.If using only one or two servo, these can be controlled direct from an Arduino using a library and allocating pins to do this.But for projects needing many servo to be con
www.instructables.com
어쩔수 없이 아두이노 내장이 아닌 외부프로그램을 쓰는 것이기에 각도 코드를 바로 아두이노에 넣을 수는 없고 복사 붙이기와 약간의 수정을 해줘야하는거 같다.
다행이 첫 시도만에 오류 없이 제어에 성공했다.
프로그램을 좀 만져보면서 사용법과 기능들을 계속 익혀야 겠다.
다행이도 프로그램 자체에 각도를 저장하고 순서대로, delay를 필요하면 섞어서 실행하는 기능이 있는 거 같다.
아두이노에 넣기 전에 얘로 테스트를 해볼수 있을 거 같다.
제어 gif 또는 영상 분명 찍었는데 파일이 없어졌다....
+)프로그램 만지다가 생긴 궁금점
1. 모터 각도가 위쪽 파란색(절대값), 아래쪽 검은색(영점 기준 상대값) 인 거 같은데 이 각도가 pca9685에 넣는 그 각도와 동일한 것인가? 아니면 식을 써서 바꿔줘야 하는가?
2. 영점조절은 어딨지?
3. 한 각도의 코드에서 다음 줄의 각도 코드로 넘어갈 때 너무 빠르게 움직여서 동작이 불안정할거 같은데 모터의 회전 속도를 줄이는 코드는 어떻게 구성하는 게 좋을까?
===============================================================================
정확한 정보 전달보단 공부 겸 기록에 초점을 둔 글입니다.
틀린 내용이 있을 수 있습니다.
틀린 내용이나 다른 문제가 있으면 댓글에 남겨주시면 감사하겠습니다. : )
===============================================================================