咸鱼ZTMR实例—PS2手柄
咸鱼ZTMR实例—PS2手柄
主控板:ZTMR开发板
PS2手柄
PS2 手柄是游戏机的遥控手柄。psx 系列游戏主机在全球很是畅销。不知什么时候便有人打起 PS2手柄的主意,破解了通讯协议,使得手柄可以接在其他器件上遥控使用,比如遥控我们熟悉的机器人。突出的特点是现在这款手柄性价比极高。按键丰富,方便扩展到其它应用中。
PS2 由手柄与接收器两部分组成,手柄主要负责发送按键信息。都接通电源并打开手柄开关时,手柄与接收器自动配对连接,在未配对成功的状态下,接收器绿灯闪烁,手柄上的灯也会闪烁,配对成功后,接收器上绿灯常亮,手柄上灯也常亮,这时可以按“MODE”键,选择手柄发送模式,红灯模式:遥杆输出模拟值;绿灯模式:遥杆对应上面四个按键,只有四个极限方向对应。
接收器和主机(单片机)相连,实现主机与手柄之间的通讯。
接收器引脚输出:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|
DI/DAT | DO/CMD | NC | GND | VDD | CS/SEL | CLK | NC | ACK |
例程:串口打印PS2按钮信息
main.py
# main.py -- put your code here!
import ps2def main():while True:pyb.delay(100)print('xycs:',ps2.ps2_key())
if __name__ == '__main__':main()
网上已经有开源的PS2手柄定义了, 我们保存成ps2.py文件直接保存起来就好了
ps2.py
from machine import Pin
import time
def ps2_test():print('test ok')
di=Pin(Pin.cpu.C6,Pin.IN,Pin.PULL_DOWN)
do=Pin(Pin.cpu.C7,Pin.OUT, )
cs=Pin(Pin.cpu.B0,Pin.OUT,) #PULL_UP
clk=Pin(Pin.cpu.B1,Pin.OUT,) #D0 16 dat=DI
#D2 04 cmd=DO
#D3 0 CS =CS
#D4 02 CLK=CLK
def DO_H():do.value(1)
def DO_L():do.value(0)
def CS_H ():cs.value(1)
def CS_L():cs.value(0)
def CLK_H ():clk.value(1)
def CLK_L():clk.value(0)#常量按钮
PSB_SELECT = 1
PSB_L3 = 2
PSB_R3 = 3
PSB_START = 4
PSB_PAD_UP = 5
PSB_PAD_RIGHT = 6
PSB_PAD_DOWN = 7
PSB_PAD_LEFT = 8
PSB_L2 = 9
PSB_R2 = 10
PSB_L1 = 11
PSB_R1 = 12
PSB_GREEN = 13
PSB_RED = 14
PSB_BLUE = 15
PSB_PINK = 16
PSB_TRIANGLE = 13
PSB_CIRCLE = 14
PSB_CROSS = 15
PSB_SQUARE = 26
# 左摇杆
PSS_RX = 5
PSS_RY = 6
PSS_LX = 7
PSS_LY = 8
mask=[
PSB_SELECT,PSB_L3,PSB_R3 ,PSB_START,PSB_PAD_UP,PSB_PAD_RIGHT,PSB_PAD_DOWN,PSB_PAD_LEFT,PSB_L2,PSB_R2,PSB_L1,PSB_R1 ,PSB_GREEN,PSB_RED,PSB_BLUE,PSB_PINK]
comd=[0x01,0x42]
data=[0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]
def ps2_init():CLK_H()DO_H()time.sleep_ms(10)
def ps2_cmd(cmd):global datadata[1]=0for ref in (1,2,4,8,16,32,64,128):if ( ref & cmd):DO_H()else:DO_L()CLK_H ()time.sleep_us(50)CLK_L()time.sleep_us(50)CLK_H ()if(di.value()==1):data[1]=ref|data[1]
def ps2_red():global dataglobal comdCS_L()ps2_cmd(comd[0])ps2_cmd(comd[1])CS_H()if(data[1]==57):return 0#red lightelse:return 1#not red
def ps2_read():global dataglobal comdbyte=0ref=0x01CS_L()ps2_cmd(comd[0])ps2_cmd(comd[1])for byte in (2,3,4,5,6,7,8):for ref in (1,2,4,8,16,32,64,128):CLK_H ()CLK_L()time.sleep_us(50)CLK_H ()if(di.value()==1):data[byte]= ref|data[byte]time.sleep_us(50)CS_H ()
def ps2_clear():#okglobal datafor i in range(0,9,1):data[i]=0def ps2_andata(button):global datareturn data[button]
def ps2_key():global dataglobal maskps2_clear()ps2_read()handkey=(data[4]<<8)|data[3]for index in (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15):if (( handkey&(1<<(mask[index]-1)))==0):return index+2return 0
串口效果
咸鱼ZTMR实例—PS2手柄相关推荐
- 咸鱼ZTMR实例—机械臂
咸鱼ZTMR实例-机械臂 1个舵机不过瘾,来4个搞搞机械臂. SG90舵机X4 范围180°(-90°~90°) 引脚 说明 暗灰(棕色) GND 红色 5V 橙色 X1 PS2手柄 PS2手柄数字 ...
- 咸鱼ZTMR实例—板载LED
咸鱼ZTMR实例-板载LED 大部分开发板的例程,都是从闪灯(控制LED闪烁)开始的.因为闪灯的程序简单,也比较直观,不但可以让初学者快速了解基本方法, 也可以直观地看到效果. 用法 说明 pyb.L ...
- 咸鱼ZTMR实例—寻迹模块
咸鱼ZTMR实例-寻迹模块 主控板:ZTMR1.1python开发板 寻迹模块 ZT红外寻迹 规格参数: 1.工作电压:DC 3.3V-5V 2.工作电流:尽量选择1A以上电源供电 3.工作温度:-1 ...
- 咸鱼ZTMR实例—加速传感器
咸鱼ZTMR实例-加速传感器 MMA7660FC 加速度传感器基本使用 制作水平仪 MMA7660FC MMA7660FC可在六个方向定制垂直水平座向 集成了众多智能的运动功能,如方向.震动和敲击检测 ...
- 咸鱼ZTMR实例—巡线入门
咸鱼ZTMR实例-巡线入门 之前我们用寻迹模块简单的做了一个防止小车高处跌落的功能,但是寻迹并不简单(/滑稽).本次我们使用寻迹来做一个巡线功能.简单来说就是我们画一条线,让小车按照线来行驶~~ 巡线 ...
- 咸鱼ZTMR实例—土壤湿度计检测模块
咸鱼ZTMR实例-土壤湿度计检测模块 通过电位器调节土壤湿度控制阀值,可以自动对菜园,花园自动浇水,家庭花盆土壤湿度的控制,各种电子比赛,电子积木,arduino设计等. 主控板:ZTMR1.1开发板 ...
- 咸鱼ZTMR实例—自动浇花器
咸鱼ZTMR实例-自动浇花器 我们之前用过土壤湿度计检测模块,继电器我们也会用了,还等什么呢?自动灌水安排上~ 主控板:ZTMR1.1开发板 土壤湿度计检测模块 模块介绍 采用优质土壤传感器做土壤湿度 ...
- 小车主板哪家强?PS2手柄4路电机输出..火魔童主板了解一下?
微信关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 最近收到了芯吧客邮寄的火魔童V1.0主板,今天简单给大家介绍一下 别的废话就不多说了, ...
- 咸鱼ZTMS实例—心率检测
咸鱼ZTMS实例-心率检测 所选设备 接线 示例代码 测试效果 所选设备 主控板:ZTMS1.1python开发板 0.96oled屏幕 max30102 MAX30102是一个集成的脉搏血氧仪和心率 ...
- 咸鱼ESP32实例—MQTT
咸鱼ESP32实例-MQTT 发布者(publish)参考代码: 订阅者(subscribe)参考代码: 由于特殊的发布/订阅机制,服务器不需要存储数据(当然也可以在服务器的设备上建立一个客户端来订阅 ...
最新文章
- 2017-1-7 html元素分类(1)
- ci框架 乱码 mysql_mysql容器乱码问题
- Java可变参数 Python可变参数 Scala可变参数
- 转:Page.ClientScript.RegisterStartupScript(me.GetType(),script1,scriptalert('111');/script)...
- Python 爬虫咸鱼版
- 方便使用FFMPEG的经验
- 关于Windows高DPI的一些简单总结
- NCC2105关于分管领导审批流设置另一方法
- METS(护理类)一级考试的信效度分析及其对教学的作用
- html背景图片定位方法
- CAD学习之CASS快捷键
- java ipv6校验_Java对IPv6的支持详解:支持情况、相关API、演示代码等
- 小笨狼的LLDB技巧:chisel
- php操作redis方法详解
- https防止注入_离子注入新法,将钢的耐磨性提高百倍
- BET365网站websocket解密分析
- Python深度学习(循环神经网络)--学习笔记(十三)
- Java开发记事本(完整版)
- 计算机键盘桌滑道原理,电脑桌键盘滑道组装办法,办公桌下面的键盘托怎么安装...
- mysql threads create_mysql Threads_created 增长过快的解决
热门文章
- Freescale PowerPC系列架构 处理器 种类介绍 型号发展
- 基于SSM的网上购物系统的设计与开发
- 基于PHP+MySQL的网上图书店商城在线销售系统
- VisionPro实现测量工件内圆尺寸
- 定时 监控 shell 服务宕机自动重启,并发送短信通知
- 惠普触控板使用指南_hp触摸板开关怎么使用 如何锁定hp触摸板
- win7计算机管理没有用户模块,Win7系统安装“ipx协议”提示“找不到相应的模块”如何解决...
- 主板检测卡c5_主板检测卡代码大全
- window下ruby的下载与gem安装
- 哈夫曼编码C++实现