본문 바로가기

아두이노 SinRobot part3 (소프트웨어)

반응형

이번에는



저번에 만들었던

 



바퀴 3개인 요녀석에 대한 코딩을 할건데요


4개, 8개와는달리

바퀴가 홀수개로 되어있어서


저도 하드웨어 구성을 끝내고나서



코딩을 어떻게 할까 고민하고

바퀴 위치들을 연결하면 삼각형이 나와서



삼각비를 이용하면 어떻게든 될것이라 생각했는데


역시 삼각비였습니다.

(여기서 부턴 코드를 참고)


SinRobot (2).zip





코드를 보시면 loop안에

Motor라는 함수가 보일건데요


저기있는 Motor이라는 함수를통해

각도와 속도만 입력하면
모터 rpm과 마찰력이 같다고 했을때

입력한 각도방향으로 갑니다




 
loop밑을보시면


기본적인 모터 구동을 위한 motor함수가 있습니다

(대문자 Motor과는 다름) 




보시면 motor라는 함수는 2개의 값을 받는데요



첫번째는 모터번호

두번째는 속도 입니다



모터순서는 위에서 봤을때

시계방향입니다

(첫번째 모터는 디지털 3, 5

두번째 모터는 디지털 6, 9

세번째 모터는 디지털 10, 11 에다가 연결)


속도는 int형으로 받아와


0값이 들어오면 brake

양수값이 들어오면 정회전

음수값이 들어오면 역회전 하게 코딩했습니다



wheel이라는 함수는

motor함수를 세번 사용하므로써


3개의 모터를 하나의 함수로 제어 할 수 있게 했습니다

(반드시 m이라는 배열을 사용)



다음은 처음에 말했던 Motor이라는 함수인데요


각각의 모터의 사이각이 120도 이니깐

SinRad라는 배열을 만들어서

120도씩 차이나게 했습니다


그다음

for문을  3번 돌려서


첫번째 각도를 sin함수를 이용하여 속도로 변환후 x속도

두번째 각도를 속도로 변환후 x속도

세번째도 마찬가지로 변환후 x속도




여기서 아두이노에서 삼각함수에 각도를 넣을때는

radian값을 넣어야 하므로 radians라는 함수를 사용해서


각도를 라디안 값으로 바꾼후

sin함수를 사용해서 sin값으로 변환후 x속도를 했습니다




그리고 마지막으로 변화된 값을 wheel함수에 넣어

모터를 움직이게 했습니다



동작 영상



아두이노에다가 블루투스를 달아 핸드폰으로 조종하면 재밌어요!

(앱은 이미 만들었는데 카메라가 핸드폰 카메라 라서 못찍음)

 


반응형