Processor
【라즈베리파이】 wiringPi C 언어 : 기울기 센서, 빛센서
작성자 임베디드코리아
작성일 26-02-17 18:14
조회120회
댓글0건
● 기울기 센서(Tilt Sensor)는 물체의 기울어진 상태를 감지하는 센서이다.
● 내부의 금속 볼이나 수은이 움직여 기울기 상태를 디지털 신호로 출력한다.
● 기울기 센서 내부에는 원통형 공간과 전도성 볼이 있다.
● 센서가 수평 상태일 때 볼이 접점에 닿아 회로가 연결되고, 기울어지면 볼이 움직여 회로가 끊어진다.
● 간단한 기울기 감지에 적합하다.
■ 연결 하기
Tilt Sensor S (Signal): 라즈베리파이 GPIO 27 (Physical Pin 13)
Tilt Sensor VCC (-): 라즈베리파이 GND (Physical Pin 14)
Tilt Sensor GND (+): 라즈베리파이 3.3V (Physical Pin 1)
--->>> 예제 tilt_sensor.c <<<---------------------------------------
#include <stdio.h>
#include <wiringPi.h>
// 핀 번호 설정 (WiringPi 번호 기준)
// BCM 27번은 WiringPi에서 2번 핀입니다.
#define TILT_PIN 2
int main(void) {
// wiringPi 초기화
if (wiringPiSetup() == -1) {
printf("WiringPi 초기화 실패\n");
return 1;
}
// TILT_PIN을 입력 모드로 설정하고풀업 저항 활성화
pinMode(TILT_PIN, INPUT);
pullUpDnControl(TILT_PIN, PUD_UP);
printf("기울기 센서 감지 시작 (Ctrl+C로 종료)\n");
while (1) {
// 센서 값 읽기 (디지털 입력)
if (digitalRead(TILT_PIN) == HIGH) {
printf("기울어짐 발생! (Tilted)\n");
} else {
printf("수평 상태 (Normal)\n");
}
delay(500); // 0.5초 대기
}
return 0;
}
----------------------------------------------------------------------------------------------
$ gcc -o tilt_sensor tilt_sensor.c -lwiringPi
$ sudo ./tilt_sensor
--->>> 예제 : light_sensor.c <<<------------------------------------------------------
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <stdlib.h>
#include <wiringPi.h>
//#define LIGHTSEN_OUT 2 //gpio27 - J13 connect
#define LIGHTSEN_OUT 23 //gpio27 - J13 connect
// ------- main -----------------------------------------------------------
int main(void)
{
// sets up the wiringPi library
if (wiringPiSetup () < 0)
{
fprintf (stderr, "Unable to setup wiringPi: %s\n", strerror (errno));
return 1;
}
pinMode(LIGHTSEN_OUT, INPUT);
if ( wiringPiISR (LIGHTSEN_OUT, INT_EDGE_RISING, &myInterrupt) < 0 )
{
fprintf (stderr, "Unable to setup ISR: %s\n", strerror (errno));
return 1;
}
// display counter value every second.
while ( 1 )
{
//printf( "%d\n", eventCounter );
//eventCounter = 0;
if(digitalRead(LIGHTSEN_OUT) == 0)
printf("light full ! \n");
if(digitalRead(LIGHTSEN_OUT) == 1)
printf("dark \n");
delay( 200 ); // wait 1 second
}
return 0;
}
--------------------------------------------------------------------------------------------
★ 디지털 값을 출력하므로 결과는 light 혹은 dark를 출력한다.
$ gcc -o light_sensor light_sensor.c -lwiringPi
$ sudo ./light_sensor
158-840 서울시 양천구 남부순환로 571(신월동, 영남타운 307호) l 대표: 박길성 ㅣ Tel:02-2695-1114 ㅣ Fax:02-2695-1113
Copyright © 2015 Embedded Korea. All Rights Reserved.