1、首先,要想实现要想实现Ps2手柄控制舵机任意角度控制,必须要了解怎样实现Ps2手柄与arduino nano的通信和解码以及舵机的工作原理,这个比较简单,大家去自行了解一下就OK了。

2、舵机的工作原理是:向舵机发送周期为20ms的脉冲信号,当这段脉冲中高电位占比为0.5ms的时候,舵机会转至0度,当高电位占比为2.5ms的时候,舵机会转至180度。(这部分做一下简单了解,在程序中并未体现)。

3、本次采用arduino的库函数文件Servo.h。可以轻松地实现舵机旋转任意角度。具体功能在程序中也有标注出来,比较清晰,读者可以自行观看。(老牛的程序是可以直接COPY过去使用的,没有的库文件,老牛已经放在百度网盘,建议大家自己下载一下)。链接:https://pan.baidu.com/s/1XTgef2rl0iQFTJU2PuGJ5A 
提取码:66ln

链接:https://pan.baidu.com/s/1Fozo8eEGHAFu-ZLSgziuKg 
提取码:66ln

4、基本原理很简单,废话不多说,上连接图。

5、代码。

​/*****************************************This program is just belong to Niu Lao.Don't spread it on website casually. Auther: Niu LaoFunction:1、实现Ps2手柄与arduino的通信和数据解析2、实现舵机任意角度的旋转控制
******************************************/
#include <PS2X_lib.h>
#include <Servo.h>
#define PS2_DAT        13
#define PS2_CMD        11
#define PS2_SEL        10
#define PS2_CLK        12
#define pressures   false
#define rumble      false
int error = 0;
//int speed = 0;
byte type = 0;
byte vibrate = 0;
PS2X ps2x;
void (* resetFunc) (void) = 0;
//以上为手柄配置
int sck = 9;
Servo duoji;//伺服舵机void setup() {// put your setup code here, to run once:Serial.begin(115200);pinMode(sck, OUTPUT);duoji.attach(9);//舵机连接9号引脚type = ps2x.readType();error = ps2x.config_gamepad(PS2_CLK, PS2_CMD, PS2_SEL, PS2_DAT, pressures, rumble);delay(300);
}void loop() {// put your main code here, to run repeatedly:if (error == 1) {resetFunc();}if (type == 2) {ps2x.read_gamepad();}else {ps2x.read_gamepad(false, vibrate);vibrate = ps2x.Analog(PSAB_CROSS);int LY1 = ps2x.Analog(PSS_LY);int LX1 = ps2x.Analog(PSS_LX);int RY1 = ps2x.Analog(PSS_RY);int RX1 = ps2x.Analog(PSS_RX);int ly = map(LY1, 0, 255, 0, 170);int lx = map(LX1, 0, 255, 0, 170);int ry = map(RY1, 0, 255, 0, 170);int rx = map(RX1, 0, 255, 0, 170);Serial.print(LY1);Serial.print(',');Serial.print(LX1);Serial.print(',');Serial.print(RY1);Serial.print(',');Serial.print(RX1);Serial.print('\n');if (ps2x.Button(PSB_L1) || ps2x.Button(PSB_R1)) {if (ps2x.Button(PSB_GREEN)) {duoji.write(0);delay(700);}if (ps2x.Button(PSB_PINK)) {duoji.write(30);delay(700);}if (ps2x.Button(PSB_BLUE)) {duoji.write(60);delay(700);}if (ps2x.Button(PSB_RED)) {duoji.write(90);delay(700);}}else {digitalWrite(sck, LOW); //将舵机输出引脚拉低delay(50);}if (ps2x.Button(PSB_L2) || ps2x.Button(PSB_R2)) {duoji.write(ly);delay(700);}else {digitalWrite(sck, LOW); //将舵机输出引脚拉低delay(50);}}
}​

6、简单总结一下,本次介绍了arduino实现Ps2手柄控制舵机任意角度。需要掌握的部分有:map(Value,Min1,Max1,Min2,Max2)函数,实现不同限定变化范围的转换、调用库文件函数(本次基本是库文件程序作用)、基础电路知识、基础C语言知识、Servo库函数的调用(程序中标注比较详细,就不再赘述)。老牛也会努力让更多小白能够触摸到电路控制的乐趣,后续还会继续更新一些遥控小车,语音遥控等等一些有趣的开发项目。

老牛

arduino nano实现Ps2手柄控制舵机旋转至任意角度相关推荐

  1. C# 图片处理之:旋转图片任意角度

    以上C#数字图像处理的相关文章均转自:k1381的专栏 http://blog.csdn.net/ki1381/category/240835.aspx?PageNumber=1 在此特别感谢!! 拍 ...

  2. Qt QPixmap旋转任意角度

    效果 使用 QPixmap pix2 = rotateImageWithTransform(pix1, 30); 源码 // 旋转图片任意角度 QPixmap rotateImageWithTrans ...

  3. MJKDZ PS2手柄控制OskarBot小车(一):Arduino串口发送数据

    MJKDZ PS2手柄控制OskarBot小车(一):Arduino串口发送数据 [目录] - 1.无线通信模块设置 - 1.1 设置参数 - 1.2 调试步骤 - 2.按键与通信格式 - 2.1 P ...

  4. arduino nano学习过程中的相关程序

    Arduino Nano相关程序 1.超声波测距 小车加测距(测距引用的库,缺点测的距离为整数) #include <SPI.h> // 加载SPI库 #include <Wire. ...

  5. 利用Nodemcu+Arduino nano+TB6612+点灯科技APP制作简易麦克纳姆轮Wi-Fi遥控小车

    摘要 麦克纳姆轮小车由于车轮本身的特殊结构,可以实现全向行驶,可玩性非常强.麦克纳姆轮原理在这里不做展开,麦克纳姆小车主要是通过控制四个轮胎的转与不转以及转动的方向来实现多方向的运动,其中一种X型车轮 ...

  6. Arduino利用红外感应控制舵机

    实现功能:当红外感应到人时,控制舵机转动180度 参考:基于Arduino的多种方式控制舵机(舵机.电位器.蓝牙). 硬件连接: 舵机连接: Arduino Micro Servo 9g 5V 红线 ...

  7. jetson nano GPIO引脚控制舵机

    文章目录 一.舵机介绍 二.舵机工作原理 180度舵机 360度舵机 三.利用jetson nano GPIO控制舵机 1.jetson nano与舵机接 2.c++编写程序输出脉冲(Qt做界面) 一 ...

  8. arduino nano原理图_三种常用的Arduino开发板

    什么是Arduino?相信很多读者都会有这个疑问,甚至有人认为手中的开发板就是Arduino.维基百科上说,"Arduino是一块单板的微控制器和一整套开发软件,它的硬件包含一个以ATMEL ...

  9. arduino nano 简单实现蓝牙模块与手机进行通信

    1.背景 目前很多通信方式都需要外附手柄,控制器,接收器,体积比较大,用起来不够方便.那么,对于距离要求不高的控制小项目,蓝牙通信一定是不二之选. 2.需要预备了解的内容 基础的编程思想和基础的C语言 ...

  10. 利用arduino nano开发板配合oled、温度传感器、光照传感器、湿度传感器设计一个花盆

    利用arduino nano开发板配合oled.温度传感器.光照传感器.湿度传感器设计一个花盆 完整项目地址: https://github.com/linxinloningg/arduino_chi ...

最新文章

  1. 从原理到落地,七大维度读懂协同过滤推荐算法
  2. HttpComponents
  3. 使用optuna为机器学习模型挑选最优参数进行模型构建实战
  4. 《麻省理工学院技术评论》评出最新十大突破性技术
  5. boost::gil::packed_channel_value用法的测试程序
  6. idea 启动tomcat 工程_如何在IDEA中创建web项目并且部署到Tomcat中
  7. find_element 和find_elements 的区别
  8. 第二课(2)添加导航栏
  9. css table 合并单元格
  10. Oracle 临时表
  11. C#如何调用阿里云短信接口
  12. PSV最实用游戏使用攻略
  13. SIP入门(一):建立SIP软电话环境
  14. Nginx网页优化(隐藏版本号,日志分割,更改进程数,网页压缩,防盗链详
  15. Qt多功能计算器(一)——基本功能
  16. 计算机课excel,计算机excel教学课件.doc
  17. Kafka | Kafka的消费再均衡是指什么?
  18. druid的后台监控
  19. Windows8内核模式下开发NDIS应用-NDIS Filter讲解
  20. MFC Windows 程序设计[315]之磁盘文件列举器(附源码)

热门文章

  1. power-law 之Zipf
  2. gels imagej 图片处理_科研论文作图之ImageJ
  3. 三菱PLC控制步进电机(外部接线原理图)
  4. 试用钉钉内网映射工具
  5. arm linux嵌入式系统教程课后答案,ARM嵌入式系统基础教程课后习题答案及练习题__周立功...
  6. 每周分享第 18 期
  7. mysql查询每个月入职人数_按年份统计入职人数sql语句
  8. 论山寨手机与Android 【6】MTK手机的基带芯片
  9. Unity3D 从 ipa 中提取游戏资源
  10. bugku——蹭网先解开密码(EWSA,hashcat破解wifi握手包)