#include <PS2X_lib.h> //PS2手柄
PS2X ps2x; // create PS2 Controller Class
//////////PS2引脚//////////////////一共4个信号引脚
#define PS2_DAT 26 // DI
#define PS2_CMD 27 // DO
#define PS2_SEL 32 //CS
#define PS2_CLK 34 ////////////
unsigned char servo,PS2_LY,PS2_LX,PS2_RY,PS2_RX,PS2_KEY; //定义相关的变量
void (* resetFunc) (void) = 0;// Reset func
/***********函数功能:初始化 相当于STM32里面的Main函数 作者:平衡小车之家************/
void setup() {
char error;
Serial.begin(57600); //开启串口
error = ps2x.config_gamepad(PS2_CLK, PS2_CMD, PS2_SEL, PS2_DAT, false, false);//PS2控制

}
/******函数功能:主循环程序体*******/
void loop(){

ps2x.read_gamepad(false, 0); //read controller and set large motor to spin at 'vibrate' speed
PS2_LX=ps2x.Analog(PSS_LX);
PS2_LY=ps2x.Analog(PSS_LY);
PS2_RX=ps2x.Analog(PSS_RX);
PS2_RY=ps2x.Analog(PSS_RY);
Serial.print("PS2_LX:");
Serial.print(PS2_LX);
Serial.print(" PS2_LY:");
Serial.print(PS2_LY);
Serial.print(" PS2_RX:");
Serial.print(PS2_RX);
Serial.print(" PS2_RY:");
Serial.print(PS2_RY);
if(ps2x.Button(PSB_TRIANGLE)) Serial.println(" PSB_TRIANGLE");
else if(ps2x.Button(PSB_CROSS)) Serial.println(" PSB_CROSS");
else if(ps2x.Button(PSB_CIRCLE)) Serial.println(" PSB_CIRC");
else if(ps2x.Button(PSB_SQUARE)) Serial.println(" PSB_SQUARE");
else if(ps2x.Button(PSB_PAD_UP)) Serial.println(" PSB_PAD_UP");
else if(ps2x.Button(PSB_PAD_DOWN)) Serial.println(" PSB_PAD_DOWN");
else if(ps2x.Button(PSB_PAD_RIGHT)) Serial.println(" PSB_PAD_RIGHT");
else if(ps2x.Button(PSB_PAD_LEFT)) Serial.println(" PSB_PAD_LEFT");
else if(ps2x.Button(PSB_R1)) Serial.println(" PSB_R1");
else if(ps2x.Button(PSB_R2)) Serial.println(" PSB_R2");
else if(ps2x.Button(PSB_SELECT)) Serial.println(" PSB_SELECT");
else if(ps2x.Button(PSB_START)) Serial.println(" PSB_START");
else if(ps2x.Button(PSB_L1)) Serial.println(" PSB_L1");
else if(ps2x.Button(PSB_L2)) Serial.println(" PSB_L2");
else Serial.println(" KEY_RELEASE");
}

PS2手柄在arduino上进行测试,可用,供喜欢diy的朋友借鉴的更多相关文章

  1. Plupload 多实例上传 测试可用

    <style type="text/css"> .btn{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-bo ...

  2. linux下libnet编程 亲自测试可用

    linux下libnet编程 亲自测试可用 亲自测试  如果build包的时候 只要把类型改了 就能改成相应的协议. 0x0800 ip 0x0806 arp 0x86DD    IPv6 0x86e ...

  3. [转帖]上云测试,这些关键点你get 到没有

    上云测试,这些关键点你get 到没有 https://www.cnblogs.com/mypm/p/10852656.html?tdsourcetag=s_pcqq_aiomsg sticky 还有s ...

  4. 分布式文件系统 - FastDFS 配置 Nginx 模块及上传测试

    也不说废话,直接干 上一篇 分布式文件系统 - FastDFS 在 CentOS 下配置安装部署 中安装了 FastDFS 后,并配置启动了 Tracker 和 Storage 服务,已经可以上传文件 ...

  5. 微软官方网站线上兼容测试平台-Browser screenshots

    前端开发时最不想做的就是在不同浏览器.平台和分辨率测试网页显示效果,通常这会浮现许多问题,尤其浏览器版本就可能让显示成效完全不同,也只好尽力维持让每一种设备都能正常浏览网页.修改到完全没有问题必须投入 ...

  6. arduino上使用sprintf()函数输出float值出错

    如果尝试使用sprintf()函数在arduino上进行对float指转换为一个字符串的话,你会发现,it doesn't work.弄了很久,还以为是没学c++的原因.其实在arduino上,这个函 ...

  7. 通过ALM OTA API获取test case的信息,并上传测试结果到test set中

    ALM提供了OTA接口,可以用来获取和上传测试数据到ALM.比如获取Test case的step信息.上传测试结果到test instance. 在ALM的Help中可以下载相关文档,这里以ALM11 ...

  8. 无需编译app切换线上、测试环境

    在咱们测试过程中,经常需要切换测试环境和线上环境.大致有如下几个方案. 一.服务器地址编译到app中 此种方式需要在代码里保存两套配置,一套指向线上,一套指向测试.通过编译参数分别生成测试包.线上包. ...

  9. Arduino上“Collect2.exe: error: ld returned 5 exit status”错误的解决方法

    1.运行环境 Windows xp; Arduino1.6.11 IDE. 2.问题 在Arduino编译时,经常出现如下的错误: collect2.exe: error: ld returned 5 ...

随机推荐

  1. 前沿理论、反思创新、产学结合——你不能错过的WSDM 2016大会

    第九届ACM网络搜索与数据挖掘国际会议(ACM International Conference on Web Search and Data Mining,简称WSDM)已于上周(2月22日-25日 ...

  2. GIT 使用(一):安装和配置

    安装和配置 Table of Contents 1. 安装 2. 配置 1. 初次运行 Git 前的配置 小结 2. 用户信息 3. 别名 4. 查看已经存在的配置 3. 获取帮助 4. 参考与扩展阅 ...

  3. vue-cli “从入门到放弃”

    主要作用:目录结构.本地调试.代码部署.热加载.单元测试 在如今前端技术飞速发展的时代,angular.js.vue.js 和 react.js 作为前端框架已经呈现出了三国鼎立的局面.作为国人若你不 ...

  4. 计算机思维的逻辑基础是什么? & 计算思维

    l  计算机思维的逻辑基础: 计算机思维是指人们操作计算机时,计算机行使特定功能的运作方式. 逻辑基础则是指支撑事物运作的基本法则. 因而,计算机思维的逻辑基础可以理解为,计算机在行使特定功能时,其运 ...

  5. 2020最新ArchLinux安装(KDE桌面)

    许多网友反映之前的教程安装好后连不上互联网,最近我刚好又安装了一遍,总结出以下没毛病的过程 按照此教程需要你会基本的vim操作(或其他文本编辑工具比如nano),基本的fdisk分盘操作(或其他分盘工 ...

  6. 如何学习kafka?

      本文是我学习kafka的一个思路和总结,希望对刚接触kafka的你有所帮助.在学习kafka之前,最好能对kafka有一个简单的了解,可以提出一些问题,带着问题去学习,就会容易一些. 0 什么是k ...

  7. 关于.NET中的控制反转及AutoFac的简单说明

    目录 1.控制反转 1.1 什么是依赖? 1.2 什么是控制反转? 1.3 什么是依赖注入? 1.4 简单总结 2.控制反转容器 2.1 IOC容器说明 2.2 使用AutoFac的简介示例 3 使用 ...

  8. 前端工程师眼中的Docker

    笔者最近在整理 Node.js 操作各数据库的方法,却不料遇到一个很棘手的问题:很多数据库,都需要同时下载 Server 端和 Client 端,并进行相应的配置,着实是麻烦.那有没有方法可以省去这些 ...

  9. 032.核心组件-kube-proxy

    一 kube-proxy原理 1.1 kube-proxy概述 Kubernetes为了支持集群的水平扩展.高可用性,抽象出了Service的概念.Service是对一组Pod的抽象,它会根据访问策略 ...

  10. 爬虫前奏——代理ip的使用

    如果同一个IP短时见内多次访问统一网页,可能会被系统识别出是爬虫,因此使用代理IP可以很大程度上解决这一问题 常用的代理有: 西刺免费代理:www.xicidaili.com 快代理:www.kuai ...