티스토리 뷰

Arduino

[Netduino] Netduino도 LED에 불이 깜빡깜빡.

생각많은 소심남 2012. 8. 8. 00:50

아두이노에서도 비슷한 내용을 다뤘습니다만 이번에는 넷두이노에 적용시켜보겠습니다. 

2012/01/16 - [About Arduino] - 아두이노에 LED가 깜빡깜빡!

처음으로 fritzing을 써보겠네요. 배선도는 다음과 같습니다. 알고보니까 fritzing에도 netduino 개체가 있더군요. 다음과 같이 구성해봅니다.



글로 단순하게 표현하자면 Analog 입력 0번 핀이 potentiometer에 연결되고 Digital 입력 5번이 LED와 연결된 꼴입니다. 실제로 연결하면 이런식이 되겠지요.


 

여기서 가변저항의 역할은 가변저항의 값을 실시간으로 받는 겁니다. 그런데 여러분도 알다시피 가변저항에서는 정확한 저항값을 잴 수 없습니다. 이걸로 저항을 제어하면 전류를 제어할 수 있겠지요. 그걸 넷두이노에게 넣어주면 LED한테는 그에 따른 출력을 내보낼 겁니다. 그럼 LED의 빛은 밝기가 그 전류의 크기에 따라서 조절이 되겠지요.참고로 LED에 따른 전류제한저항을 계산하고 싶으신 분이라면 해당 사이트로 가서 계산하시면 적절한 저항값을 구할 수 있습니다.저는 쿨하게 330옴을 달아줬습니다.

http://ledcalculator.net/

 결론적으로 말하자면 dimmer를 만든다는 겁니다. 자 배선을 다했으니까 코드를 짜보겠습니다.

우선은 아날로그 값을 하나 집어넣어야 하니까 포트를 하나 선언해줘야 합니다. 그 후에 전체적으로 나올 수 있는 범위를 0에서 100까지로 한정지으면 해당 비율을 구할 수 있겠지요. 


그리고 그 값을 초기화 해주는 것도 필요합니다.

참, 하나더 선언해줘야 할게 있습니다. 우리가 원하는 건 LED가 부드럽게 밝기가 조절되는 겁니다. 한번 아두이노에서도 다뤘던 내용이지만 LED의 밝기를 조절하기 위해서는 PWM(pulse width modulation) 이 필요합니다. 실제로 회로상에 흐르는 전류는 출력값에 따라 다르겠지만 우리가 모르는 사이에 매우 빠르게 깜빡깜빡이고 있습니다. 지금의 밝기가 유지되고 있는 것은 그 깜빡이는 정도가 일정하기 때문에 정상처럼 보이는 겁니다. 만약 켜지는 타이밍이 짧고 꺼진 타이밍이 길면 어떻게 될까요?

 우리가 보는 LED에서는 그 변화를 인식하지 못하고 잔상으로 남아있게 될겁니다. 결론적으로 꺼진 잔상이 남아있기 때문에 전체적으로 어둡게 보이는 겁니다. PWM이 LED에서 사용될 때는 그런식으로 작용합니다. 물론 모터 같은 것에서도 PWM을 조절함으로써 속도등을 제어할 수 있습니다. 

참고로 넷두이노는 Digital 5번 6번 9번 10번이 PWM으로 설정할 수 있는 포트입니다.

 그리서 우리가 하고자 함은 PWM도 변수 선언을 해줘야 한다는 겁니다. 해당 출력쪽으로 말이지요.



이제는 무한 루프를 돌려서 해당 입력값을 출력으로 돌려야 합니다. 



물론 기존에 pot 값이 범위가 정해진 값이기에 해당 값은 0과 100 사이의 값으로 나오겠지요. 

아까 앞에서 언급한 내용을 되새기자면 꺼진 타이밍과 켜진 타이밍의 비율에 따라서 LED의 밝기가 조절된다고 했습니다. 사실 그 비율도 전문적으로 언급되는 바가 있습니다. 바로 Duty Ratio 라고 합니다. 그리고 그 주기가 반복적으로 진행되는 것을 Duty Cycle이라고 하고요. 그래서 그 입력값을 받아 그에 따른 Duty Ratio 를 정해주는 작업이 마지막으로 필요합니다. 

최종적으로는 이런 코드가 나오게 됩니다.



자 그럼 설정한 후에 집어넣어봅시다. 동작은 다음과 같이 이뤄집니다.


아두이노에서의 PWM 구현은 이렇게 했었습니다.


2012/01/30 - [About Arduino] - PWM을 활용한 LED의 밝기 조절


뭔가 다른 듯하면서도 비슷한 느낌을 받습니다. 그도 그럴것이 애초에 넷두이노의 탄생자체가 아두이노를 닷넷 프레임워크로 개발하고자 하는 취지에서 만들어진 것이기 때문이지요. 물론 low level에서의 개발이야 아두이노가 좋겠지만 조금더 쉬운 개발프레임으로써는 닷넷을 가져온 넷두이노도 큰 이점으로 작용할 수 있겠지요. 또한 윈도우 환경의 32비트 프로그램을 개발할 수 있다는 점도 하나의 장점이 될겁니다. 지난 번에도 보셨다시피 32비트 ARM 프로세서가 장착되어 있었습니다.


아직까지는 정말로 초보단계에 그치고 있습니다. 하지만 조금더 노력을 한다면 언젠가는 멋진 작품이 만들어지지 않을까 하는 기대를 가져봅니다. 저로써도 더 노력을 해야될 부분이기도 하고요.

댓글