아두이노 가속도계 인터럽트
안녕하세요!^^ 답변드리겠습니다.
아두이노에서 가속도계를 이용한 인터럽트 진입과 탈출 코드를 작성하는 방법은 다음과 같습니다. 이 코드는 초음파 센서를 사용하여 사물을 탐지하다가 가속도계가 수평이 되면 인터럽트를 통해 해당 함수를 멈추고 다른 행동을 취하며, 가속도계가 수평이 아닌 상태로 돌아오면 인터럽트를 탈출하여 초음파 센서 함수로 다시 돌아갈 수 있도록 합니다.
도움이 되셨으면 좋겠습니다. 감사합니다!
#include <Wire.h> #include <Adafruit_Sensor.h> #include <Adafruit_ADXL345_U.h> // 초기화 Adafruit_ADXL345_Unified accel = Adafruit_ADXL345_Unified(12345); const int interruptPin = 2; // 인터럽트 핀 설정 volatile bool interruptFlag = false; void setup() { // 가속도계 초기화 if(!accel.begin()) { Serial.println("가속도계 초기화 실패!"); while(1); } // 인터럽트 핀 설정 pinMode(interruptPin, INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(interruptPin), handleInterrupt, RISING); Serial.begin(9600); } void loop() { if (interruptFlag) { // 가속도계 수평이 되었을 때 실행할 코드 // 여기에 실행할 코드를 추가하십시오. // 인터럽트 플래그 초기화 interruptFlag = false; } else { // 가속도계가 수평이 아닌 상태일 때 실행할 코드 // 여기에 실행할 코드를 추가하십시오. } } void handleInterrupt() { interruptFlag = true; } |
이 코드에서 attachInterrupt 함수를 사용하여 인터럽트 핀을 설정하고 handleInterrupt 함수가 호출될 때 interruptFlag를 true로 설정합니다. loop 함수에서 interruptFlag의 상태에 따라 수평 상태와 수평이 아닌 상태에 따른 코드를 실행할 수 있습니다. 가속도계 센서와 인터럽트 핀에 대한 설정은 프로젝트에 맞게 조정해야 할 수 있습니다.
이 코드는 예시 코드이며, 초음파 센서와 관련된 부분은 생략되어 있습니다. 초음파 센서를 사용하는 코드는 해당 센서의 라이브러리와 함께 추가해야 합니다.