1010// https://github.com/Arduino-IRremote/Arduino-IRremote - 이 라이브러리의 소스 코드와 문서는 GitHub에서 확인할 수 있습니다.
1111
1212
13- // 고무바퀴를 나타내는 상수 정의.
14- // 전진, 후진, 제자리 좌회전, 제자리 우회전, 정지 구동이 가능합니다.
15- #define RUBBER_WHEEL 0
16-
17- // 메카넘 바퀴를 나타내는 상수 정의.
18- // 전진, 후진, 제자리 좌회전, 제자리 우회전, 정지,
19- // 전방 좌측 대각선, 전방 우측 대각선, 후방 좌측 대각선, 후방 우측 대각선, 제자리에서 좌측 회전, 제자리에서 우측 회전 구동이 가능합니다.
20- #define MECANUM_WHEEL 1
21-
22-
23- // ======================= 설정 필요 ==========================//
24- // 컴파일 시 바퀴 타입 선택을 위한 매크로 정의.
25- // 이 값은 프로그램 내에서 바퀴의 동작 방식을 결정하는 데 사용됩니다.
26- // 초기값은 RUBBER_WHEEL를 선택하여, 고무바퀴의 동작 방식을 활성화하고 있습니다.
27- // 코딩어레이 스마트 RC카에 장착한 바퀴 타입에 따라 MECANUM_WHEEL로 변경하여 메카넘 바퀴 모드를 활성화할 수 있습니다.
28- #define WHEEL_TYPE RUBBER_WHEEL
29- // ===========================================================//
30-
31-
3213// 모터 쉴드 객체를 생성하고 I2C 주소를 초기화합니다.
3314CA_MotorShield dcMotor = CA_MotorShield(); // 기본 주소 0x60으로 생성
3415
@@ -50,17 +31,11 @@ uint16_t controlSpeed = 70; // 모터의 초기 제어 속도를 70으로 설정
5031// 코딩어레이 스마트 RC카 방향 전환 제어 상수
5132// 이 상수들은 메카넘 휠을 장착한 코딩어레이 스마트 RC카의 다양한 이동 및 회전 동작을 정의합니다.
5233// 각 상수는 RC카의 특정한 동작 모드를 나타내며, 이를 통해 RC카를 다양한 방향으로 조작할 수 있습니다.
53- #define CMD_RELEASE 0 // 정지: 코딩어레이 스마트 RC카를 정지시킵니다.
54- #define CMD_FORWARD 1 // ↑: 코딩어레이 스마트 RC카를 전진시킵니다.
55- #define CMD_BACKWARD 2 // ↓: 코딩어레이 스마트 RC카를 후진시킵니다.
56- #define CMD_LEFT 3 // ←: 코딩어레이 스마트 RC카를 좌측으로 회전시킵니다.
57- #define CMD_RIGHT 4 // →: 코딩어레이 스마트 RC카를 우측으로 회전시킵니다.
58- #define CMD_FORWARD_LEFT 5 // ↖: 코딩어레이 스마트 RC카를 전방 좌측 대각선 방향으로 이동시킵니다.
59- #define CMD_FORWARD_RIGHT 6 // ↗: 코딩어레이 스마트 RC카를 전방 우측 대각선 방향으로 이동시킵니다.
60- #define CMD_BACKWARD_LEFT 7 // ↙: 코딩어레이 스마트 RC카를 후방 좌측 대각선 방향으로 이동시킵니다.
61- #define CMD_BACKWARD_RIGHT 8 // ↘: 코딩어레이 스마트 RC카를 후방 우측 대각선 방향으로 이동시킵니다.
62- #define CMD_LEFT_TURN_ROUND 9 // 제자리에서 좌측으로 회전: 코딩어레이 스마트 RC카를 제자리에서 좌측으로 회전시킵니다.
63- #define CMD_RIGHT_TURN_ROUND 10 // 제자리에서 우측으로 회전: 코딩어레이 스마트 RC카를 제자리에서 우측으로 회전시킵니다.
34+ #define CMD_RELEASE 0 // 정지: 코딩어레이 스마트 RC카를 정지시킵니다.
35+ #define CMD_FORWARD 1 // ↑: 코딩어레이 스마트 RC카를 전진시킵니다.
36+ #define CMD_BACKWARD 2 // ↓: 코딩어레이 스마트 RC카를 후진시킵니다.
37+ #define CMD_LEFT 3 // ←: 코딩어레이 스마트 RC카를 좌측으로 회전시킵니다.
38+ #define CMD_RIGHT 4 // →: 코딩어레이 스마트 RC카를 우측으로 회전시킵니다.
6439
6540#define IR_RECEIVE_PIN 3 // IR 수신기를 연결할 아두이노의 핀 번호를 3번으로 설정합니다. 인터럽트 예제와 호환되도록 3번 핀을 사용합니다.
6641// #define IR_SEND_PIN 3 // IR 송신기를 연결할 아두이노의 핀 번호를 3번으로 설정할 수 있습니다.
@@ -173,19 +148,6 @@ void loop() {
173148 case 0x52 : setMotorsDirection (CMD_BACKWARD, controlSpeed); break ; // 하단 ↓: 후진
174149 case 0x08 : setMotorsDirection (CMD_LEFT, controlSpeed); break ; // 촤측 ←: 좌회전
175150 case 0x5A : setMotorsDirection (CMD_RIGHT, controlSpeed); break ; // 우측 →: 우회전
176-
177- // 컴파일 시 바퀴 타입 선택을 위한 매크로 정의.
178- #if WHEEL_TYPE == MECANUM_WHEEL // 메카넘 바퀴 모드 활성화
179-
180- case 0x0C : setMotorsDirection (CMD_FORWARD_LEFT, controlSpeed); break ; // 좌측 상단 ↖: 전진 좌회전
181- case 0x5E : setMotorsDirection (CMD_FORWARD_RIGHT, controlSpeed); break ; // 우측 상단 ↗: 전진 우회전
182- case 0x42 : setMotorsDirection (CMD_BACKWARD_LEFT, controlSpeed); break ; // 좌측 하단 ↙: 후진 좌회전
183- case 0x4A : setMotorsDirection (CMD_BACKWARD_RIGHT, controlSpeed); break ; // 우측 하단 ↘: 후진 우회전
184- case 0x07 : setMotorsDirection (CMD_LEFT_TURN_ROUND, controlSpeed); break ; // 숫자 7: 제자리 좌회전
185- case 0x09 : setMotorsDirection (CMD_RIGHT_TURN_ROUND, controlSpeed); break ; // 숫자 9: 제자리 우회전
186-
187- #endif // WHEEL_TYPE 조건 종료
188-
189151 case 0x16 :
190152 // 전원 or +: 속도 증가
191153 if (controlSpeed < MAX_SPEED) controlSpeed += 5 ;
@@ -213,9 +175,7 @@ void loop() {
213175 * 따라서 RC카의 안정성을 향상시킵니다. 그 후 지정된 방향으로 모터의 회전 방향을 설정합니다.
214176 * CMD_RELEASE가 아닌 경우에만 지정된 속도로 모터의 속도를 조절하여, RC카가 원하는 방향으로 움직이도록 합니다.
215177 *
216- * @param direction 설정할 모터의 방향입니다. CMD_LEFT, CMD_RIGHT, CMD_FORWARD, CMD_BACKWARD, CMD_RELEASE,
217- * CMD_FORWARD_LEFT, CMD_FORWARD_RIGHT, CMD_BACKWARD_LEFT, CMD_BACKWARD_RIGHT,
218- * CMD_LEFT_TURN_ROUND, CMD_RIGHT_TURN_ROUND 중 하나를 사용합니다.
178+ * @param direction 설정할 모터의 방향입니다. CMD_LEFT, CMD_RIGHT, CMD_FORWARD, CMD_BACKWARD, CMD_RELEASE 중 하나를 사용합니다.
219179 * CMD_RELEASE를 선택할 경우 모든 모터가 정지합니다.
220180 * @param speed 모터가 도달할 속도입니다. 이 속도는 모터의 방향이 CMD_RELEASE가 아닐 때 적용됩니다.
221181 * 속도는 pwm 신호로 조절됩니다.
@@ -257,51 +217,8 @@ void setMotorsDirection(uint8_t direction, uint16_t speed) {
257217 motor4->run (BACKWARD);
258218 }
259219
260- // 컴파일 시 바퀴 타입 선택을 위한 매크로 정의.
261- #if WHEEL_TYPE == MECANUM_WHEEL // 메카넘 바퀴 모드 활성화
262-
263- else if (direction == CMD_FORWARD_LEFT) {
264- // 매카넘 휠 : 전방 좌측 대각선 방향으로 이동을 위해 1번과 3번 모터는 정지로, 2번과 4번 모터는 앞으로 설정합니다.
265- motor1->run (RELEASE);
266- motor2->run (FORWARD);
267- motor3->run (RELEASE);
268- motor4->run (FORWARD);
269- } else if (direction == CMD_FORWARD_RIGHT) {
270- // 매카넘 휠 : 전방 우측 대각선 방향으로 이동을 위해 1번과 3번 모터는 앞으로, 2번과 4번 모터는 정지로 설정합니다.
271- motor1->run (FORWARD);
272- motor2->run (RELEASE);
273- motor3->run (FORWARD);
274- motor4->run (RELEASE);
275- } else if (direction == CMD_BACKWARD_LEFT) {
276- // 매카넘 휠 : 후방 좌측 대각선 방향으로 이동을 위해 1번과 3번 모터는 뒤로, 2번과 4번 모터는 정지로 설정합니다.
277- motor1->run (BACKWARD);
278- motor2->run (RELEASE);
279- motor3->run (BACKWARD);
280- motor4->run (RELEASE);
281- } else if (direction == CMD_BACKWARD_RIGHT) {
282- // 매카넘 휠 : 후방 우측 대각선 방향으로 이동을 위해 1번과 3번 모터는 정지로, 2번과 4번 모터는 뒤로 설정합니다.
283- motor1->run (RELEASE);
284- motor2->run (BACKWARD);
285- motor3->run (RELEASE);
286- motor4->run (BACKWARD);
287- } else if (direction == CMD_LEFT_TURN_ROUND) {
288- // 매카넘 휠 : 제자리에서 좌측으로 회전 1번과 2번 모터는 뒤로, 3번과 4번 모터는 앞으로 설정합니다.
289- motor1->run (BACKWARD);
290- motor2->run (BACKWARD);
291- motor3->run (FORWARD);
292- motor4->run (FORWARD);
293- } else if (direction == CMD_RIGHT_TURN_ROUND) {
294- // 매카넘 휠 : 제자리에서 우측으로 회전 1번과 2번 모터는 앞으로, 3번과 4번 모터는 뒤로 설정합니다.
295- motor1->run (FORWARD);
296- motor2->run (FORWARD);
297- motor3->run (BACKWARD);
298- motor4->run (BACKWARD);
299- }
300-
301- #endif // WHEEL_TYPE 조건 종료
220+ if ((direction != CMD_RELEASE) setMotorsSpeed (speed); // 모터가 도달할 속도입니다. 이 속도는 모터의 방향이 CMD_RELEASE가 아닐 때 적용됩니다.
302221
303- // CMD_RELEASE 상태가 아닌 경우, 지정된 속도로 모터의 속도를 조절합니다.
304- if (direction != CMD_RELEASE) setMotorsSpeed (speed);
305222}
306223
307224/* *
0 commit comments