Arduino - 伺服馬達(透過可變電阻控制Servo旋轉的速度)

透過可變電阻控制Servo旋轉的速度

// 使用可變電阻控制 Servo 的旋轉角度
// by Michal Rinott <http://people.interaction-ivrea.it/m.rinott> 

// 引用 Servo Library
#include <Servo.h> 

// 建立一個 Servo 物件 
Servo myservo; 
 int pos = 0;            // 变量pos用来存储舵机位置
// 可變電阻接在 Analog pin 0 
int potpin = 0;
// 儲存旋轉角度的變數
int val;
 
void setup() 

  myservo.attach(9);  // Servo 接在 pin 9
  Serial.begin(9600);//设置波特率为9600

 
void loop() 

  val = analogRead(potpin);
  //Serial.println(val);//显示val 变量// 讀取可變電阻(數值介於 0 到 1023)
  val = val*0.0097751;
  //Serial.println(val);//显示val 变量
  //val = map(val, 0, 1023, 0, 179);     // 把 0 - 1023 的數值按比例縮放為 0 - 180 的數值
  //myservo.write(val);
  if(val == 0){
    val =1;
    // 設定 Servo 旋轉角度
  }
  for(pos = 0; pos < 180; pos += val){   // 舵机从0°转到180°,每次增加1°          
        myservo.write(pos);
         Serial.println(pos);// 给舵机写入角度   
        delay(100);                       // 延时15ms让舵机转到指定位置
    }
    
    for(pos = 180; pos>=1; pos-= val) {     // 舵机从180°回到0°,每次减小1°                               
        myservo.write(pos);              // 写角度到舵机
         Serial.println(pos);// 给舵机写入角度     
        delay(100);                       // 延时15ms让舵机转到指定位置
    } 
  delay(15);                           // 等待 Servo 旋轉指定的位置