초급 예제

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

기울기 센서로 LED 제어하기

2018-01-11 09:40:44

[이전 학습가이드] 스위치로 LED 켜기

 

기울기 센서란 ?


 

틸트(Tilt) 스위치라고 불리는 기울기 센서는 기울기를 감지하면 회로가 연결되어 전기를 흐르게 해주는 일종의 스위치 역할을 하는 소자입니다.

보통 센서라 하면 PCB에 부착된 칩으로 전기적 신호를 계산하여 결과값을 출력하는데 이 기울기센서는 중력을 사용하여 물리적으로 전기적 신호를 개폐합니다.  

 

센서 안에는 전기가 통하는 구슬이 들어있으며 그 구슬의 위치에 따라 HIGH 또는 LOW 신호를 출력합니다.

작동되는 원리가 간단한만큼 전기의 단락, 개방 여부만 확인할 수 있으며 얼만큼 기울어졌는지 기울기 정도까지 확인할 수는 없습니다.

좀 더 정밀한 결과를 출력하는 센서를 사용하고자 한다면 자이로/가속도센서를 사용하는 것이 좋습니다.

 

기본적으로 스위치로 사용되며 기울기에 따라 동작하는 조명이나 휴대용 선풍기와 같은 제품에 주로 사용합니다.

 

 

 

 

 

 

 

 

 

기울기 센서의 동작 원리


 

기울기 센서 안에는 전도성구가 있어서 기울기 센서가 위를 향했을 때 기울기 센서 속에 있는 전도성구가 양쪽 단자 사이를 연결시켜 주기 때문에 전류가 흐르게 되고, 반대로 기울기 센서가 아래로 향했을 때는 양쪽 단자가 연결되지 않기 때문에 전류가 흐르지 않게 됩니다[사진 2 참고]

 

 

 

 

내부 물질에 따라 수은이 들어있는 수은 기울기 센서도 있습니다. 내부 물질은 달라도 동작 원리는 위와 동일합니다.

 

 

 

 

 

 

 

 

부품 목록

 

NO 부품명 수량 상세 설명
1 오렌지 보드 1  
2 LED 2 Yellow, Green 각 1개씩
3 기울기 센서  1  
4 저항 3 330Ω저항 2개, 10KΩ저항 1개
5 브레드보드 1  
6 점퍼케이블 7  

 

부품명 오렌지보드 LED 기울기 센서 저항(330Ω, 10KΩ) 브레드보드 점퍼케이블
파트

 

 

 

 

 

 

 

 

하드웨어 making


 

브레드 보드

1. 오렌지보드의 GND을 브레드보드의 -버스에 연결합니다.

2. 오렌지보드의 5V을 브레드보드의 +버스에 연결합니다.

3. 기울기센서의 한쪽 다리에 10KΩ저항을 연결합니다.

4. 기울기센서의 반대쪽 다리는 브레드보드의 -버스에 연결합니다.

5. 기울기센서의 다리와 10KΩ저항이 연결된 부분을 오렌지보드의 7번핀에 연결합니다.

6. 노란색 LED의 긴 다리를 330Ω저항과 연결하고 오렌지보드의 4번핀에 연결합니다.

7. 노란색 LED의 짧은 다리를 브레드보드의 -버스에 연결합니다.

8. 녹색 LED의 긴 다리를 330Ω저항과 연결하고 오렌지보드의 3번핀에 연결합니다.

9. 녹색 LED의 짧은 다리를 브레드보드의 -버스에 연결합니다.

 

 

 

 

 

 

 

 

 

 

 

 

소프트웨어 coding


 

  1. /*
  2. 제목 : 기울기 센서로 LED 제어하기
  3. 설명 : 기울기 센서의 기울기에 따라 LED를 제어해봅시다.
  4. */
  5.  
  6. // 실행시 가장 먼저 호출되는 함수이며, 최초 1회만 실행됩니다.
  7. void setup() {
  8.   //기울기 센서를 디지털 7번 핀에 연결하고 신호를 받는 입력핀으로 설정합니다.
  9.   pinMode(7, INPUT);
  10.   //녹색 LED와 노란색 LED를 각각 디지털 3번 핀, 4번 핀에 연결하고 신호를 출력하는 출력핀으로 설정합니다.
  11.   pinMode(3, OUTPUT);
  12.   pinMode(4, OUTPUT);
  13.   //9600 bps의 속도로 시리얼 통신을 시작합니다.
  14.   Serial.begin(9600);
  15. }
  16.  
  17. // setup() 함수가 호출된 이후, loop() 함수가 호출되며,
  18. // 블록 안의 코드를 무한히 반복 실행합니다.
  19. void loop() {
  20.   //디지털 7번핀에 연결된 기울기 센서의 센서 값을 받아옵니다.
  21.   int tilt = digitalRead(7);
  22.  
  23.   //디지털 7번 핀에 연결된 기울기 센서의 센서 값을 시리얼 모니터 창에 출력합니다.  
  24.   Serial.println(tilt);
  25.  
  26.   //만약 기울기 센서의 값이 0이라면 (기울기 센서를 기울이지 않았다면)
  27.   //3번 핀에 연결된 LED를 켭니다.
  28.   if (tilt == 0) {
  29.     digitalWrite(3, HIGH);
  30.     digitalWrite(4, LOW);
  31.   }
  32.  
  33.   //만약 기울기 센서의 값이 1이라면 (기울기 센서를 기울였다면)
  34.   //4번 핀에 연결된 LED를 켭니다.
  35.   else {
  36.     digitalWrite(3, LOW);
  37.     digitalWrite(4, HIGH);
  38.   }
  39.   delay(10);
  40. }

 

 

 

 

 

Serial통신

 

시리얼통신아두이노가 컴퓨터와 통신할 때 쓰는 가장 기본적인 통신 방법으로 1byte씩 데이터를 송수신 합니다.

아두이노에서는 디지털 0번 핀, 1번 핀을 사용하여 통신하며 Serial통신에는 통신속도가 존재하는데 이때 이 통신속도가 서로 맞아야 통신이 가능합니다.

 

setup()에서는 시리얼통신을 사용하기 위해 기본적인 초기화를 실행하고

loop()에서는 Serial.read()Serial.print()와 같은 읽기, 쓰기 기능을 수행합니다.

 

  1. void setup() {
  2.   //시리얼 통신 초기화(속도 9600)
  3.  Serial.begin(9600);
  4. }
  5.  
  6. void loop() {
  7.   //"hello" 데이터 출력
  8.   Serial.print("hello");
  9. }

<우측 하단에 있는 통신속도가 서로 일치해야 한다>

 

 

 

 

 

 

 

 

 

코드 실행

 

위 회로를 보면 기울기 센서에 저항이 달려 있고 저항은 +극(5V)와 연결되어 있습니다. 때문에 이 회로는 PULL-UP회로임을 알 수 있습니다.

PULL-UP회로이기 때문에 아무것도 하지 않았을 때 기본값은 LOW(0)을 출력하고, 기울였을 때는 HIGH(1)를 출력합니다.

 

조건문에 따라 기울기센서를 기울이지 않으면 3번 LED를 켜게 되고 기울기 센서를 기울이면 4번 LED가 켜지게 됩니다.

 

기울기센서는 단순하게 버튼과 같이 digitalRead()로 센서값을 읽을 수 있기 때문에 간단한 프로젝트에 용이하게 사용할 수 있습니다.

 

 

 

[다음 학습가이드] 피에조부저로 소리내기

 

kocoafabeditor

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