咸鱼ZTMR实例—PS2手柄控制板载LED

之前在串口中输出了按钮的值。我们尝试使用这些值来做一些简单的操作,比如控制板载LED。来了解PS手柄使用方法。这个了解完成后我们就可以控制小车了。


主控板:ZTMR开发板

PS2手柄

PS2手柄数字 代表按钮
5
6
7
8
板上标注 pyb实例名 颜色
D4 LED(1)
D5 LED(2) 绿
D6 LED(3)
D7 LED(4)

例程:串口打印PS2按钮信息,对应LED灯亮
main.py

# main.py -- put your code here!
import ps2
import pybwhile True:pyb.delay(300)print(ps2.ps2_key()) if (ps2.ps2_key()==5):pyb.LED(1).on()pyb.delay(200)pyb.LED(1).off()print("led1,on")elif (ps2.ps2_key()==6):pyb.LED(2).on()pyb.delay(200)pyb.LED(2).off()print("led2,on")elif (ps2.ps2_key()==7):pyb.LED(3).on()pyb.delay(200)pyb.LED(3).off()print("led3,on")elif (ps2.ps2_key()==8):pyb.LED(4).on()pyb.delay(200)pyb.LED(4).off()print("led4,on")  

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手柄控制板载LED相关推荐

  1. 咸鱼ZTMR实例—板载LED

    咸鱼ZTMR实例-板载LED 大部分开发板的例程,都是从闪灯(控制LED闪烁)开始的.因为闪灯的程序简单,也比较直观,不但可以让初学者快速了解基本方法, 也可以直观地看到效果. 用法 说明 pyb.L ...

  2. 咸鱼ZTMR实例—寻迹模块

    咸鱼ZTMR实例-寻迹模块 主控板:ZTMR1.1python开发板 寻迹模块 ZT红外寻迹 规格参数: 1.工作电压:DC 3.3V-5V 2.工作电流:尽量选择1A以上电源供电 3.工作温度:-1 ...

  3. 咸鱼ZTMR实例—机械臂

    咸鱼ZTMR实例-机械臂 1个舵机不过瘾,来4个搞搞机械臂. SG90舵机X4 范围180°(-90°~90°) 引脚 说明 暗灰(棕色) GND 红色 5V 橙色 X1 PS2手柄 PS2手柄数字 ...

  4. 咸鱼ZTMR实例—加速传感器

    咸鱼ZTMR实例-加速传感器 MMA7660FC 加速度传感器基本使用 制作水平仪 MMA7660FC MMA7660FC可在六个方向定制垂直水平座向 集成了众多智能的运动功能,如方向.震动和敲击检测 ...

  5. 咸鱼ZTMR实例—巡线入门

    咸鱼ZTMR实例-巡线入门 之前我们用寻迹模块简单的做了一个防止小车高处跌落的功能,但是寻迹并不简单(/滑稽).本次我们使用寻迹来做一个巡线功能.简单来说就是我们画一条线,让小车按照线来行驶~~ 巡线 ...

  6. 咸鱼ZTMR实例—自动浇花器

    咸鱼ZTMR实例-自动浇花器 我们之前用过土壤湿度计检测模块,继电器我们也会用了,还等什么呢?自动灌水安排上~ 主控板:ZTMR1.1开发板 土壤湿度计检测模块 模块介绍 采用优质土壤传感器做土壤湿度 ...

  7. stm32C8t6 通用定时器输出PWM+定时中断控制板载LED

    stm32f103c8t6只有基本定时器和通用定时器,没有高级定时器 通过定时器3使能中断1s一次控制板载LED 基本步骤 *开启定时器时钟 *定时器初始化结构体配置 *定时器中断开启 *定时器使能 ...

  8. 咸鱼ZTMR实例—土壤湿度计检测模块

    咸鱼ZTMR实例-土壤湿度计检测模块 通过电位器调节土壤湿度控制阀值,可以自动对菜园,花园自动浇水,家庭花盆土壤湿度的控制,各种电子比赛,电子积木,arduino设计等. 主控板:ZTMR1.1开发板 ...

  9. 在pcduino开发板上写驱动控制板载LED的闪烁

    由于关于pcduino的资料比较少,所以这篇文章是参考了pcduino爱好者论坛的一篇教程<手把手教你用A10点灯>,并且系统的结合了linux驱动的开发步骤.读完这篇文章,你不但可以对p ...

  10. 咸鱼ZTMS实例—心率检测

    咸鱼ZTMS实例-心率检测 所选设备 接线 示例代码 测试效果 所选设备 主控板:ZTMS1.1python开发板 0.96oled屏幕 max30102 MAX30102是一个集成的脉搏血氧仪和心率 ...

最新文章

  1. Java学习总结:49(字符缓冲流:BufferedReader)
  2. Sql Server 关于整表插入另一个表部分列的语法以及select 语句直接插入临时表的语法...
  3. Distributed Transaction Coordinator 服务因 3221229584 (0xC0001010) 服务性错误而停止
  4. java 对话框 位置_JAVAJOptionPane对话框的几种方法
  5. 如何将Webpack与React结合使用:深入的教程
  6. android 手势类的封装,Android手势识别简单封装类
  7. 《网络工程师考试 考前冲刺预测卷及考点解析》复习重点
  8. python dll 调用 方法未找到_大牛经验分享之谈:Python调用.NET库的方法步骤(建议收藏)...
  9. MySQL数据库(7)_MySQL 数据备份与还原
  10. Asp.net MVC 示例项目Suteki.Shop分析之---IOC(控制反转)
  11. [luoguP1373] 小a和uim之大逃离(DP)
  12. 用Markdown记笔记后转换成html
  13. File is included in 4 contexts
  14. RFID-射频识别技术
  15. EAS BOS 介绍
  16. 汉文SEO大牛来分析灰色案例的百度优化
  17. 利用canvas制作水印(兼容移动端哦)
  18. JetBrain Rider使用技巧(持续更新)
  19. win10下的linux占用大小,详解Win10系统上使用Linux之前要知道的几件事
  20. python、matplotlib画箱体图检验异常值

热门文章

  1. spyder pyecharts不显示_飞利浦292E2E评测丨宽屏显示器中的多面手
  2. 泛函分析 06.01 线性算子的谱理论 - 谱集和正则点集
  3. PowerPC技术与市场杂谈
  4. 试用钉钉内网映射工具
  5. 时间管理PPT课件该怎么做?
  6. php 开发 oa 框架,基于ThinkPHP框架开发的全功能OA办公管理系统PHP源码
  7. 联想V470C 禁用触摸板
  8. 那个软件测试cpu温度准确,什么软件测试cpu温度准确_测试cpu温度准确软件汇总...
  9. 机器人端的图形界面ssh远程显示方案
  10. 写九宫格日记模块设计