基于STEP pico设计反应测试器
利用STEP Pico设计一个反应测试器,用来测试使用者从看到灯泡亮起到按下按键的时间
标签
嵌入式
显示
2023寒假在家练
STEP Pico
ygd
更新2023-03-30
北京理工大学
325

基于STEP Pico的反应测试器的总结报告

  • 项目介绍

1.1具体要求:随机点亮板上的一个LED,按下板上的一个按键,在显示屏上显示出从灯亮到按键之间的时间,这是心理学上的一个重要实验

1.2实现方式:通过软件产生随机数,程序启动以后在随机数控制的时间下点亮板上的LED,被测试者按下按键以后,处理器计算从点亮灯到接收到按键之间的时间差,并将时间差通过USB显示在PC上,也可以将OLED用起来,在OLED上显示时间信息。

  • 设计思路

主要通过树莓派Pico核心模块与树莓派Pico扩展板上的oled显示屏、两个按键以及12个led彩色小灯来实现。具体的设计思路是,当使用者按下按键一时,系统启动,并通过oled屏向使用者给出提示,随后在2-4秒的时间内,12个小灯的其中一个会随机亮起,此时使用者需要作出反应,并按下按键二,系统会记录从小灯亮起到按下按键之间的时间,并最终显示到oled屏幕上面,完成反应测试。

  • 逻辑框图FurJu7aUC5tsRZpCMqp1X5o3EZQu
  • 硬件介绍

该项目用到的硬件包括树莓派Pico扩展板 x1,硬禾版本树莓派Pico核心模块 - STEP Pico x1,Type-C 数据线 x1。STEP Pico是一款低成本,高性能的微控制器开发板,具有灵活数字接口(完全兼容Raspberry Pi Pico)。硬件上采用了Raspberry Pi官方自主研发的RP微控制器芯片,搭载了ARM Cortex M0+双核处理器,高达133MHz的运行频率,内置了264KB SRAM和2MB闪存,还板载有多达26个多功能的GPIO引脚。其中板卡硬件包括2个按键输入,四个单色LED,12个WS2812B RGB三色灯,一个姿态传感器,一个128*64的OLED显示屏,一个蜂鸣器,一个可调电位计(用于电压表),一路音频信号输入和8位R-2R电阻网络构成的DAC。在本次项目中主要使用的是OLED显示屏、RGB三色灯以及两个按键输入。

FtHIvN7ovXnbDAEdEIyysYoeJmEO

  • 软件介绍

使用官方推荐的开发软件thonny,该软件页面简洁,基础功能齐全且强大,简单易上手,搭配上硬禾学堂官方的教学视频,让我这样的micropython初学者也能快速上手。

编程所使用的语言是MicroPython。MicroPython是Python3编程语言的一个完整软件实现,用C语言编写,被优化于运行在微控制器之上。MicroPython是运行在微控制器硬件之上的完全的Python编译器和运行时系统。提供给用户一个交互式提示符(REPL)来立即执行所支持的命令。除了包括选定的核心Python库,MicroPython还包括了给予编程者访问低层硬件的模块。除了实现一系列核心Python库之外,MicroPython还包括用于访问低级硬件的“机器”等模块。

  • 实现功能及图片展示

6.1通过OLED屏幕提示使用者按下k1开始测试

FrGwJRZCdwVf1hotXBRin5OYhO-0

6.2通过OLED屏与小灯提醒使用者做好准备

Fm-CvCsh0gBh_X9lt6O3HWurvjbL

6.3经过一段随机时间(二到四秒)后,在12个RGB小灯中随机亮起一个并通过OLED屏幕提醒使用者按下k2作出反应

FjJTsRywb5yvhy0xR0WwFnwA3UxW

6.4计算得出使用者的反应时间并显示到OLED屏幕上,并将数据返还到电脑端。

Fh7fzco9SEuYNuzyiKFCySCdky-c

  • 主要代码片段及说明

7.1引入项目资源中的开源代码所提供的函数

FinbfWP1EQNyF_w2Az1qcj4UAvJw

7.2将变量初始化

FjePVBDRMgNHszLfXD2z_SH9mz6l

7.3通过坐标控制将文本输出在oled屏幕上的固定位置

Fp_YD26efVP4Jc6yL-zERuJw5b7L

7.4定义几个接下来会用到的控制灯泡颜色的函数

FnBcTHNh0fuVzZENhJAdTxkeFp5F

7.5判断k1按键的值来控制接下来的程序

FlU2HLEP28cFn4BoO08lP7Ov8wJL

7.6利用random库获取随机数来控制灯亮的时间以及哪个灯亮

FsvZ_NNNR5CVT3_PX7v1pkcEFGNu

7.7将灯亮的时间设定为起始时间

FqzwaNLQzh6ATkeNxdesuCHsKr7Z

7.8判断k2键的值,并将按下k2键的时间定为结束时间

FoD8K0JwswffUJ1tRKulupvLMHRk

7.9利用结束时间减去起始时间从而得到反应时间,并将这一时间显示到oled屏幕上

Fl4m0YQPYU4wTVAK8wR89udVoMZP

  • 难题及解决方法

  在刚开始接触micro python时,由于对其的不熟悉,导致起步不是十分顺利。但是在直播课程以及交流群中其他同学的帮助下,我很快地熟悉并熟练地开始了编程。最后在开源代码库的帮助下,我最终顺利地完成了项目设计。

  • 未来的计划

首先十分感谢硬禾学堂提供的这次宝贵机会,能够让我有机会低成本得接触并学习嵌入式系统的项目开发。硬禾学堂不仅免费地为我们提供开发板等硬件设备,并且无偿地提供相关学习课程以及直播来帮助我们学习,甚至还建立微信交流群来安排老师指导帮助我们。硬禾学堂所作的这一切都为我的学习提供了极大的便利,为我打开了嵌入式系统的大门。虽然我此次的项目比较简单,完成起来也相对顺利,但是我依然从中学到了许多。我要好好总结这次学习经历所带给我的知识与经验,并用于之后的学习生活之中。

 

附件下载
code.py
已更改
团队介绍
袁国栋 北京理工大学
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号