欢迎光临
我们一直在努力

Arduino与舵机的其他应用

Open-Live-Writerd61c83ea712d_13F5A113716qyaeosk57rk6r1yz_thumb

==概述==

近期众多客户对舵机的应用很感兴趣,今天我们对舵机的Servo.h这个库的一些应用进行整理和分析。方便大家了解学习和掌握一些基础类的应用和操作实际的项目。

本次是以小实验的方式写的,对于模块不了解的,可以先看一下我们的模块教程,了解掌握模块使用方法后,再尝试本小实验。

(对于非本店模块不提供技术支持!如果无法做通,可能是不兼容导致,请自行尝试)。

舵机教程:http://arduino365.com/2016/12/29/9g%E8%88%B5%E6%9C%BA-2/

HC-05蓝牙模块教程:http://arduino365.com/2016/09/01/%E8%93%9D%E7%89%99%E6%A8%A1%E5%9D%97hc05/

==应用1:用电位器控制舵机==

20180328110450_55

    在我们的模块示例中,我们知道了如何让舵机动起来,这里讲进一步的通过外部信号来让舵机随着输入如的改变来相应改变角度,方便做一些可控的转动装置。我们这里通过一个可变电阻——电位器,来控制舵机。。当然你也可以通过其他的模拟量或者数字量来控制舵机。模拟量的话,比如改造一下前面的感光灯,变成一个会动的感光灯。数字量的话,比如通过一个按钮,倾斜开关等等,一单触发开关,就让舵机转动,可以有很多玩儿法。再给舵机加个外壳,让它更具有生命力。

所需材料:

UNO R3主控版一块:点我购买

9g或14g舵机一个:点我购买

公对公杜邦线若干:点我购买

10K电位器一个:点我购买

面包板一个(方便转接):点我购买

==接线方式==

dianweiqikongzhiduoji

==例子程序==

#include <Servo.h> // 声明调用 Servo.h 库
  Servo myservo; // 创建一个舵机对象

int potpin = 0; // 连接到模拟口 0
  int val; //变量 val 用来存储从模拟口 0 读到的值

void setup() {
myservo.attach(9); // 将引脚 9 上的舵机与声明的舵机对象连接起来
}

void loop() {
  val = analogRead(potpin); //从模拟口 0 读值,并通过val 记录
val = map(val, 0, 1023, 0, 179); //通过 map 函数进行数值转换
myservo.write(val); // 给舵机写入角度
delay(15); // 延时 15ms 让舵机转到指定位置
}

==应用1:实验效果==

调节电位器,舵机输出指定的角度。

==相关下载==

库文件(该库文件是官方编译器IDE自带库)不需要下载。

==应用2:串口任意角度控制舵机==

这次使用串口输入舵机转动角度发送给arduino,arduino控制舵机转动到制定角度。

所需材料:

UNO R3主控版一块:点我购买

9g或14g舵机一个:点我购买

公对公杜邦线若干:点我购买

面包板一个(方便转接):点我购买

==接线方式==

Open-Live-Writerd61c83ea712d_13F5ATB2874KtFXXXXboXpXXXXXXXXXX_14857792_thumb

==例子程序==

#include <Servo.h> //调用库文件
  
Servo myservo;  // 创建一个伺服电机对象 
  
char inByte = 0; //串口接收的数据 
int angle = 0;  //角度值 
String temp = "";//临时字符变量,又或者说是缓存用的吧 
  
void setup()  

   myservo.attach(9);    //定义舵机的引脚为9
   Serial.begin(9600);  //设置波特率 

  
  
void loop()  

   while (Serial.available() > 0) //判断串口是否有数据 
   { 
     inByte = Serial.read();//读取数据,串口一次只能读1个字符 
     temp += inByte;//把读到的字符存进临时变量里面缓存, 
                    //再继续判断串口还有没有数据,知道把所有数据都读取出来 
    } 
  
    if(temp != "")   //判断临时变量是否为空 
    { 
     angle = temp.toInt();    //把变量字符串类型转成整型 
     Serial.println(angle);  //输出数据到串口上,以便观察 
    } 
   temp = "";//请看临时变量 
   myservo.write(angle);  //控制舵机转动相应的角度。 
   delay(100);//延时100毫秒 

==应用2实验效果==

上传程序,打开串口监视器,输入0-180度的角度数值,例50度。舵机对应的按照角度转动。

==应用3:HC-05蓝牙控制任意角度控制舵机==

通过应用2的示例和HC-05的示例,实现HC-05控制舵机的角度

所需材料:

UNO R3主控版一块:点我购买

9g或14g舵机一个:点我购买

公对公杜邦线若干:点我购买

面包板一个(方便转接):点我购买

HC-05蓝牙模块:点我购买

==接线方式==

HC-05 ARDUINO 9G_bb

==例子程序==

#include <Servo.h> //调用库文件
   
Servo myservo;  // 创建一个伺服电机对象 
   
char inByte = 0; //串口接收的数据 
int angle = 0;  //角度值 
String temp = "";//临时字符变量,又或者说是缓存用的吧 

void setup()
{
     // 如果是HC-05,請改成38400
    Serial.begin(38400);
    myservo.attach(9); 
}

void loop()
{
    while(Serial.available()>0)
     {
       inByte=Serial.read();
         temp += inByte;//把读到的字符存进临时变量里面缓存, 
                     //再继续判断串口还有没有数据,知道把所有数据都读取出来 
     } 
   
     if(temp != "")   //判断临时变量是否为空 
     { 
      angle = temp.toInt();    //把变量字符串类型转成整型 
      Serial.println(angle);  //输出数据到串口上,以便观察 
     } 
    temp = "";//请看临时变量 
    myservo.write(angle);  //控制舵机转动相应的角度。 
    delay(100);//延时100毫秒 
         }
   

==操作说明==

将HC-05蓝牙模块设置如下:

AT+ORGL

AT+NAME=ZBST999

AT+ROLE=0

AT+CMODE=1

AT+PSWD=1234

随后按照接线方式接好模块,手机连接上蓝牙模块,发送指定的角度。舵机转动指定的角度。

==程序效果==

注意:舵机0度的时候可能有抖动,属于正常现象。

==相关下载==

库文件(该库文件Servo.h是官方编译器IDE自带库)不需要下载。


未经允许不得转载:Arduino-Maker » Arduino与舵机的其他应用

支付宝扫码打赏 微信打赏

原创文章,若帮到您,欢迎打赏

分享到:更多 ()

评论 抢沙发

评论前必须登录!

 

线上商城

中贝斯特创客空间蘑菇云创客教育