跳到主要内容

02-投篮高手

拔河竞赛的核心是通过按键来改变舵机角度,通过两颗按键分别将舵机角度往相方两个方向改变,那么哪一边改变得快,舵机就往对应的一边转。

硬件结构

搭建图纸

投篮高手搭建.pdf

硬件接线

需要注意的是红外避障模块,模块上的蓝色部分带有十字可调旋钮,结构搭建完成后,首先将手指放在篮筐内模拟小球投入,此时将十字旋钮调整至模块的红色指示灯刚刚亮起,拿开手指指示灯熄灭的状态即可。
9灌篮.png



投篮高手基础版

案例实现

  1. 初始化做的一些操作

image.png

危险

非阻塞式延时指的是当程序需要从外部实时同步信息时,又需要固定时间间隔做另一件事情时,若不使用定时器,就需要用上非阻塞式延时方法。而delay是阻塞式的,会让程序完全停在这段时间,对于这个投篮计数又要计时的案例中,显然delay是行不通的

  1. 接在步骤1的程序后,在倒计时30秒未结束前,都会一直循环执行这部分的程序段。
    • 首先是上述提到的非阻塞是延时方式,原理是通过将硬件上电启动直到当前的总运行时间(ms)存为一个变量time,之后在程序中不断获取最新的运行时间并用他们做减法,判断其差大于一个数,而这个数就是你需要指定的间隔时间(单位ms),这里主要用这种延时方法来做倒计时
    • 在倒计时中不断将最新的投篮得分和倒计时显示在屏幕上

image.png

危险

此时你会发现屏幕不断的在闪烁,那是由于默认情况下,每条显示语句都各自进行了1次屏幕刷新,刷新频率太高会导致显示效率下降。往后的案例我们会介绍更好的办法

  1. 使用P1引脚的外部中断来改变投篮得分变量,从而计算得分。(默认该红外传感器是高电平,当近距离检测到物体接收到反射的红外光后,变为低电平,所以采用下降沿的引脚中断)

image.png

  1. 接在步骤2的程序后,程序走到这里说明倒计时结束了,该'吹哨'给一个总分数了

image.png

程序文件

投篮高手—基础版.zip



投篮高手进阶版

进阶版存在一定难度,主要体现在程序比较长,逻辑比较混杂,量力而为

程序文件

投篮高手——进阶版.zip