공학용 계산기는 대수학적 연산 외에 자연로그 연산 및 삼각함수 연산을 포함한다. 로그 값 계산에도 base를 10으로 하는 상용 로그와 무리 수 e를 base로 하는 자연 로그가 있다.
여기서는 자바스크립트가 제공하는 자연로그 즉 Math.log() 함수를 포함하도록 한다.
아울러 라디안 값을 사용하는 삼각함수 연산에서는 Math.sin(), Math.cos(), Math.tan()를 포함하도록 한다. 따라서 다음의 버튼 카 프로그램이 추가된다.
client.println("<a href=\"/KEY=ln\"\" class='button'> ln </button></a>");
client.println("<a href=\"/KEY=sin\"\" class='button'> sin </button></a>");
client.println("<a href=\"/KEY=cos\"\" class='button'> cos </button></a>");
client.println("<a href=\"/KEY=tan\"\" class='button'> tan </button></a>");
해당 함수 별 버튼 키를 누를 경우 스마트폰 웹에서 입력된 정보가 와이파이를 통해 아두이노 NodeMCU로 전달되면 if문에서 입력된 정보를 확인하고 문자열 변수 c에 추가한다. 단 버튼 키에서는 ln, sin, cos, tan 이지만 문자열 변수 c에 추가할 때에는 Math.log, Math.sin, Math.cos, Math.tan 명을 사용해야 한다. 아울러 연산 입력 시에 주의할 점은 함수 명까지는 버튼 키로 처리하고 이어서 괄호 버튼 키를 사용해서 계산하려는 수를 입력해야 한다.
예를 들어보면 ln 버튼 키를 눌러 보자 Answer이전에는 Math.log 가 출력되고 Answer 이하에 function log(){[native code]} 라는 메시지가 자동으로 출력되어 나타난다. 괄호 열기 버튼 키 입력과 함께 계산하려는 숫자 데이터를 입력하고 괄호 닫기 버튼 키를 누르면 연산 결과를 볼 수 있다.
한편 자바스크립트의 eval() 명령은 문자열 형태의 일반 4칙 연산 식 외에도 상기에 언급된 함수들을 포함하는 복합적인 연산 식들도 처리할 수 있는 기능이 있음을 알 수 있다.
자연로그 함수와 삼각함수가 계산기에 업데이트 설치되었으면 이 함수들을 테스트 해 보기로 하자.
첫 번째로 무리 수 e =2.71828⚫⚫⚫의 자연로그를 계산해 보기로 하자. 그 결과 계산치는 1.0에 근접한 값을 보여 주어야 할 것이다. e 값으로서 2.71828을 사용했을 때에 그 결과는 0.999999⚫⚫⚫으로 정확성을 확인할 수 있다.
두 번째로 삼각함수 기능을 테스트 해 보자. 삼각함수 계산에 있어서 각도(°)가 아니라 라디안(rad)을 사용한다는 점에 유의하자. 예를 들자면 π 라디안은 180도(°)에 해당하며 (π/2)는 90도(°)에 해당한다.
sin(π/2) 즉 sin(3.141592654/2)의 값은 1.0 이 된다.
자연로그나 삼각함수 계산의 입력 편의를 위해서는 무리수 e 나 π 를 별도의 버튼 키로 만들어 사용하는 것도 좋은 방법이 될 수 있을 것이다.
'아두이노프로세싱 프로그래밍' 카테고리의 다른 글
본 블로그에 게재된 아두이노 및 아두이노 NodeMCU 응용 프로그램 전체의 오픈소스화 방침을 밝힙니다. (0) | 2017.03.12 |
---|---|
스마트폰 키보드에 의한 아두이노 NodeMCU 7세그먼트 LED 제어 프로그램 알고리듬 개량 컴팩트화:IV (0) | 2017.03.11 |
아두이노 NodeMCU HTML+Javascript 계산기 프로그램 (0) | 2017.03.08 |
아두이노 NodeMCU와 GPS센서 VK16E로 만들어 보는 TinyGPS 네비게이션 시스템 (0) | 2017.03.05 |
스마트폰 키보드에 의한 아두이노 NodeMCU 7세그먼트 LED 제어:III (0) | 2017.03.04 |