Precalculator – 공학용 계산기를 만들어 보자

Short Introduction

이 프로젝트는 공학용 계산기를 제작하는 프로젝트로, 기존 계산기의 사칙연산, 루트, 로그 등 기본적인 연산을 구현하였습니다. 또한 추후 화학과목에 특화된 기능을 추가해 나갈 예정입니다.

Content

먼저, 이 프로젝트는 마스터톤 교재를 풀면서 화학과목에 특화된 계산기를 만들어서 유효숫자 등을 편하게 계산할 수 있도록 해보자는 생각에서 시작되었습니다.

첫 목표는 입력한 식을 디스플레이에 출력하고, 사칙연산, 로그, 루트, 지수 등 공학용 계산기의 기본적인 연산을 수행할 수 있도록 하는 것이었습니다. 추가로 화학 계산기를 만들자는 목표에 맞게 원자번호를 입력하면 원자량을 출력해주고 유효숫자를 계산해주는 등의 세부적인 기능을 추가해 나가고자 했습니다.

[하드웨어]

CPU: STM32L552CCU6 – Low-power ARM CPU, Max speed 110MHz

디스플레이: ePD – 2 inch, 200×96 pixels

버튼: 50개 (전원 버튼 1개, 기능 버튼 49개)

배터리: CR2032 x 1

하루 한 시간 사용 기준 약 128일동안 사용이 가능합니다.

[소프트웨어]

1. 문자열 입력 시 식 계산.

문자열을 하나의 수식으로 바꾸고, 이를 다시 postfix expression으로 바꾸어 계산하는 기능을 구현했습니다.

2. 디스플레이

단순한 수식뿐만 아니라 레이아웃이 복잡한 식을 표현하기 위해, 버튼을 한 번 누를 때마다 디스플레이를 전부 업데이트하기로 결정하였습니다.

재귀적으로 지수 안쪽 / 제곱근 안쪽 /분수 안쪽에 들어가야 할 수식을 만들어 적절한 위치에 넣는 과정을 구현하였습니다.

제한된 메모리만으로 복잡한 수식을 디스플레이에 표현하기 위해서, bitmask를 이용해 하나의 array만으로 재귀함수 처리를 전부 하도록 했습니다. 마지막으로 거대한 pixel array를 작은 공간인 display에 표현하기 위해, 커서의 위치를 기준으로 출력할 부분을 잘랐습니다.


Attachments

[보드, pixel array]

https://docs.google.com/presentation/d/1ZEf56ThJ3O9Mt_6xPrruDTjNh2g_Kgm6rPhoC3R6DT0/edit#slide=id.gfbea18ed09_0_203 – google slide 링크

About

본 글은 2021년도 2학기에 21 김예린, 21 김민우, 21 이종현 연구회원이 진행한 프로젝트입니다.