Arduino笔记——Lab16 电位器控制舵机-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 19403|回复: 0

Arduino笔记——Lab16 电位器控制舵机

[复制链接]
发表于 2013-6-15 22:45 | 显示全部楼层 |阅读模式
實驗目的
練習用可變電阻控制伺服馬達(Servo motor)的旋轉角度。
材料
  • 麵包板 x 1
  • Arduino 主板 x 1
  • 伺服馬達(Servo Motor) x 1
  • 10k 可變電阻 x 1
  • 單心線 x N
接線
伺服馬達有三條線,電源(紅線)、接地(黑線),以及訊號線。
  • 把伺服馬達紅線接到 +5v,黑線接到 GND,訊號線接到 pin 9
  • 可變電阻中間腳位接到類比輸入(Analog Input) pin 0,剩下的兩支腳位,一支接到 5V,另外一支接到 GND
電路圖
程式碼
RC 伺服馬達(Radio Controlled Servo Motor) 大部份是透過 PWM (Pulse Width Modulation, 脈波寬度調變)來控制,Arduino 裏內建了 Servo Library 讓事情變得很簡單,就算你對 PWM 不熟,也可以很輕鬆地控制伺服馬達。底下的程式碼示範 Servo Library 的使用方法(Servo.pde):
[mw_shl_code=cpp,true]// 引用 Servo Library
#include <Servo.h>

// 建立一個 Servo 物件
Servo myservo;
// 旋轉角度
int value = 0;

void setup()
{
  myservo.attach(9);  // Servo 接在 pin 9
}

void loop()
{
  if (value == 0)
    value = 180;
  else
    value = 0;
  
  // 叫 Servo 旋轉角度:
  //    myservo.write(0) 是叫 Servo 旋轉到 0 度的位置
  //    myservo.write(180) 是叫 Servo 旋轉到 180 度的位置
  myservo.write(value);
  delay(1500);
} [/mw_shl_code]
程式說明:
  • L2: 引用 Servo library
  • L5: 利用 Servo 類別建立 myservo 物件
  • L24: 要控制 Servo 旋轉角度,只要呼叫 Servo 的 write() 並傳入指定的角度就可以了,例如 myservo.write(180) 是控制 Servo 轉到 180 度,myservo.write(120) 是控制 Servo 轉到 120 度。

使用可變電阻控制伺服馬達(
PotServo.pde
):
[mw_shl_code=cpp,true]// 使用可變電阻控制 Servo 的旋轉角度
// by Michal Rinott <http://people.interaction-ivrea.it/m.rinott>

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

// 建立一個 Servo 物件
Servo myservo;

// 可變電阻接在 Analog pin 0
int potpin = 0;
// 儲存旋轉角度的變數
int val;

void setup()
{
  myservo.attach(9);  // Servo 接在 pin 9
}

void loop()
{
  val = analogRead(potpin);            // 讀取可變電阻(數值介於 0 到 1023)
  val = map(val, 0, 1023, 0, 179);     // 把 0 - 1023 的數值按比例縮放為 0 - 180 的數值
  myservo.write(val);                  // 設定 Servo 旋轉角度
  delay(15);                           // 等待 Servo 旋轉指定的位置
} [/mw_shl_code]


程式說明:
  • L22: 讀取可變電阻並將讀到的數值(介於 0 到 0123)儲存在 val 變數中
  • L23: 0 到 1023 的數值必須經過數值轉換,依比例轉為 0 到 180 的數值,因為我們的伺服馬達只能在 0 到 180 度之間旋轉。範例程式利用 map() 函式將 0 – 1023 的值對應到 0 -179。
  • L24: 根據讀到的可變電阻值控制 Servo 轉到指定的角度



原文链接:http://coopermaa2nd.blogspot.com/2011/01/arduino-lab16.html
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-29 06:44 , Processed in 0.100244 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表