4권 · 5. 자율 주행 자동차 만들기 1

자율 주행 자동차 만들기 1

엘리오 자동차가 스스로 앞을 살피며 움직여요. 장애물을 만나면 어느 쪽이 더 넓은지 생각하고 방향을 바꿔요 🚗

  • 대상 초등 4학년
  • 준비물 4개
  • 블록 80개
  • 산출물 초음파 센서로 장애물을 피하는 자율 주행 자동차를 코딩해요.

오늘 수업 한눈에

  1. 1무엇을 만들까?
  2. 2준비물
  3. 3따라해 보자
  4. 4완성 코드
  5. 5도전

4권 · 5. 자율 주행 자동차 만들기 1

자율 주행 자동차 만들기 1

엘리오 자동차가 스스로 앞을 살피며 움직여요. 장애물을 만나면 어느 쪽이 더 넓은지 생각하고 방향을 바꿔요 🚗

오늘의 미션

초음파 센서로 장애물을 피하는 자율 주행 자동차를 코딩해요.

무엇을 만들까?

자율 주행 자동차 만들기 1 완성 모습
앞을 살피고, 더 넓은 길로 움직이는 엘리오 자동차예요.

초음파 센서로 장애물까지의 거리를 여러 번 재요.

여러 거리 값을 더하고 나누어 평균 거리를 구해요.

왼쪽과 오른쪽 거리 중 더 넓은 쪽으로 자동차를 움직여요.

준비물

  • 엘리오 자동차코딩한 대로 앞으로 가고 방향을 바꾸는 주인공이에요.
  • 초음파 센서앞에 장애물이 있는지 거리를 재요.
  • 모터와 바퀴왼쪽 바퀴와 오른쪽 바퀴를 움직여요.
  • 키보드속도, 기준 거리, 회전 시간을 바꿀 때 써요.

따라해 보자

  1. 1

    거리 평균 구하기

    초음파 센서로 거리를 5번 재고 평균을 만들어요.

  2. 2

    속도 정하기

    위아래 화살표키로 자동차의 회전속도를 조절해요.

  3. 3

    기준 정하기

    좌우 화살표키로 장애물을 피할 기준 거리를 정해요.

  4. 4

    좌우 살피기

    왼쪽과 오른쪽으로 살짝 돌며 어느 쪽 거리가 더 긴지 확인해요.

  5. 5

    방향 고르기

    더 넓은 쪽으로 움직이도록 자동차에게 알려줘요.

완성 코드

🧱완성 코드 80블록 — 블록이 아주 많아요! 눌러서 펼쳐 보기

이 작품은 코드가 길어요. 천천히 부분부분 따라 만들어 봐요. 아래는 실제 Scratch 3.0 완성 코드예요.

스프라이트 1

정의하기 거리 구하기
(5)번 반복하기
[거리▾] 을(를) (거리)로 정하기
[거리 합▾] 을(를) (거리)만큼 바꾸기
[거리 평균▾] 을(를) ((거리 합) ÷ (5))로 정하기
[거리 합▾] 을(를) (0)로 정하기
정의하기 왼쪽으로
모터1▾ 회전속도 , 모터2▾ 회전속도 으로 정하기
⚑ 클릭했을 때
[회전속도▾] 을(를) (50)로 정하기
[속도▾] 을(를) (100)로 정하기
정의하기 회전속도 정하기
만약 [up arrow▾] 키를 눌렀는가? (이)라면
[회전속도▾] 을(를) (5)만큼 바꾸기
만약 (회전속도) > (100) (이)라면
[회전속도▾] 을(를) (100)로 정하기
만약 [down arrow▾] 키를 눌렀는가? (이)라면
[회전속도▾] 을(를) (-5)만큼 바꾸기
만약 (회전속도) < (0) (이)라면
[회전속도▾] 을(를) (0)로 정하기
(0.1)초 기다리기
정의하기 거리 기준 정하기
만약 [right arrow▾] 키를 눌렀는가? (이)라면
[기준▾] 을(를) (1)만큼 바꾸기
만약 (기준) > (50) (이)라면
[기준▾] 을(를) (50)로 정하기
만약 [left arrow▾] 키를 눌렀는가? (이)라면
[기준▾] 을(를) (-1)만큼 바꾸기
만약 (기준) < (0) (이)라면
[기준▾] 을(를) (0)로 정하기
(0.1)초 기다리기
정의하기 앞으로
모터1▾ (-1) × (회전속도) , 모터2▾ 회전속도 으로 정하기
정의하기 왼쪽-오른쪽 회전 정하기
만약 [s▾] 키를 눌렀는가? (이)라면
[회전시간▾] 을(를) (0.1)만큼 바꾸기
만약 (회전시간) > (3) (이)라면
[회전시간▾] 을(를) (3)로 정하기
만약 [a▾] 키를 눌렀는가? (이)라면
[회전시간▾] 을(를) (-0.1)만큼 바꾸기
만약 (회전시간) < (0) (이)라면
[회전시간▾] 을(를) (0)로 정하기
(0.1)초 기다리기
⚑ 클릭했을 때
[회전속도▾] 을(를) (50)로 정하기
[기준▾] 을(를) (25)로 정하기
[회전시간▾] 을(를) (1)로 정하기
무한 반복하기
회전속도 정하기
거리 기준 정하기
왼쪽-오른쪽 회전 정하기
정의하기 오른쪽으로
모터1▾ (-1) × (회전속도) , 모터2▾ (-1) × (회전속도) 으로 정하기
정의하기 뒤로
모터1▾ 회전속도 , 모터2▾ (-1) × (회전속도) 으로 정하기
정의하기 움직이는 방향 정하기
만약 (왼쪽 거리) > (오른쪽 거리) (이)라면
왼쪽으로
(왼쪽으로 갑니다.) 을(를) (1)초 동안 말하기
아니면
오른쪽으로
(오른쪽으로 갑니다.) 을(를) (1)초 동안 말하기
(1)초 기다리기
정의하기 멈추기
모터1▾ 0 , 모터2▾ 0 으로 정하기
정의하기 장애물을 만났다면
만약 (거리 평균) < (기준) (이)라면
[왼쪽 거리▾] 을(를) (0)로 정하기
[오른쪽 거리▾] 을(를) (0)로 정하기
멈추기
(0.5)초 기다리기
왼쪽 확인
(0.5)초 기다리기
오른쪽 확인
(0.5)초 기다리기
움직이는 방향 정하기
⚑ 클릭했을 때
[거리▾] 을(를) (0)로 정하기
[거리 합▾] 을(를) (0)로 정하기
[거리 평균▾] 을(를) (0)로 정하기
무한 반복하기
앞으로
거리 구하기
장애물을 만났다면
정의하기 왼쪽 확인
왼쪽으로
(회전시간)초 기다리기
거리 구하기
[왼쪽 거리▾] 을(를) (거리 평균)로 정하기
(회전시간)초 기다리기
오른쪽으로
정의하기 오른쪽 확인
오른쪽으로
(회전시간)초 기다리기
거리 구하기
[오른쪽 거리▾] 을(를) (거리 평균)로 정하기
(회전시간)초 기다리기
왼쪽으로

진짜 소스: 6.자율 주행 자동차 만들기 1.sb2 · 80블록

도전!

기준 거리나 회전 시간을 바꿔서 자동차가 더 부드럽게 피하는지 살펴봐요.

응원하는 엘리오
엘리오

스스로 길을 찾는 자동차를 코딩했어요. 정말 멋져요! 🎉

다음 단위자율 주행 자동차 만들기 2