이번 실습은 CanMV 환경에서 print() 함수를 사용하여 데이터를 출력하는 기본 방법을 다룹니다. 터미널이나 파일에 텍스트를 기록하는 방법을 익히면 이후 복잡한 프로젝트에서 디버깅과 데이터 로깅에 활용할 수 있습니다.
1. print() 함수 개요
CanMV에서 print()는 지정된 객체를 문자열로 변환하고, 구분자(sep)로 나누고, 끝문자(end)를 추가하여 특정 출력 대상(file)으로 전송합니다. 기본 설정은 다음과 같습니다:
print(*objects, sep=' ', end='\n', file=sys.stdout)
- objects: 출력할 데이터(하나 이상 가능).
- sep: 객체 사이의 구분자(기본값: 공백).
- end: 출력 끝에 추가할 문자열(기본값: 줄바꿈).
- file: 출력 대상.
sys.stdout는 UARTHS(시리얼 포트)로 출력하며, 파일 객체로 변경 가능.
예제:
>>> print('Hello, World!')
Hello, World!
>>> print('Hello', 'World', sep=', ', end='!\n')
Hello, World!
>>> f = open('/flash/log.txt', 'w')
>>> print("Hello, World!", file=f)
>>> f.close()
>>> f = open('/flash/log.txt', 'r')
>>> print(f.read())
>>> f.close()
Hello, World!
2. 하드웨어 구성
이 실험은 순수 소프트웨어 기능을 테스트하므로 별도의 하드웨어 회로나 핀 연결이 필요하지 않습니다. DNK210 보드와 USB 케이블만 준비하면 됩니다.
3. 소프트웨어 설계
프로그램 흐름도
실행 순서: 문자열 출력 → 파일 열기 → 파일에 쓰기 → 파일 닫기
main.py 코드
# 시스템 표준 출력(시리얼 터미널)으로 출력
print('Hello, DNK210!')
# 파일에 출력
file_handle = open('/flash/test.txt', 'w')
print('Hello, DNK210!', file=file_handle)
file_handle.close()
위 코드는 먼저 시리얼 터미널에 "Hello, DNK210!"을 표시하고, 동일한 문자열을 /flash/test.txt 파일에 저장합니다. 파일 쓰기 후 반드시 close()를 호출해야 데이터가 안전하게 기록됩니다.
4. 실행 확인
- DNK210 보드를 CanMV IDE에 연결합니다.
- IDE에서 "Start(실행)" 버튼을 누릅니다.
- 시리얼 터미널 창에 "Hello, DNK210!"이 출력됩니다.
- 파일 내용을 확인하려면 다음 스크립트를 실행하세요:
f = open('/flash/test.txt', 'r')
content = f.read()
print(content)
f.close()
터미널에 "Hello, DNK210!"이 다시 출력되면 파일 쓰기가 정상적으로 동작한 것입니다.