배송 |
---|
상품 정보 | 가격 | 삭제 |
---|---|---|
16채널 12비트 PWM 서보모터 드라이버 모듈 (PCA9685) | ||
TOTAL PRICE(수량) 0 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 |
#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>
#define nbPCAServo 16
int MIN_IMP [nbPCAServo] ={500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500};
int MAX_IMP [nbPCAServo] ={2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500};
int MIN_ANG [nbPCAServo] ={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
int MAX_ANG [nbPCAServo] ={180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180};
Adafruit_PWMServoDriver pca= Adafruit_PWMServoDriver(0x40);
void setup(){
Serial.begin(9600);
Serial.println(F("Initialize System"));
pca.begin();
pca.setPWMFreq(60); // Analog servos run at ~60 Hz updates
}
void loop(){
pcaScenario();
}
void pcaScenario(){
for (int i=0; i<nbPCAServo; i++) {
Serial.print("Servo");
Serial.println(i);
for(int pos=(MAX_IMP[i]+MIN_IMP[i])/2;pos<MAX_IMP[i];pos+=10){
pca.writeMicroseconds(i,pos);delay(10);
}
for(int pos=MAX_IMP[i];pos>MIN_IMP[i];pos-=10){
pca.writeMicroseconds(i,pos);delay(10);
}
for(int pos=MIN_IMP[i];pos<(MAX_IMP[i]+MIN_IMP[i])/2;pos+=10){
pca.writeMicroseconds(i,pos);delay(10);
}
pca.setPin(i,0,true);
}
}
int jointToImp(double x,int i){
int imp=(x - MIN_ANG[i]) * (MAX_IMP[i]-MIN_IMP[i]) / (MAX_ANG[i]-MIN_ANG[i]) + MIN_IMP[i];
imp=max(imp,MIN_IMP[i]);
imp=min(imp,MAX_IMP[i]);
return imp;
}
|
cs |
17,000원