1 / 33

- 제 2 장 ROBOTC 기초 프로그래밍 -

- 제 2 장 ROBOTC 기초 프로그래밍 -. - 로봇을 2 초 동안 전진시켜라 -. NXT 서보 모터 파워는 건전지의 양에 따른 상대적인 비율로 -100 ~ +100% 까지 파워 레벨을 조정 가능. - 2 초 동안 전진 , 2 초 동안 후진 -. - 랜덤 시간 전진 -. •int wait_time; 이 문장은 random(3000) 을 통해서 얻어질 0-2999 사이의 값을 저장할 정수형 변수 선언 • random(3000); 0 부터 2999 사이에 임의의 값을 출력해주는 함수.

reilly
Télécharger la présentation

- 제 2 장 ROBOTC 기초 프로그래밍 -

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. - 제 2장 ROBOTC 기초 프로그래밍 -

  2. - 로봇을 2초 동안 전진시켜라 - • NXT 서보 모터 파워는 건전지의 양에 따른 상대적인 비율로 -100 ~ +100%까지 • 파워 레벨을 조정 가능

  3. - 2초 동안 전진, 2초 동안 후진 -

  4. - 랜덤 시간 전진 - •int wait_time; 이 문장은 random(3000)을 통해서 얻어질 0-2999사이의 값을 저장할 정수형 변수 선언 •random(3000); 0부터 2999사이에 임의의 값을 출력해주는 함수

  5. - MissionI- • 2초 전진 후 90도 회전하고 2초 전진

  6. stop Left wheel Right wheel Making Turns • Swing left: • Curve left : • Spin left : (point turn) • Face left : Left wheel Right wheel Left wheel Right wheel stop Left wheel Right wheel

  7. 회전 하기(Point Turn) • 양 모터를 각각 반대방향으로 • 회전시켜 회전반경이 최소가 • 되게 하는 회전 • 회전지름은 두 바퀴 사이의 거리 • 장점은 매우 빠르게 좁은 공간에서 • 회전이 가능 Point Turn의 원리

  8. 회전 하기(Swing Turn) • 한 쪽 바퀴를 회전의 중심으로 • 삼아 회전하는 방식 • 회전반경이 늘어나지만 회전과 • 동시에 약간의 전․후진이 가능 • 회전지름은 두 바퀴사이 거리의 • 두 배 • 장점은 보다 정확한 회전이 가능 • 단점은 회전하기 위한 공간이 많이 • 필요 Swing Turn의 원리

  9. 회전 하기(Curve Turn) • 두 개의 모터가 모두 전진하지만 • 각 모터의 출력 값이 달라 회전반경이 • 크게 회전하게 되는 회전 • 각각의 모터출력의 값에 따라 회전 • 반지름이 달라짐 Curve Turn의 원리

  10. Mission II: Swing Turn • Storyboard • Go straight for 1 seconds and turn right 90 degrees and go straight for 2 seconds and stop • Program ?? • Is it easy to make 90 degree turns? • Mark the stop location and rerun • Does it stop at the same point? • Why not? • How do we make our robots go straight? • Very important for many missions

  11. Mission III: Point Turn(Spinning left) • Go forward 1.5 seconds and come back by spinning left • Spinning 180 degrees? • Is it accurate?

  12. - 2초 전진 후 정지거리 측정 - • bFloatDuringInactiveMotorPWM : • NXT motor 는 기본적으로 정지 모드가 float/brake 로 이루어져 있다. • 기본 값은 float로 되어 있으므로 ‘false’ 값을 주어 바로 정지 할 수 있 • 도록 한다.

  13. - 타이머를 활용하여 로봇 제어하기 - • •시간 초기화하는 방법 • ClearTimer(T1) • time1[T1] = 0 • 타이머를 활용하여 2초 동안 전진하는 로봇 • NXT 타이머는 1ms 단위로 계산되는데, 네 개의 Timer(T1, T2, T3, T4)로 • 각각 초기화하여 시간을 측정하고 원하는 시간만큼 프로그램을 동작시킬 • 수 있다. time100[ ], time10[ ], time1[ ]로 시간을 사용할 수 있다.

  14. if(조건식) 문장1 - if 제어문 함수 설명 - • 조건식이 ‘True’인지 ‘False’ 인지 판정 • ‘False’일 경우에 대한 고려 없이 ‘True’ 일 경우 문장 1을 실행 • 한 조건에 대해 여러 문장 실행 시 문장들을 • { }으로 묶어서 사용

  15. - if 제어문 예제 - • random 함수 이용 난수값 생성(0-99) • if 함수를 이용하여 난수값이 50보다 크면 1초간 직진 • 직진 후 사운드 출력

  16. - if-else 제어문 함수 설명- if(조건식) 문장1 else 문장2 • 조건식이 ‘True’인지 ‘False’ 인지 판정 • ‘True’ 일 경우 문장 1 실행 • ‘False’ 일 경우 문장 2 실행 • 한 조건식에 대해 ‘True’ 일 경우와 ‘False’ 일 경우를 나누어 제어할 때 사용

  17. - if-else 제어문 예제 - • random 함수 이용 난수값 생성(0-99) • if 함수 이용 값이 50보다 크면 우회전, 값이 같거나 작으면 좌회전 • 조건 식 동작 후 사운드 출력

  18. - while 제어문 함수 설명- while(조건식) 반복문장 • 조건식이 ‘True’이면 반복문장 계속 실행 • 그 후 검사하여 ‘False’이면 while 제어 문을 빠져 나와 다음 문장 실행 • 조건 식에 ‘True’ 또는 ‘1’ 을 넣으면 무한반복

  19. - while 제어문 예제 - • 0.5초간 전진과 후진을 10번 동안 반복(0-9) • i++ 는 i = i + 1 을 의미 한다. • 단, while 문을 사용 • 동작 후 사운드 출력

  20. - do-while 제어문 함수 설명 - do 반복문장 while(조건식) • 반복 문장을 일단 한번 실행 한 후 while 제어문의조건 식 검사 • 조건 식의 값이 처음부터 거짓이라도 반복 문장은 한번 실행 • 위의 내용을 빼고는 while과 동일

  21. - do-while 제어문 예제 - • 전진과 후진을 10번 동안 반복(0-9) • 단, do - while 문을 사용 • 동작 후 사운드 출력

  22. - For 제어문 함수 설명 - for(초기값; 조건식; 증감값) 반복문장 • 유연하고 간결한 반복 프로그램 작성 가능 • 초기값을 설정 -> 조건 식을 비교해서 ‘True’일 경우 반복문장 실행 -> 증감 값에 대한 연산 실행 -> 조건 식과 비교해서 ‘False’가 되면 for 제어 문을 빠져 나오게 된다.

  23. - For 제어문 예제 - • 전진과 후진을 20번 동안 반복(0-19) • 단, for문을 사용할 것 • 동작 후 사운드 출력

  24. - Switch 제어문 함수 설명 - switch( 수식 ) { case 값1: 문장1; case 값2: 문장2; … default : 문장 N; } • 수식 값을 case 값과 비교해서 일치하면 해당 case 문장을 실행하고 빠져 • 나온다. • default는 case 값 외에 나머지 경우에 대해 정의 • case 문장 실행하고 제어 탈출을 위해 ‘break’문을 반드시 서술 • break; 문을 만나면 반복되는 블록의 마지막에서 반복 문을 이탈

  25. - Switch 제어문 예제 - • NXT에 있는 버튼을 눌러서 로봇을 원하는 방향으로 움직이는 로봇 • nNxtExitClicks = 클릭 횟수 • : 횟수 만큼 취소 버튼을 연속으로 클릭하면 프로그램이 종료 • nNxtButtonPressed • : NXT의 어떤 버튼이 눌렸는지를 알려주는 변수 • 단, switch문을 사용하여 작성할 것

  26. Mission IV (사각 턴 주행) 사각턴의 주행방법

  27. - Function(함수)란?- • 프로그램 내에서 반복적으로 많이 사용되는 작업을 작은 모듈로 만드는 것 • 함수를 만들어 놓으면 내부처리과정을 신경쓰지 않아도 함수의 호출만으로 정확한 출력을 볼 수 있다. • 종류 • - 프로그램의 처음을 알리는 main 함수 • - 제작사에서 제공하는 표준 라이브러리 함수 • - 프로그래머가 필요에 따라 만들어 사용하는 사용자 정의 함수

  28. - Function(함수)란?- • Return되는 데이터 형을 기록하고 다음에 함수 이름을 기록 • 매개변수들이 없거나 있을 수 있다. • 단, 매개변수를 사용하려면 호출하는 쪽의 매개변수의 개수와 받는 쪽의 매개변수의 개수가 같아야 한다.

  29. - ROBOTC 함수(Function)- • 전진과 후진을 2번 반복 • 사용자 정의 함수를 사용하면 보다 효율적인 프로그래밍을 할 수 있다.

  30. - ROBOTC 함수(매개 변수)- • 전진과 후진 함수의 속도와 시간을 다르게 설정하려면? • 매개변수를 받아 처리하는 함수로 제작하면 된다

  31. - ROBOTC#include - • #include 사용하기 • 모듈단위로 작성된 함수 프로그램을 하나의 파일에 저장 • #include 문을 통해 함수 불러오기 하여 사용 • 소스가 매우 길어지는 문제 해결에 도움이 된다.

  32. - 전처리기(Preprocessor) : 매크로 상수 - • 컴파일하기 전에 프로그램에 대해서 정의하여 대체(Replace) 하도록 하는 기능 • 하나의 기호상수나 자료 형을 다른 이름으로 대치시키도록 전처리기에 설정 • 매크로 상수가 실행되면 정의된 기호상수가 대치 • main() 함수가 시작되기 전에 먼저 정의해서 사용정의 후에 사용 • 모두 공백 없이 대문자로 사용하며 세미콜론을 사용하지 않는다.

  33. MultiTasking • NXT는 최대 256개의 태스크를 지원하고 각각의 task는 라운드로빈 방식을 사용하여 각각의 태스크를 처리 • StartTask(TaskID); TaskID에 해당하는 Task를 시작하거나 다시 시작한다. • StopAllTasks (); 현재 실행중인 모든 Task를 중지한다.

More Related