반갑습니다. 교주 jHWkRD7U-JMY1ZsyMYcpRynAc025IiHAaXuuRNuwyo0ksSkY6zxs8kzriniUO5TDBbIo0yPFIEtOjhvtWO8iXn-ZTGBVtN1g_wHgSwqyxcU4Jin3gpk 입니다.

지난 강좌에 이어 이번 강좌에서 LED 깜빡이기 마무리 짓겠습니다. ^^

 

2Xu8xuNbmBWr6dMENftzRiSwKQtQiLXUT63sgEZALwAcEKZeqLtgnknORNyudjl9xwHQSTMmsqrGzvnKFdmePAzTrXDDMJbm_7Kc2W297pR0ihYl0wg

 

회로를 위의 그림과 같이 꾸며줍니다. (이번에만 그림을 쓰고 다음부터는 Symbol을 쓰겠습니다)

지난 시간에 계산한 값(140Ω)의 Resistor 달아주시고요 

Arduino 12번 Digital Pin을 저항과 연결해주세요 (Pin 번호는 0번~13번 중에 여러분 마음데로~ 고르셔도 됩니다. o(^o^)o )

LED 달아주실 때 LED Anode(+)와 Cathode(-) 방향 구분(긴 다리가 (+)) 잘해주세요

그리고 LED의 (-)를 Arduino Power 부분에 있는 GND(Ground 그라운드) Pin에 잘 연결해 주시면 끝~

 

우선 MATLAB과 Arduino UNO를 연결하시려면 MATLAB에서 

a = arduino('COM3');

라고 입력하시면 됩니다. 'COM3' 부분에는 

여러분들의 컴퓨가 Arduino를 인식하고 있는 COM Port를 쓰시면 되구요(장치관리자에서 확인 가능)

 

잠시 기다리시면...

정상적으로 MATLAB과 Arduino가 연결이 되었다며 아래와 같은 메세지를 보실 수 있습니다.


vnzuvKKTksDuoA_cBi1Oofla6Y2Ab0nvxCc69wSWfp2SAFIIYFjZoCILE2G22_oa-EOqPL12_HIAR-DLKvDvum8BJJ097xQ94mAMti4uMChRvXcpMxk


위의 a = arduino('COM3'); 라는 말을 풀어쓰면

a라는 변수에 arduino Class Object를 저장하겠다는 말입니다.

Class Object는 struct형 변수와 특징이나 사용방법이 비슷한데 (struct 형 변수에 대해서는 'MATLAB 때려잡기 9강'을 참조하시 바랍니다.)

struct형 변수는 값 만을 저장할 수 있었죠? 그리고 field를 마음데로 추가하거나 삭제할 수 있었습니다.

그런데 Class형 변수(Object)는 값(data) 뿐만 아니라 함수(function)도 함께 한 변수안에 같이 집어 넣을 수 있고요

Class형 변수안에 있는 data나 함수를 마음데로 추가/삭제를 할 수가 없습니다.

(struct형으로 치자면 실수로 field를 지우는 일은 없겠죠? 프로그램이 매우 안정적이 겠죠?)

심지어 Object(Class로 만든 변수) 안에 있는 data나 함수를 사용자가 보지 못하게 할 수도 있어요. (public/private)

 

또 새로운 이름을 지어내기 좋아하시는 우리 박사님들이...

Object안에 있는 data에 특별한 이름을 붙였으니 그 이름은 바로바로바로 property가 되겠습니다.

Object안에 있는 함수는 method라고 부릅니다.

(VIP 회원님들께서는 Graphic Handle Object에서 했던 이야기이니 이해가 잘 되실 겁니다 ^^)


MATLAB에서 Object를 생성하고 난 다음 Object 명을 쓰고 그뒤에 점을 찍고 Tab키를 눌러보시면

참조 가능하거나 실행가능한 properties와 methods 목록이 뜨게 됩니다. 

또는 MATLAB에서 제공하고 있는 methodview 라는 함수를 사용하셔도 됩니다.

arduino Class 에는 어떤 method 들이 있는지 한번 볼까요?

command window에서 >> methodview(a) 라고 입력 해보시면 mothod를 확인학수 있습니다.


U59IXNeQx_88_-e3yORmUFqFR4DE9XvJ65j_aRea8lRYL2Yuqmp_HLRHm7BQE0CaYW30ld0Vil1HATphndKUOjC_MRpiog197eytkgGaLtQEEbi4b2k

 

(그림을 클릭하시면 큰 그림으로 보실 수 있습니다)


많은 method중에 오늘은 딱 2가지 method만 쓸겁니다.

pinMode와 digitalWrite method만 쓸꺼예요 ^^


Digital Input / Output Pin (Arduino의 0번핀 ~ 13번핀)에는 2가지 Mode(모드)가 있습니다.

Input Mode와 Output Mode !! 너무 당연한 이야기인가요? ㅋㅋ

Input Mode와 Output Mode에 대한 설명은 2부 강좌에서 간단히 다 했습니다요. ^^


pin Mode를 설정하시려면 a.pinMode(핀 넘버, '모드')로 사용하시면 됩니다.

즉 12번 핀을 output으로 사용하고 싶으시면 a.pinMode(12,'output') 이라고 입력하시면 되요~

(a.p 까지만 쓰시고 Tab키를 누르시면 p~로 시작하는 method, property가 뜹니다)


핀을 On/Off 하시려면 a.digitalWrite(핀 넘버, 1 또는 0)로 사용하시면 되요

예를 들어 12번 핀을 On(5V) 하고 싶으시면 a.dititalWrite(12,1) 이러식으로 code를 작성하시면 되는 거죠

쉽죠? 어렵지 않습니다 ^^

 

12번 Pin이 On이 되면 12번 Pin에 5V가 걸리고   (LED가 켜지고)      <- a.digitalWrite(12,1)

 

12번 Pin이 Off    되면 12번 Pin은 0V가 됩니다.  (LED가 꺼집니다)   <- a.digitalWrite(12,0)


Arduino와 MATLAB의 연결을 끊으시려면 delete 함수를 쓰시면 됩니다.
최종적인 코드는 아래처럼 됩니다. (실행 m-file은 아래에 첨부해두었습니다.)

 

ppJ4B8X5ddejAY5W6geQvaeMxRHkdRnVUW-yYPQgRjyTtnVIDsmruXROBJwHAk0wfTxdp5wdDVLiFE5Yw3UN2hTadDZLtkcPf7S-owxDqcENEwZ5gVA


Script를 실행 시키시면 아래의 동영상처럼 LED기 깜빡일 겁니다 ㅎㅎ



Getting Started에 나오는 동영상도 위의 LED 하나 끄고 켜는 것이랑 원리는 똑같습니다.

쉽게 만드실 수 있을 겁니다 ^^ (밑에 실행 code 첨부해두었습니다.)



다음시간에는 Input에 대해서 알아볼께요

수고하셨습니다 o(^o^)o