A PHP Error was encountered

Severity: Notice

Message: Undefined index: HTTP_ACCEPT_LANGUAGE

Filename: core/KF_Controller.php

Line Number: 155

스크래치를 사용하여 가변저항으로 LED 제어하기

초급 예제

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

스크래치를 사용하여 가변저항으로 LED 제어하기

2016-01-18 13:44:46

개요

1) 가변저항이란 무엇인가?
 

가변저항 (Potentiometer)은 사용자가 직접 저항값을 임의로 바꿀수 있는 저항기를 말합니다. 흔히 소리의 크기를 말하거나 조절하는 손잡이를 볼륨 (Volume)이라 부르는데, 전기/전자분야에서는 가변저항을 말하곤 합니다.

가변저항은 사용하는 저항체의 종류에 따라 다양하며, 회전축을 중심으로 전극을 움직이거나, 좌우로 전극을 움직이는 방식으로 저항값에 변화를 줍니다.

가변저항은 가전 제품부터 산업용 제품에 이르기까지 폭넓은 시장에서 활용되고 있습니다.


 

2) 가변저항 사용방법

 

이 예제에서 사용된 가변저항은 아래 그림과 같이 1번 단자와 3번 단자에 걸처 전체 저항이 연결되어 있고, 그 위에 2번 단자와 연결된 스위퍼 (sweeper)의 위치에 따라, 저항 값이 변하게 합니다. 

 

가변저항의 노브를 돌리면 1번 단자와 2번 단자 사이의 저항과, 2번 단자와 3번 단자 사이의 저항값이 각각의 길이에 비례하여 변하게 됩니다. 스위퍼의 위치에 따라 2번과 3번의 저항 값이 변하면, 스위퍼에 연결된 2번단자에 걸리는 전압도 변하게 됩니다. 즉, 양쪽 저항의 크기에 따라 전압분배가 이루어지는 것입니다. 

 

이 예제에서는 2번 단자에 걸리는 전압을 오렌지보드의 아날로그 입력값으로 받아 LED의 밝기를 조절합니다.

 

저항에 대한 자세한 설명은 2.4 저항의 용도를 참고합니다. 
 

 

 

부품 목록

NO 부품명 수량 상세설명
1 오렌지 보드 1  
2 가변저항 1 10kΩ
3 LED 1  
4 330Ω 저항 1  
5 브레드 보드 1  
6 점퍼 케이블 7  

 

부품명 오렌지 보드 가변저항 LED 330Ω 저항 브레드 보드 점퍼 케이블
파트


 

하드웨어 making

브레드 보드

 

1. 오렌지보드의  5V핀을 브레드보드의 + 버스에 연결합니다.
2. 오렌지보드의 GND핀을 브레드보드의 - 버스에 연결합니다. 
3. 가변저항을 그림과 같이 세로로 꽂습니다.
4. LED를 애노드(긴 단자)가 아래쪽으로 향하게하여 꽂습니다.
5. LED의 애노드가 연결된 행에 330Ω 저항을 연결합니다.
6. 가변저항의 하단 단자를 + 버스에 연결합니다.
7. 가변저항의 가운데 단자를 오렌지보드 A1번핀에 연결합니다.
8. 가변저항의 상단 단자를 - 버스에 연결합니다. 
9. LED 애노드와 연결된 저항의 반대 쪽을 오렌지보드 3번핀에 연결합니다. 
10. LED 캐소드(짧은)를 - 버스에 연결합니다.
 
 
 
 
 

전자 회로도

 
 
 

스크래치 coding

 

1. 스크래치 conding 1

 

스크래치에서 가변 저항을 이용해 LED를 on / off 하는 블록 코드를 작성해보겠습니다.

스크래치에서 아래 코드를 작성함으로 가변저항을 이용하여 LED를 제어하실 수 있습니다.

 

 <스크래치 가변저항으로 LED On/Off 제어하기 코드>

 

이 소스 코드는 가변저항을 반이상 돌리면 LED가 켜지는 소스 코드 입니다. 

아날로그 1번핀에 연결된 가변저항의 값이 512(1024의 중간값)를 넘으면 디지털 3번 핀에 연결된 LED의 불을 키고, 512보다 작아지면 LED의 불을 끕니다.

이러한 비교 작업을 계속 반복해 줌으로써 가변저항을 이용하여 LED의 On/OFF 제어를 하게 됩니다.

 

void setup() {
         pinMode(3, OUTPUT); 
}

void loop() {
        if (analogRead(A1) > 512) {
                digitalWrite(3, HIGH);
        } else {
                digitalWrite(3, LOW);
        }
}

 

<오렌지보드 가변저항으로 LED On/Off 제어하기 코드>

 

 

 

 

 

 

2. 스크래치 coding 2

가변 저항을 이용해 LED를 조금 더 재밌게 제어해봅시다.

가변 저항의 값을 통해 LED의 밝기를 제어하는 블록 코드를 작성해보겠습니다.

 

LED의 밝기를 제어하기 위해서는 펄스 제어를 해주어야 합니다. 

아래 그림과 같은 블럭을 이용하면 블럭에서 지정한 핀을 펄스 제어할 수 있게 됩니다. 

단 오렌지보드의 PWM핀(3번, 5번, 6번, 9번, 10번, 11번)으로만 사용가능합니다.

 

 

아래 그림과 같은 블럭으로 펄스 신호를 보내줄 수 있습니다.

아두이노 스케치 상에서 analogWrite의 기능을 하는 블럭입니다. 

 

 

가변 저항은 0에서 1023까지의 값을 가집니다. 이 값을 0에서 255까지의 값으로 변환해주어야 합니다. 

엔트리의 경우 값의 범위를 변환해주는 mapping 블럭이 존재하지만, 스크래치에서는 존재하지 않습니다.

따라서 아래 그림과 같이 계산식을 통해 값의 범위를 변환해주어야 합니다.

아래 블럭에서 255에 해당하는 부분을 변환하고자 하는 값의 범위의 최대값을 대입해주면 됩니다. 

 

 

 

 

<스크래치 가변저항으로 LED On/Off 제어하기 코드>

 
 

이 소스 코드는 가변저항을 돌리면 LED의 밝기를 제어하는 소스 코드 입니다. 

아날로그 1번핀에 연결된 가변저항의 값이 0~1023 사이로 들어오는데 이것을 0~255 사이의 값으로 변경 후 이 값에 따라 디지털 3번 핀에 연결된 LED의 밝기를 제어하게 됩니다.

이러한 작업을 계속 반복해 줌으로써 가변저항을 이용하여 LED의 밝기를 제어를 하게 됩니다.

#include <Servo.h>

//서보 모터를 사용하기 위한 Servo 객체를 생성합니다.
Servo myServo; 
//버튼을 5번핀에 연결합니다. 
int button = 5; 

void setup() {
        pinMode(button,INPUT);
        myServo.attach(3);
}

void loop() {
        //만약 버튼이 눌러졌다면
        if (digitalRead(button)) { 
            myServo.write(0); //0도로 이동합니다.
        }
        //만약 버튼이 눌러지지 않았다면
        else { 
                //180도로 이동합니다.
            myServo.write(180); 
          }
}

 


 <오렌지보드 가변저항으로 LED 밝기를 제어하기 코드>

kocoafabeditor

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

스크래치, 코코아팹, 오렌지보드. 가변저항. LED, scratch, kocoafab, orangeboard, potentiometer