초급 예제

누구나 쉽게 따라해볼 수 있는 쉬운 예제들입니다. 가볍게 도전~!

스크래치를 사용하여 스위치로 LED 제어하기

2016-01-07 09:09:53

개요

1) 스위치란 무엇인가?

 
스위치는 일상생활에서 흔히 접할 수 있는 제어 장치입니다. 조명, 컴퓨터, 가전기기 등 전자제품의 전원을 켜거나 끌 때, 혹은 리모컨, 키보드 등 전자기기를 조작할 때 스위치를 사용합니다. 
 
수도꼭지를 틀면 물이 나오고, 잠그면 물이 나오지 않는 것과 같이, 스위치로 전류의 흐름을 제어할 수 있습니다. 스위치는 작동 방식에 따라 많은 종류가 있으나, 본 예제에서는 푸쉬 버튼 스위치를 사용합니다. 
 
2) 푸쉬 버튼 스위치 사용방법
 
푸쉬 버튼 스위치(Push Button Switch)는 상단에 단추 모양의 버튼과 하단에 4개의 단자로 구성되어 있습니다. 상단 버튼은 스위치를 동작시키는 역할을하며, 하단의 단자는 회로와 스위치를 연결하는 다리 역할을 합니다. 
 
단자 연결은 대각선 방향이 한쌍으로 연결되어 있습니다. 그림과 같이, 좌측 상단 단자에 도선을 연결했다면, 우측 하단 단자에 다른 도선을 연결하는 방법입니다. 이렇게 회로를 연결하고 버튼을 누르면, 전류는 좌상단 단자에서 우하단 단자로 흘러갑니다. 

 
푸쉬 버튼 스위치도 동작방식에 따라 두 종류로 나누어집니다. 버튼을 누르는 동안 전류를 흘려주는 A type과 버튼을 누르는 동안 전류를 차단하는 B type이 있습니다. 본 예제에서는 A type 버튼을 사용합니다. 
 

 

 

부품 목록

NO 부품명 수량 상세설명
1 오렌지 보드 1  
2 LED 1 LED(RED)
3 스위치 1  
4 330Ω 저항 1  
5 10KΩ 저항 1  
6 브레드 보드 1  
7 점퍼 케이블 6  

 

부품명 오렌지 보드 LED 스위치 330Ω 저항 10KΩ 저항 브레드 보드 점퍼 케이블
파트
 

 

 

하드웨어 making

브레드 보드

1. 오렌지보드의 GND 핀을 브레드보드의 - 버스에 연결합니다.
2. 스위치를 그림과 같이 양쪽 IC영역에 걸치게 꽂습니다.
3. LED를 애노드(긴 단자)가 아래쪽으로 향하게하여 꽂습니다.
4. LED의 애노드가 연결된 행에 330Ω 저항을 연결합니다.
5. 스위치의 왼쪽 상단 단자를 오렌지보드 5번핀에 연결합니다.

6. 스위치의 왼쪽 상단 단자에 10KΩ 저항을 연결합니다.

7. 10KΩ 저항 끝부분을 -버스에 연결합니다.
8. 스위치의 왼쪽 하단 단자를 오렌지보드의 5V핀에 연결합니다.
9. LED 애노드와 연결된 저항의 반대 쪽을 오렌지보드 3번핀에 연결합니다.
10. LED의 캐소드가 연결된 행을 -버스에 연결합니다. 

 

전자 회로도

 

 

 

스크래치 coding

 

스크래치에서 아래 코드를 작성함으로 스위치로 LED를 제어하실 수 있습니다.

 

 <스크래치 스위치로 LED 제어하기 코드>

 

   

위 코드는 지니어스 키트 가이드에 있는 스위치로 LED 제어하기와 같은 구조의 코드입니다. 

다른점은 오렌지보드 소스코드에서는 INPUT_PULLUP을 소스코드에서 설정하여 버튼에 저항을 연결을 하지 않아도 됬지만, 스크래치에서는 이것을 따로 구현할 수 없어 직접 물리적으로 풀업 저항을 연결했습니다.

5번핀에 연결된 버튼이 눌리게 되면 3번핀에 연결된 LED에 불이 들어오며 버튼을 떼면 3번핀에 연결된 LED는 다시 꺼지게 됩니다.

/*
 제목                : 스위치로 LED 제어하기
 내용                : 스위치를 누르면 LED가 켜집니다.
 */

// LED를 3번 핀으로 설정합니다.
int led = 3;
// 스위치를 5번 핀으로 설정합니다.
int sw = 5;

// 실행시 가장 먼저 호출되는 함수이며, 최초 1회만 실행됩니다.
// 변수를 선언하거나 초기화를 위한 코드를 포함합니다.
void setup() {
        // LED 핀을 OUTPUT으로 설정합니다.
        pinMode(led, OUTPUT);
        // 스위치가 연결된 핀의 모드를 INPUT_PULLUP 상태(초기 로직레벨을 HIGH로 설정)로 설정합니다.
        // 설정된 디지털 핀은 아래와 같은 값을 반환합니다.
        // 스위치가 열려있다면 (누르지 않은 상태) HIGH
        // 스위치를 닫혀있다면 (누른 상태), LOW
        pinMode(sw, INPUT_PULLUP);
}
// setup() 함수가 호출된 이후, loop() 함수가 호출되며,
// 블록 안의 코드를 무한히 반복 실행됩니다.
void loop() {
        // 스위치가 연결된 핀의 로직레벨이 LOW라면,
        // 스위치가 닫혀있는 상태(누른 상태) 이므로, 아래의 블록을 실행합니다.
        if (digitalRead(sw) == LOW) {
                // LED가 연결된 핀의 로직레벨을 HIGH (5V)로 설정하여, LED가 켜지도록 합니다.
                digitalWrite(led, HIGH);
        }
        // 스위치가 연결된 핀으로 부터 읽은 값이 HIGH라면,
        // 스위치가 열려있는 상태(누르지 않은 상태) 이므로, 아래의 블록을 실행합니다.
        else {
                // LED가 연결된 핀의 로직레벨을 LOW (0V)로 설정하여, LED가 꺼지도록 합니다.
                digitalWrite(led, LOW);
        }
}

 

<오렌지보드 스위치로 LED 제어하기 소스>

kocoafabeditor

항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!

오렌지보드, 스크래치, 푸쉬 버튼, LED, 아두이노, orange board, scratch, push button, LED