본문 바로가기
오픈소스하드웨어/마이크로:비트

[마이크로 비트 with 파이썬] LED 애니메이션 (3)

by 북마크한 취미생활 2020. 3. 19.

| 리스트를 이용한 애니메이션

지난번 포스팅에서는 display.show( )와 delay( ) 함수를 가지고 애니메이션을 만들어 봤는데요. 이렇게 할 경우 코드의 길이가 길어지는 단점이 있습니다.

이를 위해서 마이크로 비트에서는 파이썬의 자료형인 리스트를 활용하여 애니메이션을 표현할수 있도록 하였습니다. 설명을 드리기 전에 리스트로 구현된 애니메이션 파이썬 코드를 보여드리도록 하겠습니다.

from microbit import *

display.show(Image.ALL_CLOCKS, loop=True, delay=67)

굉장히 소스가 간결해 졌죠? 여기에서 'Image.ALL_CLOCKS'라는 것이 바로 리스트(list) 자료형입니다. 이 리스트 자료형에 이전 포스팅의 CLOCK1부터 CLOCK12까지의 데이터가 모두 저장이 되어 있습니다.

loot=True는 반복하라는 의미이고, delay=67이라는 것은 67ms동안 멈추라는 의미입니다. 예컨대 마이크로 비트의 내장 이미지인 CLOCK1부터 CLOCK12까지 67ms간격으로 화면에 표현하고, 이미지를 반복해서 보여주라는 것입니다.

이 파이썬 코드를 실행을 하면 지난번에 포스팅에서 소개해 드린것과 동일한 동작함을 볼 수 있습니다.

코드는 다르지만 이전 포스팅과 동일한 동작

| 리스트(list) 데이터형 이란

리스트는 숫자나 문자열 등의 데이터를 저장할수 있는 데이터형입니다. 사용방법은 각각의 자료를 콤마(,)로 구분하고 전체를 대괄호([ ])로 감쌉니다. 쉽게 일렬로 나열된 방이 존재를 하고 그 방을 찾기 위해 방마다 숫자가 붙어 있다고 생각하시면 됩니다.

예를 들어 1, 2, 3 이라는 세 개의 숫자를 저장하는 리스트를 만들면 다음과 같이 작성하면 됩니다.

test = [1, 2, 3]

참고로 리스트 자료형은 0번부터 번호가 부여가 됩니다. 따라서 첫 번째 저장한 값을 선택을 하기 위해서는 리스트 데이터형의 0번으로 찾아야 됩니다. 형식은 아래와 같이 리스트 변수 이름, 대괄호, 번호 형태를 취하면 됩니다.

test[0]

대략 이런 형태로 리스트를 사용한다고만 이해하시면 됩니다. 이해가 안가시더라고 리스트 데이터 형이라는 것이 있다  정도만 이해하시고 넘어가시면 됩니다. 리스트 데이터형의 사용형태만 익히고 애니메이션을 표현을 하는 것이 목적이니까요. 문법이 필요하다고 생각하면 나중에 기초 파이썬 문법을 포스팅하도록 하겠습니다.

| 커스텀 이미지 리스트형으로 만들고 출력하기

커스텀이미지는 아래와 같이 눈이 번쩍이는 형태로 만들 것입니다.

from microbit import *

face1 = Image("00000:"
              "03030:"
              "00000:"
              "09990:"
              "00000")

face2 = Image("00000:"
              "06060:"
              "00000:"
              "09990:"
              "00000")

face3 = Image("00000:"
              "09090:"
              "00000:"
              "09990:"
              "00000")
              
all_faces = [face1, face2, face3, face2]
display.show(all_faces, loop=True, delay=200)

all_faces라는 리스트 변수에 face1, face2, face3, face2를 집어 넣습니다. 마지막에 face2를 추가한 이유는 애니메이션이 자연스럽게 반복되게 하기 위해서입니다.

해당 파이썬 코드를 마이크로 비트에 업로드(Flash)하면 아래와 같은 결과를 볼수 있습니다.

포스팅한 파이썬 코드를 활용하셔서 자신만의 커스텀 이미지 애니메이션을 만들어 보시길 바랍니다.

긴 글 읽어 주셔서 감사합니다.

반응형

댓글