본문 바로가기
PLC 자동제어 학습/아두이노 보드 수업

아두이노 문법 수업의 마지막 시간-사용자 정의 함수와 배열의 사용

by 인터넷떠돌이 2017. 12. 9.
반응형

안녕하세요?


이번 포스팅에서는 지난주 수요일에 있었던 수업의 내용인 아두이노 보드의 스케치 프로그램에서 사용자 정의 함수를 만들어서 쓰는 방법과, 배열을 이용해서 어떻게 사용을 하였으며, 아날로그 신호의 입력까지를 다루어 보았습니다. 그리고 이 내용을 이번 포스팅에서 다루고자 합니다.



먼저 square라는 사용자 정의 함수를 만들도록 합니다. 여기서 square(int a)라고 했는데, int a는 바로 여기 ( ) 사이에 들어갈 변수의 형태를 미리미리 정하는 것입니다.



다음은 두번째로 사용자 정의 함수를 만들어서, 이번에는 2개의 정수형 변수를 집어 넣어서 어떻게 실행이 되는지를 살펴 보고자 합니다.



그리고 제대로 사용자 정의 함수가 나오는 것을 볼 수 있습니다. 일단 사용자 정의 함수는 어디에 정의를 해도 되기는 하지만, 가장 안전한 장소로는 setup()과 loop()사이에 위치하는 것이 가장 안전하다고 합니다.



이번에는 배열과 for문을 가지고서 led라는 사용자 정의 함수를 만들어서 사용하도록 해 보겠습니다. 그리고 당연 loop()에서는 딱히 더 입력할 것은 없습니다.




일단 제대로 나오는 것을 확인할 수 있었습니다.



다음에는 FND에서 어떻게 하면 원하는 숫자를 나오게 하는지에 대해서 코딩을 한 것입니다. 여기서도 사용자 정의 함수가 쓰였고, 다음에는 5라는 숫자를 우선 시리얼 모니터에서 나올 수 있게만 했습니다.



이제는 실제 회로에 연결해서 실제로 FND에서 원하는 숫자가 나올 수 있도록 만들기 위해서, 이렇게 하려고 했습니다. 그런데 하나 사소하지만 심각한 문제가 생겼습니다.



하다하다 보니, 아두이노 우노 보드의 8번 핀이 고장이 나서, 하는 수 없이 드라이버를 삭제하고 다시 아두이노 우노 보드의 드라이버를 설치하고, PC를 재부팅하는 과정을 여러번 걸쳐야 했습니다.



다음은 F4201AH라고 해서 FND의 2개 연속해서 나오는 부품을 브래드 보드에 연결할 수 있는데, 이를 가지고서 하는 실습을 하고자 합니다. 우선 com1이 좌측, com2가 우측을 나타나게 하며, AH라는 말에서 알수 있듯이 COM이 GND라고 -극에 연결이 되어야 합니다.




우선 여기서 핵심이라면 색심이 되는 것이, COM이 있는 브레드 보드의 라인에 연결, 굉장히 빠른 속도로 점멸을 하는 것입니다. COM이 HIGH로 되어있는 전선이 연결되면 당연 전기가 안 흐르고, 순간적으로 F4201AH에서 해당하는 부분이 꺼지는 것입니다. 그렇게 하나하나 돌아가며 깜빡이면서 켜지는 것인데, 너무 순식간에 일어나기 때문에 사람의 눈에는 문자나 숫자가 모두 뜨는 것으로 보이는 것입니다.



이번에도 역시 사용자 정의 함수가 사용이 되었습니다. 그리고 여기서는 당연하다면 당연하게도 7개의 아두이노 보드의 핀을 차례로 ON/OFF를 시키도록 하고, 여기서는 조금의 에러가 있는데, 아무튼 num의 숫자에 따라서 배열의 행을 선택하도록 합2니다.



마지막으로 가장 중요한 것이 배열입니다. 이게 없으면, 하나하나 1과 0을 입력해야 하기 때문에 일이 많아 진다면 많아 집니다.



먼저 일차적인 작업으로 HELP라는 문자가 나오도록 하는 작업인데, 이러한 작업이 되도록 하는 것입니다.



이번에는 아예 작정하고 0~9까지 숫자가 표시될 수 있도록 배열을 작성하도록 합니다.



그리고 여기서는 아날로그 값을 보여주기 위한 것이라고 해야 할까요? 일단 전체적으로 4자리숫자로 이루어진 값을 어떻게 하면 F4201AH에서 하나하나 표시하기 위해서, 위 스크린샷에 나오는 공식을 이용합니다. 먼저 천의 자리숫는 1000으로 나눈 나머지만 표시하게 하면 됩니다. 그러나 백의 자리부터 문제인데, 이렇때는 나머지를 구하는 % 연산자를 이용해야 합니다. 


즉, %연산자를 이용해서 천의자리 에서 떨어진 나머지를 100으로 나눈 몫이 바로 백의 자리 숫자가 되는 것입니다. 십의 자리를 차지하는 숫자도 마찬가지 이며, 마지막 1의 자리는 10으로 나눈 몫을 가지고 오는 것만 해도 충분히 됩니다.



이렇게 제대로 원하는 숫자가 나오는 것을 확인할 수 있었습니다.




이제 A0라는 아날로그 핀에다가 아날로그 신호를 입력받고, 이걸 F4201AH에서 표시하는 작업을 하고자 합니다.



여기서는 위 그림에서 묘사가 되는 것처럼 가변저항을 사용하도록 합니다. 여기서는 3번 핀은 5V 저항을 받으며, 2번 핀을 통해서 아두이도 우노 보드의 A0로 신호가 들어오게 되는데, 우선 5V가 다 들어오면 최대값인 1023의 값이 표시가 되며, 저항이 커져서 A0에 들어오는 전압이 약해지면 그 값은 줄어들게 됩니다.



마지막으로 제대로 나오는 것까지 확인할 수 있었습니다. 일반적으로 아날로그 값의 경우에는 pinMode를 설정해두지 않아도 되기는 하지만, 아래와 같은 표를 기억해 두는 것이 좋겠다는 생각이 들었습니다.

 

 OUTPUT

INPUT 

 digital

digitalWrite 

digitalRead 

 analog

analogWrite 

analogRead 

serial 

Serial.print 

 


반응형