본문 바로가기

[랩뷰+아두이노]디지털인풋을 받아 LED켜기

반응형

스위치를 눌렀을때 어떤 반응을 일으키는 예제를 만들었다. 


채널 2개를 사용하여 A채널의 디지털 입력을 받아서, B채널의 디지털 출력을 하여 LED를 켜는 예제다. 간단하게 말하면 스위치를 눌렀을 떄 불이 켜지게 하는 예제다.


회로도는 우선 이렇게 연결을 하면 된다. 최대한 반듯하게 선을 그릴려고 했는데 특정부분은 이상하게 삐뚤하다...글쓰는 사람의 성격의 나타내는 것 같다;;;




풀다운저항을 사용해서 입력이 없을 떄는 그라운드에 연결해 놓은 회로이다. 이렇게 연결을 해놓지 않으면 부정전압으로 불안정하게 꺼졌다가 켜졌다가를 반복 한다. 원하는 동작을 정확하게 할 수 없으므로 풀다운저항을 사용하여 그라운드 시켜준다. 말그대로 풀다운 저항은 그라운드로 잡아당겨 연결시켜준다고 해서 풀다운 저항이다.


회로를 완성했으면 이제 코드를 작성해보자~아래의 블럭다이그램과 같이 만들면 된다. 코드에 대한 설명은 이미지 아래에 첨부해 놓았다.




프런트패널에는 별다른 내용은 없다. 원하는 디지털입력핀과 디지털출력핀 번호를 설정할 수 있는게 전부라서 생략한다.참고로 이 코드상에서는 디지털입력핀은 12번이고,디지털 출력핀은 13번핀이다.


코드를 다 작성했다면 이제 랩뷰-아두이노 컴파일러를 사용해서 코드를 올려보자. 제대로 올라갔다면 스위치를 눌렀을 때 LED가 켜져야하고, 스위치에서 손가락을 땟을 때 LED가 꺼져야 한다.


풀다운이 있으면 당연히 풀업도 있다.아두이노 내부에 풀업저항이 있어서 어느정도 익숙해지면 풀업을 사용하는 것을 권장한다고 한다. 하지만 처음 배우기에는 풀다운이 직곽적이고 받아들이기 쉬운 것 같다. 풀업회로는 아래 그림과 같다.저항이 그라운드에 연결되는 것이 아닌 5V에 연결된다. 그래서 풀업이다.



회로에서 보듯이 5V에서 나오는 전압이 10K옴 저항을 타고 디지털인풋인 채널 12로 들어간다. 그래서 항상 5V가 디지털 인풋으로 들어가고 있으므로 13번 디지털아웃풋 채널에서도 5V를 출력해 LED를 켜주고 있다. 여기서 스위치를 누르게 되면 채널 12로 가던 5V 전압은 그라운드로 빠지게 되고 디지털입력이 들어오지 않으므로 디지털아웃풋도 나가지 않게된다. 그래서 LED는 꺼지게 된다. 그러므로 결론적으로 풀다운과 반대로 스위치를 누르면 LED가 꺼지고, 스위치를 누르지 않고 있으면(끄면) LED가 켜진다.


그럼 아래 회로도는 어떻게 동작할 꺼 같은가??



풀다운으로 되어 있어서 스위치를 누르면 LED가 켜지고, 스위치에서 손가락을 때면 LED가 꺼질 것 처럼 보인다. 하지만 동작은 반대로 풀업저항을 연결한 것 처럼 한다. 왜 그런걸까?? LED와의 연결된 선을 잘봐야한다. LED의 (-)극이 13번 디지털출력핀으로 연결되어 있고,  아두이노 5V출력이 나와서 330옴 저항에 연결된 뒤 LED의 (+)극으로 들어가고 있다. 그래서 스위치를 누르지 않아도 LED에 불이 켜져있다. 하지만 스위치를 켜게 되면 디지털인풋에 5V가 들어가게 되고 13번핀에서 5V가 된다. 전원부에서 주는 5V와 전압이 같아져 전류가 흐르지 않게되고 결국 LED는 불이 들어오지 않게 된다. 이렇게 전류가 13핀으로 흘러들어가게 하는 방식을 싱크방식이라고 하고, 핀에서 외부로 나가는 방식을 소스방식이라고 한다. 설겆이하는 싱크대에 물이 빠지는 거를 연상하면 아마 이해가 빠를 것이다. 참 어렵다;;; 몇번을 읽어야 이해가 되므로 이해가 안된다고해서 좌절할 필요가 없을 것 같다. 신나는 프로토타이핑이라는 책에서 공부한 내용을 정리했으므로 그 책을 읽어보면 더 쉬울 것 같다. 끝~


반응형
-->