본문 바로가기

개발 이야기

아두이노 - PWM 입력을 측정하는 3가지 방법

728x90

아두이노 우노를 비롯한 다양한 아두이노 시리즈 보드에서

입력으로 PWM을 측정하는 방법이 3가지가 있습니다.

 

그에 관한 링크는 하기와 같습니다.

:=> http://www.benripley.com/diy/arduino/three-ways-to-read-a-pwm-signal-with-arduino/

 

위에서 언급된 것과 같이 3가지는 다음과 같습니다.

1. pulseIn() 함수를 사용하는 방법

  가장 간단한 방법입니다. but, 이 함수가 실행되는 동안 CPU를 계속 점유하기에 다른 작업(코드)를 실행할 수 없습니다.

간단한 코드는 하기와 같습니다.


byte PWM_PIN = 3;
 
int pwm_value;
 
void setup() {
  pinMode(PWM_PIN, INPUT);
  Serial.begin(115200);
}
 
void loop() {
  pwm_value = pulseIn(PWM_PIN, HIGH);
  Serial.println(pwm_value);
}

 

2. 외부인터럽트를 사용하는 방법

   but, 아두이노 보드에 따라 인터럽트를 사용할 수 있는 pin 이 제한됩니다.

간단한 코드는 하기와 같습니다.

volatile int pwm_value = 0;
volatile int prev_time = 0;
 
void setup() {
  Serial.begin(115200);
  // when pin D2 goes high, call the rising function
  attachInterrupt(0, rising, RISING);
}
 
void loop() { }
 
void rising() {
  attachInterrupt(0, falling, FALLING);
  prev_time = micros();
}
 
void falling() {
  attachInterrupt(0, rising, RISING);
  pwm_value = micros()-prev_time;
  Serial.println(pwm_value);
}

 

3. Pin Change Interrupts 라이브러리를 사용하는 방법

  이 방법의 장점은 아두이노 보드의 어떤 핀도 인터럽트로 사용할 수 있는 장점이 있습니다.

간단한 코드는 하기와 같습니다.

#include <PinChangeInt.h>
 
#define MY_PIN 5 // we could choose any pin
 
volatile int pwm_value = 0;
volatile int prev_time = 0;
uint8_t latest_interrupted_pin;
 
void rising()
{
  latest_interrupted_pin=PCintPort::arduinoPin;
  PCintPort::attachInterrupt(latest_interrupted_pin, &falling, FALLING);
  prev_time = micros();
}
 
void falling() {
  latest_interrupted_pin=PCintPort::arduinoPin;
  PCintPort::attachInterrupt(latest_interrupted_pin, &rising, RISING);
  pwm_value = micros()-prev_time;
  Serial.println(state);
}
 
void setup() {
  pinMode(MY_PIN, INPUT); digitalWrite(MY_PIN, HIGH);
  Serial.begin(115200);
  PCintPort::attachInterrupt(MY_PIN, &rising, RISING);
}
 
void loop() { }

 

 

 

(광고1)

주식과 증권 커뮤니티 최신 동향을 한번에 모아서 볼 수 있는 앱이 있습니다.

'주식통' 이라는 앱인데 하기에서 다운로드 가능합니다.

https://play.google.com/store/apps/details?id=com.opensupport.StockTong 

 

(광고2)

이젠 여기저기 있는 중고거래앱들을 번거롭게 일일이 찾아드릴 필요가 없이

중고장터거래 앱들의 원하는 아이템을 한번에 검색해 볼 수있는 앱이 있습니다. 

다운로드는하기에서 가능합니다.

https://play.google.com/store/apps/details?id=com.opensupport.UsedSearch 

 

 

 

 

그럼,

   공유합니다.

 

728x90