Arduino Uno 로 SW-502D 기울기센서 모듈을 사용하는 방법을 알아보고 LED와 Buzzer를 제어해 보는 프로젝트입니다
<SW-520D 기울기센서 모듈 이미지>
Tilt Sensor 기울기 센서는 기울기나 각도를 감지 할수 있습니다
기울기를 감지하면 센서의 회로가 연결되어 전기를 흐르게 해 주는 일종의 스위치 입니다
때문에 흔히 rolling ball 스위치 라고 부르기도 합니다
기울기 센서는 저렴하고 저전력에 사용하기 쉽기 때문에 여러 방면에서 활용되고 있습니다
(모양은 생산업체와 버전에 따라서 약간씩 차이가 있습니다)
<기울기(Tilt) 센서의 동작원리>
사용된 부품
Arduino Uno R3 (Italy)
브래드 보드
5mm LED
SW-520D 기울기센서 모듈
Active Buzzer
SG90 마이크로 서보모터
점퍼케이블
막대저항 220 Ohm
사용된 키트
아두이노 SW-520D 기울기 센서 키트
구성 배선도-기울기 변화시 LED 제어해 보기
구성 배선도-기울기 변화시 LED와 Buzzer 제어해 보기
사용된 예제소스
주의사항
SW-520D 기울기센서 모듈을 브래드 보드에 끼워서 테스트 하는 경우 모듈이 브래드보드에 꽉 꼽혀서 전원(파워 LED)이 잘 들어오도록 배선합니다
(브래드보드에 잘 꼽히지 않아 전원이 켜졌다 꺼졌다 한다면 숫놈-암놈 케이블로 따로 배선해 주면 잘 동작합니다)
LED는 긴 다리쪽이 (+)이고 짧은 다리쪽이(-)입니다, Buzzer는 (+)표시쪽을 5번핀에 배선하고 반대쪽을 (-)로 배선합니다
별도 라이브러리를 사용하지 않으므로 간단하게 테스트 할수 있습니다
Tilt LED 예제코드를 살펴보면
int led = 3;
int sensor = 2;
void setup()
{
pinMode(led, OUTPUT);
pinMode(sensor, INPUT);
}
void loop()
{
if( digitalRead(sensor) == LOW )
digitalWrite(led, HIGH);
else
digitalWrite(led, LOW);
delay(100);
}
LED는 아두이노 3번핀, 센서DO는 아두이노 2번핀에 연결합니다
셋업에서 센서값을 입력받아서 LED로 출력해 줍니다
루프에서 if 문을 사용해서 센서가 LOW이면 LED가 HIGH가 됩니다
elss 문을 사용해서 그밖의 경우 센서가 HIGH이면 LED가 LOW가 됩니다
동영상에서는 기울기 변화가 감지되지 않으면 LED가 꺼졌는데 기울기 변화가 감지되면
LED를 켜지도록 하고 싶다면 예제코드의 HIGH 와 LOW만 바꿔서 수정해 주고 업로드 해주면 됩니다
Tilt LED Buzzer 예제코드를 살펴보면
int Led = 7; // define Blue LED pin
int Led2 = 8; // define Red LED pin
int Buzzer = 5; // define Buzzer pin
int buttonpin = 3; // define Tilt Sensor signal pin
int val; //define a numeric variable
블루 LED는 아두이노 7번핀, 레드 LED는 아두이노 8번핀, 부저는 아두이노 5번핀, DO핀은 아두이노 3번핀에 배선합니다
void setup()
{
pinMode(Led, OUTPUT); // Blue LED pin as output
pinMode(Led2, OUTPUT); // Red LED pin as output
pinMode(Buzzer, OUTPUT); // Buzzer pin as output
pinMode(buttonpin, INPUT); //Tilt Sensor pin as input
}
셋업에서 센서값을 입력받아서, Led, Led2, Buzzer 로 출력해 줍니다
void loop()
{
val=digitalRead(buttonpin); //read the value of the sensor
if(val == HIGH) // turn on LED when sensor is blocked
{
digitalWrite(Led,HIGH);
digitalWrite(Led2,LOW);
digitalWrite(Buzzer,LOW);
}
else
{
digitalWrite(Led,LOW);
digitalWrite(Led2,HIGH);
digitalWrite(Buzzer,HIGH);
}
}
루프에서 if문을 사용해서 기울기가 변화가 감지되지 않으면 레드 LED(Led2) 와 부저(Buzzer)가 꺼지고
블루 LED(Led) 가 켜집니다
else문을 사용해서 그밖의 기울기 변화가 감지 되면 레드 LED(Led2)와 부저(Buzzer)가 켜지고
블루 LED(Led) 는 꺼집니다
프로젝트 동영상-기울기 변화시 LED 제어해 보기
프로젝트 동영상-기울기 변화시 LED와 Buzzer 제어해 보기
이어서 추가로 Arduino Uno 로 SW-520D 기울기센서 모듈을 사용해 LED와 SG90 마이크로 서보 모터를
제어해 보는 프로젝트입니다
구성 배선도-기울기 변화시 LED와 SG90 서보모터 제어해 보기
사용된 예제소스
주의사항
가장 주의해야 할 점은 마이크로 서보모터이긴 하지만SG90 서보모터는 제대로 동작하려면
안정적인 전압과 전류가 필요하므로 SW-520D 기울기센서 모듈과 별도의 전압으로 5V로 연결해 줍니다
SW-520D 기울기센서 모듈은 3.3V 에도 동작하므로 SG90 서보모터와 별도로 3.3V로 연결해 줍니다
예제코드를 살펴보면
#include <Servo.h>
기본 Servo.h 라이브러리를 사용합니다
int pinTilt=5; //Tilt sensor digital pin
int pinServo=3; //servo motor pin
int pinLED=2;
int val=0;
SW-520D 기울기센서 모듈은 아두이노 5번핀
SG90 서보모터는 아두이노 3번핀
LED는 아두이노 2번핀에 연결합니다
void setup(){
Serv.attach(pinServo);
pinMode(pinLED,OUTPUT);
}
셋업에서 센싱값을 받아서 서보모터와 LED를 동작시킵니다
void loop(){
val = digitalRead(pinTilt);
if (val ==0) {
Serv.write(10);
digitalWrite(pinLED,LOW);
delay(100);
}
else{
Serv.write(150);
digitalWrite(pinLED,HIGH);
delay(100);
}
}
루프에서 if문을 사용해서 디지털 센서값을 읽어서
기울기 변화가 없을때는 서보모터가 10도 복귀하며 LED가 꺼집니다
else문을 사용해서 그밖의 기울기가 변하면 서보모터가 150도로 움직이고 LED가 켜집니다
예제코드의 Serv.write(10); 10도 또는 Serv.write(150); 150도를 적당하게 바꾸어서 테스트 가능합니다
하단 동영상에서는 180도로 수정해서도 테스트 해보았습니다
프로젝트 동영상-장애물 감지시 LED와 SG90 서보모터 제어해 보기
댓글