舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。在高档遥控玩具,如飞机、潜艇模型,遥控机器人中已经得到了普遍应用。

舵机主要适用于那些需要角度不断变化并可以保持的控制系统, 比如人形机器人的手臂和腿, 车模和航模的方向控制。舵机的控制信号实际上是一个脉冲宽度调制信号( PWM信号), 该信号可由FP-GA器件、模拟电路或单片机产生。

舵机简单的说就是集成了直流电机、电机控制器和减速器等,并封装在一个便于安装的外壳里的伺服单元。舵机可以根据你的指令旋转到0至180度之间的任意角度然后精准的停下来。能够利用简单的输入信号比较精确的转动给定角度的电机系统。舵机安装了一个电位器(或其它角度传感器)检测输出轴转动角度,控制板根据电位器的信息能比较精确的控制和保持输出轴的角度。

本实验使用电位器控制舵机的角度,为此需要同时连接舵机和电位器。

# 部署

  1. 电位器连接到OSEPP UNO的A0引脚。
  2. 舵机连接到OSEPP UNO的3号引脚。

# 连线图

# 程序搭建

  • oseppBlock 积木知识

舵机模块积木。定义名称和引脚

舵机执行指令模块,数值只能在0-180之间。

  • oseppBlock代码

  • Arduino代码

    #include <Servo.h>
    
    Servo servo1;
    
    void setup()
    {
        servo1.attach(3); //定义舵机引脚
        //potentiometer1
        pinMode(A0, INPUT); //定义电位器引脚
    }
    
    void loop()
    {
        servo1.write(map(analogRead(A0), 0, 1023, 0, 180)); //把电位器的值映射到舵机输出
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15

# 运行结果

当转动电位器,舵机也会随之转动。电位器旋转到左边最小时舵机处于0度,电位器转到右边最大值时舵机处于180度位置。

# 解析

舵机只能在0-180度工作,所以要电位器的输入范围0-1023映射成0-180

# 操作视频