# 6차시 목차
들어가기(문제 이해하기)
[상상노트] 가장 중요한 목표와 소중한 시간 관리
스마트 RC카 프로그래밍 실습
모터 드라이버(L298N) 실습
모터 드라이버(L298N) 예제 코드 살펴보기
스마트 RC카 주행 제어
생각 펼치기
지속 가능한 팀 활동을 위해 이야기 나누기
들어가기 (문제 이해하기)
상상노트
목표 관리, 시간 관리에 도움이 되는 나만의 방법이 있다면 소개해주세요.
스마트 RC카를 만드는 과정도 동일합니다. 주어진 시간 안에서 팀원과 함께 역할을 잘 나누어 진행해주세요.
스마트 RC카 프로그래밍 실습
[모터 드라이버]
• 모터 드라이버(L298N)는 스마트 RC카의 바퀴를 움직이는 모터의 회전 방향이나 회전 속도를 조절하기 위해 필요한 장치
• 아두이노 보드를 활용해서 직접 모터 속도, 회전 방향을 조절할 수 있지만, 사용하는 모터가 요구하는 전원을 공급할 수 없어 모터 드라이버(L298N)를 사용
• 모터 드라이버(L298N)를 사용하기 위해서 별도의 전원 공급(배터리 추가 연결)이 필요
모터드라이버(L298N) 예제 코드 살펴보기
int RightMotor_E_pin = 5; // 오른쪽 모터의 Enable & PWM
int RightMotor_1_pin = 8; // 오른쪽 모터 제어선 IN1
int RightMotor_2_pin = 9; // 오른쪽 모터 제어선 IN2
int LeftMotor_3_pin = 10; // 왼쪽 모터 제어선 IN3
int LeftMotor_4_pin = 11; // 왼쪽 모터 제어선 IN4
int LeftMotor_E_pin = 6; // 왼쪽 모터의 Enable & PWM
void SmartCar_Go();
void SmartCar_Back();
//좌우 모터 속도 조절, 설정 가능 최대 속도 : 255
int L_MotorSpeed = 153; // 왼쪽 모터 속도
int R_MotorSpeed = 153; // 오른쪽 모터 속도
void setup() {
pinMode(RightMotor_E_pin, OUTPUT); // 출력모드로 설정
pinMode(RightMotor_1_pin, OUTPUT);
pinMode(RightMotor_2_pin, OUTPUT);
pinMode(LeftMotor_3_pin, OUTPUT);
pinMode(LeftMotor_4_pin, OUTPUT);
pinMode(LeftMotor_E_pin, OUTPUT);
}
void loop() {
SmartCar_Go();
delay(3000);
SmartCar_Back();
delay(3000);
}
void SmartCar_Go() { // 전진
Serial.println("Forward");
digitalWrite(RightMotor_1_pin, HIGH);
digitalWrite(RightMotor_2_pin, LOW);
digitalWrite(LeftMotor_3_pin, HIGH);
digitalWrite(LeftMotor_4_pin, LOW);
analogWrite(RightMotor_E_pin, L_MotorSpeed);
analogWrite(LeftMotor_E_pin, R_MotorSpeed);
}
void SmartCar_Back() { // 후진
Serial.println("Backward");
digitalWrite(RightMotor_1_pin, LOW);
digitalWrite(RightMotor_2_pin, HIGH);
digitalWrite(LeftMotor_3_pin, LOW);
digitalWrite(LeftMotor_4_pin, HIGH);
analogWrite(RightMotor_E_pin, L_MotorSpeed);
analogWrite(LeftMotor_E_pin, R_MotorSpeed);
}
digitalWrite(RightMotor_1_pin, HIGH);
digitalWrite(RightMotor_2_pin, LOW);
: 오른쪽 모터 정방향 회전
digitalWrite(RightMotor_1_pin, LOW);
digitalWrite(RightMotor_2_pin, HIGH);
: 오른쪽 모터 역방향 회전
digitalWrite(LeftMotor_3_pin, HIGH);
digitalWrite(LeftMotor_4_pin, LOW);
: 왼쪽 모터 정방향 회전
digitalWrite(LeftMotor_3_pin, LOW);
digitalWrite(LeftMotor_4_pin, HIGH);
: 왼쪽 모터 역방향 회전
스마트 RC카 주행 제어
1. 오른쪽 모터와 왼쪽 모터의 속도를 동일하게 설정하고 직진하였을 때, RC카가 오른쪽으로 향하게 되면 어떻게 해야 할까요?
[코드]
11 int L_MotorSpeed = 153;
12 int R_MotorSpeed = 153;
[코드]
11 int L_MotorSpeed = 153;
12 int R_MotorSpeed = 180;
회전이 더 느린 쪽의 속도를 높여주거나, 더 높은 곳을 낮춰주어 모터 속도를 교정할 수 있습니다.
2-1. 모터 드라이버 방향 실습 - 모터가 진전하려면?
2-2. 모터 드라이버 방향 실습 - 모터가 후전하려면?
3. 모터 드라이버 주행 실습
- 정회전(직진), 역회전(후진), 오른쪽 왼쪽 모터 회전 속도 조절하여 방향 전환
1.정해진 시간에 정한 목표를 모두 달성했나요? 목표로 삼은 결과물까지 도달하지 못했다면, 그 원인은 무엇이라고 생각하시나요? 조금 더 효율적으로 결과물을 만들기 위해서는 어떤 방법이 있을까요?
2.팀원과 함께 새로운 제품을 만드는 과정은 결코 쉬운 일이 아닙니다. 팀워크 속에는 소통, 신뢰, 관계, 협업 등 문제 해결을 위해 사람과 사람이 서로 만나 풀어야 하는 다양한 내용과 방법들이 담겨있습니다.
3.이제 팀원들과 함께 이번 과정을 통해 지속 가능한 팀 활동을 위해 꼭 필요한 내용들이 무엇인지 이야기를 나눠보고 글로 정리해봅시다.
[생각 정리] 오늘 학습한 내용을 키워드 중심으로 정리해봅시다.