초급 예제

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

엔트리 x 오렌지보드-기울기센서-기울기에 따라 LED 제어하기

2016-07-08 10:36:12

개요 

 

 

기울기 센서란 무엇인가?

 

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

이번 튜토리얼에 사용될 기울기 센서 안에는 전도성 구가 들어있습니다. 

따라서 기울기 센서가 위를 향했을 때 기울기 센서 속에 있는 전도성구가 양쪽 단자 사이를 연결시켜 주기 때문에 전류가 흐르게 되고, 

반대로 기울기 센서가 아래로 향했을 때는 양쪽 단자가 연결되지 않기 때문에 전류가 흐르지 않게 됩니다[사진 2 참고]

 

사진2. 기울기 센서 원리(수은구 형태) / 이미지 출처 : 동아사이언스 과학몰)

 

 

사진3. 기울기 센서 원리(수은 형태)

 

수은 기울기 센서는 수은구 형태, 수은 형태 등이 있지만, 원론적인 동작 원리는 동일합니다.

이번 튜토리얼에서는 엔트리를 활용해 수은 기울기 센서의 기울기에 따라 LED를 제어하는 방법에 대해 알아보도록 하겠습니다. 

 

 

 

 

 

부품 목록

 

NO 부품명 수량 상세 설명
1 오렌지 보드 1 아두이노 UNO
2 LED(RED, GREEN) 2(각 1개씩)  
3 기울기 센서  1  
4 저항 2 330Ω
5 브레드보드 1  
6 점퍼케이블 7 male to male

 

부품명 오렌지보드 LED 기울기 센서 저항 브레드보드 점퍼케이블
파트

 

 

 

 

 

 

하드웨어 making

 

브레드 보드

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

2. 아래 그림과 같이 기울기 센서의 한 쪽 단자를 A0(Analog 0)번핀에 연결합니다. 

3. 기울기 센서의 나머지 다리를 브레드 보드의 -버스에 연결합니다. 

4. 빨간색 LED의 애노드(다리가 긴 단자)에 330Ω 저항을 연결합니다. 

5. 저항이 연결된 빨간색 LED의 애노드 단자를 오렌지보드의 D4(Digital 4)번핀에 연결합니다.

6. 초록색 LED의 애노드(다리가 긴 단자)에 330Ω 저항을 연결합니다. 

7. 저항이 연결된 초록색 LED의 애노드 단자를 오렌지보드의 D3(Digital 3)번핀에 연결합니다.

 

 

 

 

 

전자 회로도 (스케메틱)

 

 

 

 

엔트리 coding

 

기울기 센서의 기울기에 따라 LED를 제어하는 엔트리 코딩입니다.

아날로그의 0번에 연결된 기울기 센서가 기울여졌을 때 어떤 값이 들어오는지 확인해야합니다. 

아래 블록을 통해 기울기 센서의 센서값을 확인한 후 기울이지 않았을 때의 값과 기울였을 때의 값을 확인합니다. 

 

 

 

 

coding 1

 

기울기 센서의 기울기에 따라 LED 한 개를 제어해봅시다.

기울기 센서를 기울이지 않았을 때 센서 값이 0이기 때문에 analog 0번 센서값이 100보다 작을 때는 기울기 센서가 기울여지지 않았음을 의미합니다. 

따라서 기울기 센서를 기울이지 않았을 때 디지털 3번에 연결된 LED(초록색)를 점등되고, 기울였을 때 소등되게 됩니다.

 

/*
제목 : 엔트리를 이용해 기울기 센서로 LED 제어하기
설명 : 엔트리를 활용해 기울기 센서의 기울기에 따라 LED를 제어해봅시다.
*/

// 실행시 가장 먼저 호출되는 함수이며, 최초 1회만 실행됩니다.
void setup() {
  //초록색 LED를 디지털 3번에 연결합니다.
  pinMode(3, OUTPUT);
  //9600 bps의 속도로 시리얼 통신을 시작합니다.
  Serial.begin(9600);
}

// setup() 함수가 호출된 이후, loop() 함수가 호출되며,
// 블록 안의 코드를 무한히 반복 실행합니다.
void loop() {
  //아날로그 0번에 연결된 기울기 센서의 센서 값을 시리얼 모니터 창에 출력합니다.	
  Serial.println(analogRead(A0));
  //만약 기울기 센서의 값이 100보다 작다면(기울기 센서를 기울이지 않았다면)
  if (analogRead(A0) < 100) {
  	//초록색 LED를 점등합니다. 
    digitalWrite(3, HIGH);
  }

  //만약 기울기 센서의 값이 100보다 크다면(기울기 센서를 기울였다면)
  else {
  	//초록색 LED를 소등합니다.
    digitalWrite(3, LOW);
  }
  delay(10);
}

 

 

 

 

 

coding 2

 

기울기 센서의 기울기에 따라 LED 두 개를 제어해봅시다.

위 엔트리 코딩과 마찬가지로 기울기 센서를 기울이지 않았을 때의 센서 값이 0이므로 analog 0번 센서값이 100보다 작음은 기울기 센서가 기울여지지 않았음을 의미합니다.

따라서 기울기 센서를 기울이지 않았을 때는 디지털 3번에 연결된 LED(초록색)을 점등하고, 디지털 4번에 연결된 LED(빨간색)을 소등합니다. 

반대로 기울기 센서를 기울였을 때는 디지털 3번에 연결된 LED(초록색)을 소등하고, 디지털 4번에 연결된 LED(빨간색)을 점등합니다. 

즉 정리하자면, 기울기 센서를 기울였을 때는 빨간색 LED가 기울이지 않았을 때는 초록색 LED가 점등됩니다.

 

/*
제목 : 엔트리를 이용해 기울기 센서로 LED 제어하기
설명 : 엔트리를 활용해 기울기 센서의 기울기에 따라 LED를 제어해봅시다.
*/

// 실행시 가장 먼저 호출되는 함수이며, 최초 1회만 실행됩니다.
void setup() {
  //초록색 LED를 디지털 3번에 연결합니다.
  pinMode(3, OUTPUT);
  //빨간색 LED를 디지털 4번에 연결합니다.
  pinMode(4, OUTPUT);
  //9600 bps의 속도로 시리얼 통신을 시작합니다.
  Serial.begin(9600);
}

// setup() 함수가 호출된 이후, loop() 함수가 호출되며,
// 블록 안의 코드를 무한히 반복 실행합니다.
void loop() {
  //아날로그 0번에 연결된 기울기 센서의 센서 값을 시리얼 모니터 창에 출력합니다.	
  Serial.println(analogRead(A0));
  //만약 기울기 센서의 값이 100보다 작다면(기울기 센서를 기울이지 않았다면)
  if (analogRead(A0) < 100) {
  	//초록색 LED를 점등합니다. 
    digitalWrite(3, HIGH);
    //빨간색 LED를 소등합니다. 
    digitalWrite(4, LOW);
  }

  //만약 기울기 센서의 값이 100보다 크다면(기울기 센서를 기울였다면)
  else {
  	//초록색 LED를 소등합니다.
    digitalWrite(3, LOW);
    //빨간색 LEㅇ를 점등합니다.
    digitalWrite(4, HIGH);
  }
  delay(10);
}

 

 

kocoafabeditor

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

엔트리, 기울기 센서, 아두이노, 오렌지보드

설탕제로 2018-04-02 21:04:23

기울기센서의값이 단지 스위치처럼 0, 1 로만 표현되는 디지털값 같은데 어떤값을 아날로그값으로 입력을 받는지 궁금합니다.

kocoafab 2019-01-08 17:20:50

@설탕제로
말씀주신대로 디지털 값 0, 1만 나오게 되는데 이게 떨림과 같은 이유로 정확하게 0이 나오지 않을 때가 있습니다. 이럴 때 아날로그 값을 측정하게 되면 매우 낮은 값이 나오게 되므로 정확한 측정을 위해 아날로그 값으로 측정하였습니다.