Skip to content

Commit af6e850

Browse files
committed
added new examples.
1 parent 0cc602e commit af6e850

File tree

3 files changed

+590
-90
lines changed

3 files changed

+590
-90
lines changed

examples/ex04.IR_RemoteControl_4WD/ex04.IR_RemoteControl_4WD.ino

Lines changed: 7 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -10,25 +10,6 @@
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 주소를 초기화합니다.
3314
CA_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

Comments
 (0)