정보나눔

오픈소스하드웨어 프로젝트에 대한 다양한 정보를 나누는 공간입니다.

Adafruit 16-Channel 12-bit PWM/Servo Driver 사용중 문의드립니다.
GuitarYG | 2017-11-15

#define SERVOMIN  150 // this is the 'minimum' pulse length count (out of 4096)
#define SERVOMAX  600 // this is the 'maximum' pulse length count (out of 4096)

// our servo # counter
uint8_t servonum = 0;

void setup() {
  Serial.begin(9600);
  Serial.println("16 channel Servo test!");

  pwm.begin();
  
  pwm.setPWMFreq(60);  // Analog servos run at ~60 Hz updates

  yield();
}

// you can use this function if you'd like to set the pulse length in seconds
// e.g. setServoPulse(0, 0.001) is a ~1 millisecond pulse width. its not precise!
void setServoPulse(uint8_t n, double pulse) {
  double pulselength;
  
  pulselength = 1000000;   // 1,000,000 us per second
  pulselength /= 60;   // 60 Hz
  Serial.print(pulselength); Serial.println(" us per period"); 
  pulselength /= 4096;  // 12 bits of resolution
  Serial.print(pulselength); Serial.println(" us per bit"); 
  pulse *= 1000;
  pulse /= pulselength;//4069 //4882
  Serial.println(pulse);
  pwm.setPWM(n, 0, pulse);
}

 

 

이렇게 소스코드 예제가 되어있는데요

 

servomin 값이 150이고 servomax값이 600으로 지정되어있는데

 

이값이 어떻게 나온건지 궁금합니다.. 모르겠어서요..

 

그리고 HZ가 50으로 바뀌게 되면 min max값이 바뀌는것 같은데 그것도 알려주시면 감사하겠습니다!

이전글   |    두 개의 초음파 센서 연결 오류 2017-11-15
다음글   |    [무료] 3D프린팅 전문가들과 함께하는 토크콘서트에 초대합니다.... 2017-11-16