Processor
【라즈베리파이】 wiringPi C 언어 : 충격 센서와 인터럽트
작성자 임베디드코리아
작성일26-02-17 18:14
조회126회
댓글0건
◆ 물체가 충돌로 인해 충격을 받았을때 충격 여부를 파악해주는 센서로
순간적인 변화이므로 인터럽트를 이용하여 처리한다.
--->>> 예제 : Shock_Sensor_interrupt.c <<<-------------------------------------------------
#include<stdio.h>
#include<wiringPi.h>
#define LED 5 //BCM 기준 5
#define SHOCK_PIN 0 // 17번 핀
volatile int shock_onoff=0;
void shockDetected_Interrupt(); // 인터럽트 처리 함수
int main() {
wiringPiSetupGpio(); // BCM 기준
//초기 핀의 Input, Output을 설정
pinMode(LED, OUTPUT);
pinMode(SHOCK_PIN, INPUT);
pullUpDnControl(SHOCK_PIN, PUD_UP); //내부 PULL-up저항 (쇼트방지)
//스위치 인터럽트
if(wiringPiISR(SHOCK_PIN, INT_EDGE_FALLING, &shockDetected_Interrupt) < 0)
return 1;
while(1) {
if(shock_onoff == 1) {
digitalWrite(LED,1); //LED 점등
delay(1000); //time초 만큼 유지
digitalWrite(LED,0);
delay(1000);
}
}
}
void shockDetected_Interrupt() { // 인터럽트 처리 함수
delay(100); // 스위치 bouncing 제거 목적
if(digitalRead(SHOCK_PIN)<1) {
if(shock_onoff == 1) {
printf("shock off\n");
shock_onoff = 0;
}
else {
printf("shock on\n");
shock_onoff = 1;
}
}
}
---------------------------------------------------------------------------------------
$ gcc -o Shock_Sensor_interrupt Shock_Sensor_interrupt.c -lwiringPi
$ sudo ./Shock_Sensor_interrupt