10
10
// https://github.com/Arduino-IRremote/Arduino-IRremote - 이 라이브러리의 소스 코드와 문서는 GitHub에서 확인할 수 있습니다.
11
11
12
12
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
-
32
13
// 모터 쉴드 객체를 생성하고 I2C 주소를 초기화합니다.
33
14
CA_MotorShield dcMotor = CA_MotorShield(); // 기본 주소 0x60으로 생성
34
15
@@ -50,17 +31,11 @@ uint16_t controlSpeed = 70; // 모터의 초기 제어 속도를 70으로 설정
50
31
// 코딩어레이 스마트 RC카 방향 전환 제어 상수
51
32
// 이 상수들은 메카넘 휠을 장착한 코딩어레이 스마트 RC카의 다양한 이동 및 회전 동작을 정의합니다.
52
33
// 각 상수는 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카를 우측으로 회전시킵니다.
64
39
65
40
#define IR_RECEIVE_PIN 3 // IR 수신기를 연결할 아두이노의 핀 번호를 3번으로 설정합니다. 인터럽트 예제와 호환되도록 3번 핀을 사용합니다.
66
41
// #define IR_SEND_PIN 3 // IR 송신기를 연결할 아두이노의 핀 번호를 3번으로 설정할 수 있습니다.
@@ -173,19 +148,6 @@ void loop() {
173
148
case 0x52 : setMotorsDirection (CMD_BACKWARD, controlSpeed); break ; // 하단 ↓: 후진
174
149
case 0x08 : setMotorsDirection (CMD_LEFT, controlSpeed); break ; // 촤측 ←: 좌회전
175
150
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
-
189
151
case 0x16 :
190
152
// 전원 or +: 속도 증가
191
153
if (controlSpeed < MAX_SPEED) controlSpeed += 5 ;
@@ -213,9 +175,7 @@ void loop() {
213
175
* 따라서 RC카의 안정성을 향상시킵니다. 그 후 지정된 방향으로 모터의 회전 방향을 설정합니다.
214
176
* CMD_RELEASE가 아닌 경우에만 지정된 속도로 모터의 속도를 조절하여, RC카가 원하는 방향으로 움직이도록 합니다.
215
177
*
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 중 하나를 사용합니다.
219
179
* CMD_RELEASE를 선택할 경우 모든 모터가 정지합니다.
220
180
* @param speed 모터가 도달할 속도입니다. 이 속도는 모터의 방향이 CMD_RELEASE가 아닐 때 적용됩니다.
221
181
* 속도는 pwm 신호로 조절됩니다.
@@ -257,51 +217,8 @@ void setMotorsDirection(uint8_t direction, uint16_t speed) {
257
217
motor4->run (BACKWARD);
258
218
}
259
219
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가 아닐 때 적용됩니다.
302
221
303
- // CMD_RELEASE 상태가 아닌 경우, 지정된 속도로 모터의 속도를 조절합니다.
304
- if (direction != CMD_RELEASE) setMotorsSpeed (speed);
305
222
}
306
223
307
224
/* *
0 commit comments