进阶之路(中级篇) - 017 有关于Arduino 驱动舵机及相关问题
/*********************************
代码功能:通过串口控制电机
使用函数:
Serial.available(); //判断串口是否接收到数据
Serial.print(字符串); //通过TX传出去
Serial.write(字符串); //写入串口中
Serial.println(字符串); //通过TX传出去,并在尾端加换行
strtol(字符串启始指针,字符串结束指针,字符转换长度); //字符串转整形
constrain(数据,区间上界,区间下界); //约束数据范围函数
strtok(将要分解字符串首地址,"分割字符"); //字符分割函数(s指向要分解的字符串,之后再次调用要把s设成NULL。)
调用的库:#include <Servo.h> //设置舵机的库:详情见:https://www.arduino.cc/en/Reference/Servo
(电机名称).attach(控制电机引脚); //初始化电机
(电机名称).write(角度); //写入旋转角度
(电机名称).writeMicroseconds(中间参数); //设置电机的转动方向值,详情见:http://www.cnblogs.com/jikexianfeng/p/6269629.html
(电机名称).read(); //用于读取舵机角度的语句,可理解为读取最后一条write()命令中的值。返回值为伺服的角度,从0到180度。
(电机名称).attached(); //检查伺服变量是否连接到引脚。如果伺服器连接到引脚,则为真; 否则为假。
(电机名称).detach(); //从其引脚分离伺服变量。如果所有伺服变量都分离,则引脚9和10可以用于使用analogWrite()进行PWM输出。
创作时间:2016*01*10
作者邮箱:jikexianfeng@outlook.com
********************************/
#include <Servo.h> char buffer[];
Servo servo1;
Servo servo2;
int L = ;
int R = ; void setup()
{
servo1.attach(L);
servo2.attach(R);
Serial.begin();
Serial.flush();
servo1.write();
servo2.write();
Serial.println("STARTINC....");
}
void loop()
{
if(<Serial.available()){
int index = ;
delay();
int numChar = Serial.available();
if(numChar > ){
numChar = ;
}
while(numChar--){
buffer[index++] = Serial.read();
}
splitString(buffer);
}
} void splitString(char *data){
Serial.print("Data entered:");
Serial.println(data);
char *parameter;
parameter = strtok(data,","); //首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL
while(NULL != parameter){
setServo(parameter);
parameter = strtok(NULL,","); //首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL
}
for(int x =;x<;x++){
buffer[x] = '\0';
}
Serial.flush();
} void setServo(char *data){
if((data[] == 'R')||(data[] == 'r')){
int firstVal = strtol(data+,NULL,);
firstVal = constrain(firstVal,,);
servo2.write(firstVal);
Serial.print("Servo2 is set to:");
Serial.println(firstVal);
}
if((data[] == 'L')||(data[] == 'l'))
{
int firstVal = strtol(data+,NULL,);
firstVal = constrain(firstVal,,);
servo1.write(firstVal);
Serial.print("Servo1 is set to:");
Serial.println(firstVal);
}
}
Arduino开发板上的5V供电口电流有限,只能带动一个S90的舵机,而且电机运动过程中对电源有较大的波动对开发板电压得稳定性有较大的冲击,会影响 Arduino开发板的正常工作,严重时会造成时钟紊乱,不断重启。
参考博客:http://www.cnblogs.com/jikexianfeng/p/6269629.html
参考网站:https://www.arduino.cc/en/Reference/Servo
进阶之路(中级篇) - 017 有关于Arduino 驱动舵机及相关问题的更多相关文章
- 进阶之路(中级篇) - 018 基于arduino的简易版智能衣架
一. 设备及要求 目的:制作一个可以自动根据事实的天气的状况进行对衣架上的衣服进行晾晒. 基础装置:可伸缩的晾衣架. 开发环境:Arduino1. 8.1 主控板:Arduino UNO 动力装 ...
- docker进阶之路-基础篇 | 一:环境搭建
转载请注明作者及出处: 作者:银河架构师 原文链接:https://www.cnblogs.com/luas/p/12061747.html 一.准备工作 查看内核 Docker 要求 CentOS ...
- docker进阶之路-基础篇 | 二:portainer安装与基本使用
转载请注明作者及出处: 作者:银河架构师 原文链接:https://www.cnblogs.com/luas/p/12061755.html 简介 Portainer 是轻量级,跨平台,开源的管理D ...
- 运维工程师打怪升级进阶之路 V2.0
在此之前,发布过两个版本: 运维工程师打怪升级之路 V1.0 版本发布 运维工程师打怪升级必经之路 V1.0.1 很多读者伙伴们反应总结的很系统.很全面,无论是0基础初学者,还是有基础的入门者,或者是 ...
- Java 进阶 hello world! - 中级程序员之路
Java 进阶 hello world! - 中级程序员之路 Java是一种跨平台的语言,号称:"一次编写,到处运行",在世界编程语言排行榜中稳居第二名(TIOBE index). ...
- Scala进阶之路-并发编程模型Akka入门篇
Scala进阶之路-并发编程模型Akka入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Akka Actor介绍 1>.Akka介绍 写并发程序很难.程序员不得不处 ...
- Scala进阶之路-Scala函数篇详解
Scala进阶之路-Scala函数篇详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.传值调用和传名调用 /* @author :yinzhengjie Blog:http: ...
- Sass进阶之路,之一(基础篇)
Sass 学习Sass之前,应该要知道css预处理器这个东西,css预处理器是什么呢? Css预处理器定义了一种新的语言将Css作为目标生成文件,然后开发者就只要使用这种语言进行编码工作了.预处理器通 ...
- 【SSH进阶之路】Hibernate系列——总结篇(九)
这篇博文是Hibernate系列的最后一篇,既然是最后一篇,我们就应该进行一下从头到尾,整体上的总结,将这个系列的内容融会贯通. 概念 Hibernate是一个对象关系映射框架,当然从分层的角度看,我 ...
随机推荐
- 【R】函数-数学函数
- JAVA-Eclipse中web-inf和meta-inf文件夹
WEB-INF /WEB-INF/web.xml 你的Web应用程序配置文件,这是一个XML文件,其中描述了 servlet 和其他的应用组件配置及命名规则: /WEB- IN ...
- C++之new、delete 与malloc、free的异同
在C/C++编程中常常会申请内存.而对内存的申请释放操作有两套方法: new.delete 与malloc.free.他们的使用最好是成对使用,不要去混搭---这可不是时尚界哦. 例如以下是这两组方法 ...
- 如何启动docker service
From powershell prompt following works for me with no issues restart-service *docker* [注意] 我试了一下,这个命 ...
- Springmvc 上传文件MultipartFile 转File
转自:http://blog.csdn.net/boneix/article/details/51303207 业务场景:ssm框架 上传文件到应用服务器过程中要传到专有的文件服务器并返回url进行其 ...
- powerdesigner 生成数据库脚本
PowerDesigner导出所有SQL脚本 操作:Database=>Generate Database PowerDesigner怎么导出建表sql脚本 1 按照数据库类型,切换数据库. D ...
- PHPUnit单元测试
单元测试 PHPUnit <?php /** * 定义一个用来被测试的类RemoteConnect * @author json * */ class RemoteConnect{ public ...
- ArcGIS10.3新体验
自2012年ESRI更新10.2以后,终于在2014年12月8日,官方推出了10.3版本,前几天忙于抢票,今天终于可以在虚拟机中体验一把. 由于使用的是预览版,所有安装包只有800多M,包括桌面核心程 ...
- css规范 - bem
用我的话简述来说,即 B:何种元素 E:何种模块使用它(header,footer)等 M:描述它是做何种事情的 例如就是我有个主页,名称是:index.html index_header_logo ...
- 机器学习-分类器-级联分类器训练(Train CascadeClassifier )
一.简介: adaboost分类器由级联分类器构成,"级联"是指最终的分类器是由几个简单分类器级联组成.在图像检测中,被检窗口依次通过每一级分类器,这样在前面几层的检测中大部分的候 ...