// --------------------------------------------------------------------------------
/*
21 同時改變多個 Servo Motor 角度 (不使用 Library)
[學習重點]
1. 直接輸出 PWM 訊號控制 Servo 角度
[挑戰]
- 嘗試增加 Servo Motor 的數量吧!
Created by Jason on 21 Aug 2022.
*/
// --------------------------------------------------------------------------------
int numberOfServos = 5; // Servo 數量
int servoPin[] = {11, 10, 9, 6, 5, 3}; // 各 Servo 連接的 Pin
void setup() {
// 設定各 Servo Pin 為 Output Mode
for(int s = 0; s < 6; s++){
pinMode(servoPin[s], OUTPUT);
}
}
void loop() {
servoPos(2, 2, 2, 2, 2, 2);
delay(1000);
servoPos(178, 178, 178, 178, 178, 178);
delay(1000);
}
void servoPos(int a1, int a2, int a3, int a4, int a5, int a6) {
servoPulse(servoPin[0], a1);
servoPulse(servoPin[1], a2);
servoPulse(servoPin[2], a3);
servoPulse(servoPin[3], a4);
servoPulse(servoPin[4], a5);
servoPulse(servoPin[5], a6);
delay(400);
}
void servoPulse (int servo, int angle) {
int pwm = (angle*11) + 500; // Convert angle to microseconds
digitalWrite(servo, HIGH);
delayMicroseconds(pwm);
digitalWrite(servo, LOW);
}