자동화 챌린지 - C++
자동 챌린지
이 챌린지에서는 로봇이 여러 병실에 있는 환자에게 약물을 전달하기 때문에 병원을 탐색하도록 로봇을 프로그래밍해야 합니다.
교사 팁
병원에 대한 배경 스토리를 만들어 참여도를 높이세요! 이 병원은 어떤 유형의 병원이고, 어떤 유형의 환자를 치료합니까?
챌린지 규칙
-
로봇은 시작 구역에서 시작하고 종료해야 합니다.
-
작업을 완료하려면 전체 로봇이 약국, 엘리베이터 및 환자실 내부에 있어야 하며 다음 시간을 기다려야 합니다.
-
약국: 약을 수령할 때까지 최소 5초 이상 기다리십시오.
-
엘리베이터: 다른 층에 도착하려면 5초 이상 기다리세요.
-
환자실: 약을 떨어뜨릴 때까지 최소 3초 이상 기다리십시오.
-
-
로봇은 벽에 닿거나 벽을 넘어서는 안 됩니다.
-
로봇은 먼저 약국을 방문하여 환자 병실을 위한 약을 픽업해야 합니다.
-
로봇은 약물을 투약하기 위해 (특별한 순서 없이) 각 환자실을 방문해야 합니다.
-
즐거운 시간 보내세요!
교사 도구 상자
-
솔루션
학생들을 평가하기 위한 프로그래밍 평가 기준은 여기에서 확인할 수 있습니다(Google / .docx / .pdf ).
아래에서 VEXcode V5 C++ 샘플 솔루션을 확인하세요.
int main() {
// 로봇 구성 초기화. 제거하지 마세요!
vexcodeInit();
// 프로젝트 코드 시작
// 약국으로 이동
Drivetrain.driveFor(전진, 900, mm);
Drivetrain.turnFor(좌회전, 90, 도);
Drivetrain.driveFor(전진, 1350, mm);
Drivetrain.turnFor(우회전, 90, 도);
Drivetrain.driveFor(전진, 600, mm);
wait(6, 초);
// 1번 방으로 이동
Drivetrain.driveFor(후진, 600, mm);
Drivetrain.turnFor(우회전, 90, 도);
Drivetrain.driveFor(전진, 600, mm);
Drivetrain.turnFor(좌회전, 90, 도);
Drivetrain.driveFor(전진, 600, mm);
wait(5, 초);
// 엘리베이터로 이동
Drivetrain.driveFor(역방향, 600, mm);
Drivetrain.turnFor(우방향, 90, 도);
Drivetrain.driveFor(전방향, 600, mm);
Drivetrain.turnFor(좌방향, 90, 도);
Drivetrain.driveFor(전방향, 600, mm);
wait(6, 초);
// 2호실로 이동
Drivetrain.driveFor(역방향, 800, mm);
Drivetrain.turnFor(좌방향, 90, 도);
Drivetrain.driveFor(전방향, 1000, mm);
Drivetrain.turnFor(좌방향, 90, 도);
Drivetrain.driveFor(전방향, 800, mm);
wait(5, 초);
// 3호실로 이동
Drivetrain.driveFor(역방향, 800, mm);
Drivetrain.turnFor(left, 90, degrees);
Drivetrain.driveFor(forward, 600, mm);
Drivetrain.turnFor(right, 90, degrees);
Drivetrain.driveFor(forward, 800, mm);
wait(5, seconds);
// 엘리베이터로 이동
Drivetrain.driveFor(reverse, 800, mm);
Drivetrain.turnFor(left, 90, degrees);
Drivetrain.driveFor(forward, 600, mm);
Drivetrain.turnFor(right, 90, degrees);
Drivetrain.driveFor(forward, 800, mm);
wait(6, seconds);
// 시작 구역으로 돌아가기
Drivetrain.driveFor(forward, 1500, mm);
}