강의 수료 - 자율주행 2

smj_716·2025년 1월 14일

와이즈교육

목록 보기
5/6

스크래치파이썬을 이용하여 여러가지 제어들을 다루어 알티노 라이트를 작동시켜보았다. 이 글에서는 각 제어마다 많은 예제 문제들 중 하나만 선택하여 기록하였다.

1. 조향(방향)제어

조향은 자동차 타이어가 굴러가는 방향을 조정하는 장치로 자동차의 방향을 바꾸는 기술이며, 스티어링 시스템(Steering System)이라고도 한다.

스크래치
왼쪽은 책에 있는 문제의 사진이며, 오른쪽은 실제 스크래치에서 블록을 생성하여 캡쳐한 화면이다.

파이썬
Steering 함수 - def Steering(st)

  • st의 왼쪽 방향은 -1 ~ -127, 가운데는 0, 오른쪽 방향은 1 ~ 127
  • 조향 장치는 0~20°를 숫자 0~127°로 제어함 (5->32, 10->63, 15->95)

예제문제)
조향 왼쪽 방향 10도) 조향 왼쪽 방향 10°-> 오른쪽 방향 10° -> 가운데로 가기

from AltinoLite import*
Open('com4')
Steering(-63)
delay(3000)
Steering(63)
delay(3000)
Steering(0)

2. 라이트 제어

전방, 브레이크, 왼쪽 방향지시등, 오른쪽 방향지시등을 제어할 수 있다.

스크래치

파이썬
Light 함수 - def Light(led) / def light(led) / def Led(led) / def led(led)

  • Light 인자값 : 0x00 ~ 0x0f로 알티노 라이트 8개를 제어함
  • 십진수 기준 : 전방 1, 브레이크 2, 왼쪽 4, 오른쪽 8

예제문제)
알티노 라이트 오른쪽 방향 등 켜고 5초 후 끄기

from AltinoLite import*
Open('com4')
Led(0x08)
delay(5000)
Led(0)
Close()

3. 부저 제어

부저음을 1~8 옥타브와 음계로 소리를 내며 원하는 음악을 연주할 수 있다.

스크래치

파이썬
Sound 함수 - def Sound(buzzer)

  • 부저에 주파수 변환값을 주어 제어함
  • 인자값 : 0~255 (4-옥타브를 기본으로 사용)

예제문제)
4-옥타브/도 레 미 파 솔 라 시 도, 5-옥타브/도 1초 간격으로 소리내기

from AltinoLite import*
Open('com4')
Sound(37);delay(1000)
Sound(39);delay(1000)
Sound(41);delay(1000)
Sound(42);delay(1000)
Sound(44);delay(1000)
Sound(46);delay(1000)
Sound(48);delay(1000)
Sound(49);delay(1000)
Sound(0);delay(1000)
Close()

4. 디스플레이 제어

가로 8행과 세로 8열로 64개의 도트로 이루어지며, 알티노 라이트 디스플레이에 글자를 출력할 수 있다.

스크래치

파이썬
Display 함수 - def Display(dot)

  • 아스키 코드 값을 입력하면 해당하는 문자가 출력됨
  • ASCII인자 값은 아스키 코드 값을 입력하면 그 값을 출력함

예제문제)
300 속도 전진, 글자 U출력 -> 2초 지연 -> -300 속도 후진, 글자 D출력 -> 1초 지연 -> 멈춤, 글자 출력 없음

from AltinoLite import*
Open('com4')
Go(300,300)
Display('U')
delay(2000)
Go(-300,-300)
Display('D')
delay(1000)
Go(0,0)
Display(0)
Close()

5. 반복문 제어

반복문 블록을 사용해 블록 개수를 줄이고, 조건문 블록을 사용해 조건에 따라 참과 거짓을 판별하고 이에 따른 명령을 실행한다.

스크래치

파이썬

  • while()문과 for()문, break문을 이용함

예제문제) 알티노 라이트 도 소리 1초 간격으로 켜고 끄기 무한반복

from AltinoLite import*
Open('com4')
While 1:
  Sound(37)
  delay(1000)
  Sound(0)
  delay(1000)
Close()

6. 조도센서 제어

조도는 빛의 양을 의미하며, 조도 센서는 주변의 밝기를 측정한다. 밝을 수록 센서 값이 커지며 센서 값은 0~3000이다.

스크래치

파이썬
class SensorData: CDS = 0

  • SensorData클래스에는 알티노 라이트의 적외선 센서, 조도 센서, 조향 토크, 배터리 잔량 표시 등이 있음

예제문제)
조도 값의 수가 100보다 크면 조향을 왼쪽으로, 100보다 작으면 조향을 가운데로 하기

from AltinoLite import*
Open('com4')
While 1:
  if sensor.CDS > 100:
     Steering(127)
  else:
     Steering(0)
Close()

7. 적외선 제어

적외선은 빛을 발생 시키는 LED와 적외선을 감지하는 LED 2개로 구성되어 있다. 적외선 센서 앞에 물체가 감지되면 반사된 적외선의 값이 나타난다. 센서값은 0~2000이며 가까운 거리일 수록 값이 커진다.

스크래치

파이썬
class SensorData: IR = [0,0,0,0,0,0,0,0]
예제문제) 알티노 라이트의 적외선 센서에 손을 가까이하면 조향이 반응하고 멀어지면 중앙으로 정렬하세요

from AltinoLite import*
Open('com4')
While 1:
  if sensor.IR[4] > 300:
     Steering(127)
  elif sensor.IR[5] > 300:
     Steering(127)
  else:
     Steering(0)
Close()

0개의 댓글