网上买了ps2手柄,按stm32 代码 改写了个micropython

[复制链接]

from machine import Pin

import time

di=Pin(12,Pin.IN,Pin.PULL_DOWN)

do=Pin(14,Pin.OUT, )

cs=Pin(27,Pin.OUT,)     #PULL_UP

clk=Pin(26,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)

#These are our button constants

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                #x

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 data

data[1]=0

for 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 data

global comd

CS_L()

ps2_cmd(comd[0])

ps2_cmd(comd[1])

CS_H()

if(data[1]==57):

return 0#red light

else:

return 1#not red

def ps2_read():

global data

global comd

byte=0

ref=0x01

CS_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():#ok

global data

for i in range(0,9,1):

data[i]=0

def ps2_andata(button):

global data

return data[button]

def ps2_key():

global data

global mask

ps2_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<

return index+2

return 0

2018-3-30 22:24 上传

micropython stm32源码修改_网上买了ps2手柄,按stm32 代码 改写了个micropython相关推荐

  1. Deep Compression阅读理解及Caffe源码修改

    Deep Compression阅读理解及Caffe源码修改 作者:may0324 更新:  没想到这篇文章写出后有这么多人关注和索要源码,有点受宠若惊.说来惭愧,这个工作当时做的很粗糙,源码修改的比 ...

  2. scala解析csv文件写入mysql_scala实战之spark源码修改(能够将DataFrame按字段增量写入mysql数据表)...

    在上一篇博文中,我们可以简单的应用官网的给出的一些接口提取mysql数据表中的数据到spark中,也可以将spark的运行结果存入mysql中. 但是我们会发现spark将其DF存入mysql的时候, ...

  3. Android Dialer,Mms,Contacts源码修改笔记,移动端混合开发经验

    ②在AndroidManifest.xml中修改相应Activity的theme <activity android:name=".HomeActivity" android ...

  4. chosen.jquery.js 、chosen-select 源码修改控制 chosen:updated 方法动态更新下拉框选项不更新搜索框值 ,chosen 实现远程搜索加载下拉选项

    chosen.jquery.js .chosen-select 源码修改控制 chosen:updated 方法动态更新下拉框选项不更新搜索框值,chosen 实现远程搜索加载下拉选项 chosen. ...

  5. Android TV 源码修改默认输入法

    前一阵子,应泰国客户需求,需要在Android TV系统定制一个多语言输入法,至少支持中.英.泰三种语言.拿到这个任务,对于至今还是小白的我来说,当然先去google一下有没有大神专门做过符合要求的输 ...

  6. Android6.0 源码修改之 仿IOS添加全屏可拖拽浮窗返回按钮...

    Android6.0 源码修改之 仿IOS添加全屏可拖拽浮窗返回按钮 前言 之前写过屏蔽系统导航栏功能的文章,具体可看Android6.0 源码修改之屏蔽导航栏虚拟按键(Home和RecentAPP) ...

  7. 写一个PE的壳_Part 5:PE格式修复+lief源码修改

    系列汇总 写一个PE的壳_Part 1:加载PE文件到内存 写一个PE的壳_Part 2:ASLR+修复输入表(IAT)+重定位表支持(.reloc) 写一个PE的壳_Part 3:Section里实 ...

  8. adb 工具源码修改

    adb 工具源码修改 1.修改客户端输入后的判断逻辑,使带密码的命令 可以通过命令检查 修改 system/core/adb/client/commandline.cpp 在最前面 新增一个函数 用来 ...

  9. grbl控制3轴机械臂 原理 实现 (四) 之GRBL源码修改驱动三轴机械臂

    往期回顾: 第一篇:grbl控制3轴机械臂 原理 实现 (一) 之2D机械臂模拟及实现 第二篇:grbl控制3轴机械臂 原理 实现 (二) 之3D机械臂模拟及实现 第三篇:grbl控制3轴机械臂 原理 ...

  10. file-uploader-cli 关于上传至京东云中文件夹问题的源码修改

    file-uploader-cli源码修改 注:可以直接跳到最下面看需要修改的部分 最近由于Gitee的开源审查,导致其无法再作为图床使用.在对比了多家OSS服务后,决定使用京东云作为新图床,并使用f ...

最新文章

  1. 【leetcode】Roman to Integer
  2. java(9)并发编程
  3. occam‘s razor
  4. 轻松学习,高效学习,那些年大学玩命的学习方法
  5. 狄克斯特拉算法(入门)
  6. Python2和Python3的兼容性写法
  7. vs c语言 多线程demo,一个多线程的Socket通信Demo(C语言实现)
  8. 数据集_自动驾驶数据集
  9. Qt学习笔记-国际化
  10. git新建空白文件没有生效
  11. linux匹配数字正则,51CTO博客-专业IT技术博客创作平台-技术成就梦想
  12. 一种数字全息散斑干涉测量仿真模拟系统
  13. php抖音跳转地址,PHP如何实现解析抖音无水印视频
  14. 在树莓派3上使用红外遥控器控制libreELEC和Raspbian系统
  15. 三取二计算机,三取二是什么意思
  16. MongoDB简单学习小总结
  17. (连载)Android 8.0 : 系统启动流程之Linux内核
  18. el-rate的使用
  19. ubuntu 20.04.2 LTS 安装WPS
  20. CentOS 服务器备份

热门文章

  1. matlab papr,PAPR问题的MATLAB程序
  2. CameraLink简介
  3. 如何给multisim中导入9012/9013/8050/8550三极管
  4. PCB Layout总结
  5. PCB板制造工艺讲解,动图揭秘PCB板生产流程
  6. 个人应对冲突的五种策略——笔记与答案
  7. python 面板数据分析_stata面板数据模型分析的详细步骤和命令
  8. 怎么在PDF文档中为文字添加下划线
  9. vue项目打包部署到服务器子目录二级目录。
  10. 城域网100G宽带传输设备实现客户接入链路告警