티스토리 뷰

스위치 사용방법 알기

디지털이라는 것은 3장의 엘이디(LED) 코딩에서 보았듯이 켜다(5볼트(V))와 끄다(0볼트(V))처럼 어떤 것을 나눠서 표현하는 것을 말합니다. 디지털 값을 숫자로 표현하면 켜다는 1이 되고, 끄다는 0이 됩니다.

 

디지털 값을 읽는다는 것은 디지털 값((5볼트(V) 또는 0볼트(V))을 아두이노 디지털 핀에서 받는다는 뜻입니다. 디지털 8번 핀에서 디지털 값을 받으면(전압이 들어오면) 2번 핀에서 엘이디(LED)를 켜는 작품을 만들어 봅시다.

 

디지털 값을 넣는 부품을 디지털 입력장치라고 합니다. 우리는 입력장치로 푸시 버튼스위치를 사용하겠습니다. 푸시 버튼스위치를 누르면 5볼트(V), 떼면 0볼트(V)의 전압이 8번 핀에 들어오도록 그림 4-1처럼 회로를 만듭니다.

 

푸시 버튼스위치에서 초록색으로 표시한 부분은 항상 연결되어 있습니다. 푸시 버튼스위치를 누르면 빨간색으로 표시한 부분이 연결됩니다. 그래서 디지털 8번 핀에 5볼트(v) 전압이 들어오게 됩니다.

 

[버튼스위치]라는 변수를 만들고 디지털 8번 핀으로 들어오는 값을 저장할 수 있도록 합니다. 그리고 곰돌이가 [버튼스위치]에 저장된 값을 말하도록 말하기 블록을 사용합니다.

그림 4-1 푸시 버튼스위치 연결 회로

 

푸시 버튼스위치를 누르면 회로가 연결되어 5볼트(V) 핀에서 전류가 흘러 디지털 8번 핀으로 가게 됩니다. 그래서 [버튼스위치] 변수에 1이 저장됩니다. 누르지 않으면 회로가 연결되지 않아서 0이 [버튼스위치] 변수에 저장됩니다.

 

그리고 이제 조건을 생각합니다. 어떤 경우에 엘이디(LED) 불이 켜지나요? 바로 [버튼스위치] 변수 값이 1일 때죠? 그리고 [버튼스위치] 변수가 1이 아니면 불이 꺼집니다. 이것을 간단한 그림으로 표현해 볼까요?

그림 4-2 흐름도

 

그림 4-2처럼 조건이 있고 그 조건을 만족시킬 때와 만족시키지 못할 때 각각 다른 일을 시키려면 그림 4-3과 같은 <만약 ~아니면> 블록을 사용합니다. 

그림 4-3 만약 ~아니면

 

이것을 말로 나타내면 다음과 같습니다.

‘만약 [버튼스위치] 변수가 1이면 디지털 2번 핀에 전압을 줘서 엘이디(LED) 불을 켜고, 아니면 전압을 주지 않아서 불을 끈다.’

이것을 스크래치로 코딩해 보겠습니다.

 

디지털 2번 핀과 엘이디(LED)가 연결되어 있죠? 이 디지털 핀에 전압을 주면(5볼트(V)) 엘이디(LED)가 켜지게 됩니다. 블록을 켜짐으로 바꿔서 디지털 2번 핀으로 전압을 줄 수 있도록 합니다. 그리고 불을 끄고 싶으면 꺼짐으로 블록을 바꿉니다. 전체 코딩한 프로그램이 그림 4-4입니다.

그림 4-4 푸시 버튼스위치 전체 스크립트

 

어때요 참 쉽죠? 

시리얼포트와 잘 연결되었는지 확인하고 <연결>-<펌웨어 업그레이드>-<초록색 깃발>을 순서대로 클릭합니다. 그럼 직접 푸시 버튼스위치를 눌러볼까요?

 

그리고 [버튼스위치] 변수가 어떻게 변하는지 잘 관찰합니다. 그런데 버튼을 누르지 않았는데도 [버튼스위치] 변수가 0이 되었다 1이 되었다 합니다. 그리고 엘이디(LED)가 깜빡거리는 것을 볼 수 있습니다. 왜 그럴까요?

 

여기서 전자회로에 대해서 조금 더 배워보도록 합시다. 푸시 버튼스위치를 누르면 전기회로가 연결되어서 5볼트에서 전류가 나와 8번 핀으로 흘러가게 됩니다. 그러면 8번 핀에는 항상 5볼트 값이 들어와 [버튼스위치] 변수에 1이 저장됩니다. 그리고 엘이디(LED)에 불이 들어오죠. 그런데 푸시버튼을 누르지 않으면 어떻게 될까요?

 

우리 눈에는 보이지 않지만 아두이노 보드 주위에는 전자가 떠다니고 있습니다. 이 전자가 움직여서 전기가 만들어진다고 배웠습니다.이 전자가 8번 핀과 연결된 선을 타고 들어오는 경우가 있습니다. 이것을 노이즈라고 합니다. 이 노이즈 때문에 디지털 8번 핀에 5볼트 값이 들어갈 수도 있고, 0볼트 값이 들어갈 수도 있습니다.

 

그래서 엘이디(LED)가 깜빡이는 겁니다. 이렇게 1도 아니고 0도 아닌 값이 들어가는 것을 떠있다고 하여 플롯(float) 상태라고 합니다. 우리가 할 일은 푸시 버튼스위치를 누르지 않을 때 디지털 핀에 0볼트 값이 들어가게 회로를 만들면 됩니다.

 

방법은 그림 4-5처럼 디지털 입력 핀과 그라운드 핀(GND)을 저항으로 연결하는 겁니다. 이것을 전문용어로 풀다운 저항이라고 합니다.

그림 4-5 풀다운 저항

 

그림 4-5를 보면 푸시버튼을 누르지 않았을 때 5볼트 핀에서 나오는 전압이 디지털 8번 핀으로 들어가지 않습니다. 하지만 디지털 8번 핀은 그라운드 핀(GND)과 저항으로 연결되어 있습니다. 그라운드 핀(GND)은 0볼트 값을 나타냅니다.

 

따라서 0볼트 값이 디지털 8번 핀으로 들어가게 되고, [버튼스위치] 변수에는 0이 저장됩니다. 그러면 푸시 버튼스위치를 누르면 어떻게 될까요? 디지털 8번 핀은 그라운드 핀(GND)과도 연결되어 있고 5볼트 핀과도 연결되어 있게 됩니다. 그럼 디지털 8번에는 어떤 값이 들어오게 될까요?

그림 4-6 저항 개념

 

그림 4-6처럼 물은 장애물이 없는 곳으로는 잘 흐르겠죠? 전기도 마찬가지입니다. 10킬로옴의 큰 저항이 있는 그라운드 핀(GND) 쪽으로는 전류가 잘 흐르지 않습니다.

 

대신에 저항이 없는 디지털 8번 핀으로 전류가 흐르게 됩니다. 그러면 디지털 8번 핀에는 5볼트의 전압이 들어옵니다. 그리고 버튼스위치 변수에는 1이 저장됩니다.

 

전기는 참 신기하죠? 처음 보면 잘 이해가 안 되는 것이 당연합니다. 하지만 계속 생각하고 직접 하다 보면 어느 순간 이해가 잘 됩니다. 아두이노로 작품을 만들 때는 반드시 이런 전자회로 지식을 알고 있어야 합니다.

 

이렇게 저항을 이용하여 그라운드핀(GND)과 연결해서 디지털 핀에 0볼트 값이 들어가게 만드는 것을 풀다운 저항이라고 한다는 것! 반드시 기억해야 합니다. 그럼 또 궁금한 사람이 있을 겁니다. 그냥 저항 없이 수-수 점퍼케이블로 디지털 8번 핀과 그라운드 핀(GND)을 연결하면 되는 거 아니야? 왜 저항으로 연결하지?

 

만약 저항을 사용하지 않고 점퍼케이블로 연결하고 푸시 버튼스위치를 누르면 어떻게 될까요?그럼 그림 4-7과 같이 5볼트에서 바로 그라운드(GND)로 연결됩니다.

그림 4-7 저항이 없는 회로도

 

이것이 바로 합선(전문용어로 쇼트)가 되었다고 합니다. 그림 4-8처럼 플러스극와 마이너스 극을 직접 연결하면 선이 점점 뜨거워지면서 결국 녹아버립니다.

그림 4-8 저항이 없는 배터리

 

이렇게 되는 이유는 순간적으로 너무 많은 전류가 플러스 극에서 마이너스 극으로 흐르기 때문입니다. 전류는 전자가 흐르는 것입니다. 전자가 전선을 타고 흐를 때 서로 부딪치면서 열이 납니다.

 

그런데 너무 큰 전류가 흐르면 엄청난 전자가 흐르게 되고 열이 나서 뜨거워집니다. 그래서 합선되면 큰불이 나는 경우가 있습니다.

 

그래서 저항 없이 회로도를 만들고 버튼스위치를 누르면 운이 안 좋은 경우 아두이노 보드가 고장 날 수 있습니다. 더 운이 나쁘면 아두이노와 연결해 놓은 컴퓨터의 USB 장치나 컴퓨터까지 망가질 수 있습니다. 그러면 정말 큰일나겠죠? 아까운 돈을 날리고 부모님께 혼나게 됩니다.

 

그림4-9와 같이 회로를 만들고 스크래치 프로그램<그림4-4>을 실행해봅시다.

그림 4-9 푸시 버튼스위치 회로도 완성

 

버튼을 누르면 1을 말하고, 엘이디(LED)에 불이 켜집니다. 버튼을 누르지 않으면 0을 말하고, 엘이디(LED)에 불이 꺼집니다. 이번 시간에는 정말 어려운 내용을 많이 배웠습니다. 이런 전자회로 지식을 많이 알면 멋진 작품을 만들 수 있으니 열심히 공부하길 바랍니다.

댓글
댓글쓰기 폼