// --------------------------------------------------------------------------------
/*
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);
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
servo1:GND
servo1:V+
servo1:PWM
servo2:GND
servo2:V+
servo2:PWM
servo3:GND
servo3:V+
servo3:PWM
servo4:GND
servo4:V+
servo4:PWM
servo5:GND
servo5:V+
servo5:PWM
servo6:GND
servo6:V+
servo6:PWM