請按下圖配線。


Servo.h 下載
請鍵入下列程式:

#include <Servo.h> // 包含Servo.h標頭檔
#define RST 90 // 定義歸零位置
Servo ServoH; // 建構Servo物件
Servo ServoV; // 建構Servo物件
int val_H,val_V; // 宣告位置變數
char data[4];
int sw=0,i=0,j;
// 初始設定
void setup() {
     Serial.begin(9600);
     ServoH.attach(10); // 伺服機H連接10腳
     ServoV.attach(11); // 伺服機V連接11腳
     ServoH.write(RST); // 水平伺服機移至90度位置
     ServoV.write(RST); // 垂直伺服機移至90度位置
}

void loop() {
     char chr;
     if (Serial.available()) {
          while ((chr = Serial.read()) != '\n') {
          // 確認輸入的字元介於'0'和'9',且索引i小於3(確保僅讀取前三個字)
               if (chr >= '0' && chr <= '9' && i < 3) {
                    data[i] = chr;
                    i++;
               }
          }
          if(chr == '\n'){
               if(sw==0){
                    val_H=0;
                    for(j=0;j<i;j++){//將數字字串轉成數值
                         val_H*=10;
                         val_H+=data[j]-'0';
                    }
                    sw=1;//切換下一次輸入為 val_V
                    i=0;
               }
               else{
                    val_V=0;
                    for(j=0;j<i;j++){//將數字字串轉成數值
                         val_V*=10;
                         val_V+=data[j]-'0';
                    }
                    sw=0;//切換下一次輸入為 val_H
                    i=0;
               }
               Serial.print(val_H);Serial.print(" , ");Serial.println(val_V);
               val_H = map(val_H, 0, 1023, 0, 179); // 調整水平位置值
               val_V = map(val_V, 0, 1023, 0, 179); // 調整垂直位置值
               ServoH.write(val_H); // 驅動水平伺服機
               ServoV.write(val_V); // 驅動垂直伺服機
          }
     }
     delay(20); // 暫停20ms
}