이전 포스팅에서 LED에 이미지를 출력하는 방법을 익혔습니다. 이번 포스팅에서는 마이크로:비트의 내장 5x5 LED를 이용하여 애니메이션 효과를 내보도록 하겠습니다.
| 애니메이션의 원리
동영상이나 애니메이션은 잔상효과(persistence of vision)를 이용하는 것입니다. 잔상효과라는 것은 이미지가 사라져도 사람의 눈이나 뇌에 이전 이미지가 계속 남아 있어 인식되는 것을 경향을 말합니다.
잔상효과가 사라지기 전에 이전 이미지와 조금 다른 이미지가 보이면 사람이 이를 연속적인 영상인 동영상으로 인식하게 됩니다. 일반적으로 초당 15~20장 이상의 그림이면 사람은 자연스러운 움직임으로 인식합니다.
| 기본적인 애니메이션
이번 예제는 작은 하트와 큰 하트가 번갈아 가면서 보이는 애니메이션으로 설명드리도록 하겠습니다. 이미지는 마이크로:비트의 내장 이미지인 HEART, SAMLL_HEART를 사용하도록 하겠습니다.
애니메이션을 자연스럽게 표현하기 위해서 각 이미지마다 1/15초 간격의 변화가 있어야 합니다. 이렇게 하기 위해서는 이미지를 1/15초 간격으로 보이게 하면 됩니다.
포스팅에서 진행하는 예제는 여러 장을 사용하지 않기 때문에 초당 15장인 67ms(1초/15)가 아닌 5장인 200ms(1초/5) 간격으로 진행하였습니다.
이미지의 출력 후 200ms초의 시간의 간격을 주기 위해서 sleep( ) 함수를 사용합니다. 이는 마이크로:비트에게 'sleep( ) 함수에 입력한 시간만큼 잠시 멈추어 있어라'라는 의미입니다. sleep( ) 함수는 1초를 1,000으로 표현을 합니다. 따라서 1/5초라는 시간 동안 멈춰있기 위해서는 1,000/5의 값을 주면 되고, 이를 계산하면 200이 됩니다. 따라서 sleep(200)으로 파이썬 코드에 표현을 하면 됩니다.
이제까지 설명드린 것을 파이썬 코드로 변경을 하면 아래와 같습니다.
from microbit import *
while True :
display.show(Image.HEART)
sleep(200)
display.show(Image.HEART_SMALL)
sleep(200)
Mu 에디터에서 위의 코드를 붙이고, 마이크로:비트에 프로그램을 업로드(Flash)하면 아래와 같이 결과를 볼 수 있습니다.
| 숙제
마이크로:비트의 내장 이미지 COLCK1 ~ CLOCK12를 사용하여 시곗바늘이 움직이는 애니메이션을 만들어 보시길 바랍니다. 너무 식상하시다면 다른 내장된 이미지를 이용하여 자신만의 애니메이션을 만들어 보셔도 됩니다.
한번 해 보라고 말씀드리는 이유는 눈으로 이해하는 것과 한번 보는 것과는 차이가 있기 때문입니다. 다음 포스팅까지 재미있게 마이크로:비트를 가지고 이것저것 테스트해 보시길 바랍니다
긴 글 읽어 주셔서 감사합니다.
'오픈소스하드웨어 > 마이크로:비트' 카테고리의 다른 글
[마이크로 비트 with 파이썬] LED 애니메이션 (3) (0) | 2020.03.19 |
---|---|
[마이크로 비트 with 파이썬] LED 애니메이션 (2) (0) | 2020.03.17 |
[마이크로:비트 with 파이썬] LED 이미지 (0) | 2020.03.13 |
[마이크로:비트 with 파이썬] Hello, World (0) | 2020.03.06 |
[마이크로:비트 with 파이썬] 코딩환경 만들기 (0) | 2020.03.04 |
댓글