×

使用Swift语言控制伺服

消耗积分:0 | 格式:zip | 大小:0.12 MB | 2022-11-04

颜立歆

分享资料个

描述

在这个任务中,您将使用另一种电机,伺服电机。其臂的角度可以随电位器的变化而变化

第 1 步:您需要什么

poYBAGNkXT-ATDYCAACiOnvFEWc360.png
 

您需要的零件都包含在Maker 套件中。

  • SwiftIO 板
  • 伺服
  • 电位器模块
  • 4 针电缆

第2步:伺服电机

pYYBAGNkXUKAayPsAAEg18jGpbM749.png
 

伺服电机可以根据信号调整其手臂的位置。您可以设置 PWM 输出来控制它。该伺服系统每 20 毫秒需要一个脉冲。每个脉冲的持续时间决定了手臂的位置:

  • 如果高压持续0.5ms,则手臂将处于0度。
  • 如果高压持续2.5ms,则手臂将处于180度。
  • 如果高压持续 1.5ms,则手臂将处于 90 度。

注意:本舵机需要脉冲在 0.5 到 2.5ms 范围内。您可能还会遇到其他需要 1 到 2ms 脉冲的舵机。

第 3 步:电路

poYBAGNkXUWAVgJsAAD9M7Ayyqc765.png
 

将屏蔽罩放在 SwiftIO 板的顶部。

使用 4 针电缆将电位计模块连接到针脚 A0。

将伺服连接到引脚 PWM4A。舵机有三根线:地线是棕色的,电源线是红色的,信号线是橙色的。

第 4 步:代码

/* Import the SwiftIO library to use everything in it. */
import SwiftIO

/* Import the board library to use the Id of the specific board. */
import SwiftIOBoard

/* Initialize the analog pin. */
let a0 = AnalogIn(Id.A0) 

let servo = PWMOut(Id.PWM4A)

while true {
    /* Read the analog value and return a value between 0.0 and 1.0. */
    let value = a0.readPercent() 

    /* Calculate the value to get the pulse duration. 
    Each cycle of the signal lasts for 20 milliseconds.
    The pulse should last between 0.5 and 2.5 ms to activate the servo. 
    With a 0.5ms pulse, the servo will turn to 0 degrees and with a 2.5ms pulse, it will at 180 degrees. 
    In between, it is at an angle between 0–180. */
    let pulse = Int(500 + 2000 * value) 

    /* Set the servo position according to the scaled value. */
    servo.set(period: 20000, pulse: pulse) 
    sleep(ms: 20)
}

第 5 步:代码分析

import SwiftIO
import SwiftIOBoard

导入两个库:​SwiftIO​SwiftIOBoard。

let a0 = AnalogIn(Id.A0)
let servo = PWMOut(Id.PWM4A)

初始化电位器的模拟引脚 A0 和电机的 PWM 引脚 PWM4A。

let value = a0.readPercent() 
let pulse = Int(500 + 2000 * value)
servo.set(period: 20000, pulse: pulse)
sleep(ms: 20)

在死循环中,以百分比形式读取输入值,因此您会得到一个介于 0 和 1 之间的值。

您将使用此方法set(period:pulse:)设置 PWM。周期以微秒为单位,因此为 20000us。脉冲应该是 0.5ms 到 2.5ms 之间的数字。所以通过做一些计算,这个值会被匹配到这个范围内。

第 6 步:运行项目

当您转动电位器时,伺服臂将移动到不同的角度。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !