创建一个使用Python的圈数计时器

创建一个使用Python的圈数计时器

在日常的跑步或慢跑中,我们通常使用计时器来计算我们的时间和圈数。如果您不想购买一个专业计时器,可以使用Python创建自己的圈数计时器。在本文中,我们将介绍如何使用Python和通用计算机控制(GPIO)库创建一个可以在您的计算机上运行的圈数计时器。

准备工作

在我们开始创建计时器之前,我们需要完成以下准备工作:

  • 安装Python
  • 安装GPIO依赖库(此处我们使用RPi.GPIO)
  • 连接按键和LED灯到Raspberry Pi GPIO引脚

如果您的计算机没有GPIO引脚,您可以使用模拟器或外部GPIO扩展板来模拟GPIO输入和输出。

创建计时器

这里我们将使用Python编写一个简单的程序来创建计时器。

首先,我们需要导入需要的模块和库:

import RPi.GPIO as GPIO
import time

接下来,我们需要设置GPIO引脚:

# 使用BCM模式引脚编号(而非物理编号)
GPIO.setmode(GPIO.BCM)

# 设置按键输入引脚
buttonPin = 18
GPIO.setup(buttonPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)

# 设置LED输出引脚
ledPin = 23
GPIO.setup(ledPin, GPIO.OUT)

在这里,我们将按键连接到引脚18,使用GPIO输入模式,同时使用上拉电阻。我们还将LED连接到引脚23,使用GPIO输出模式。

接下来,我们需要在循环中读取按键输入并控制LED状态:

# 初始化LED状态
ledState = False
GPIO.output(ledPin, ledState)

# 初始化计时器和圈数
startTime = time.time()
lapCount = 0

# 循环读取按键输入
while True:
    # 读取按键输入
    buttonState = GPIO.input(buttonPin)

    if not buttonState:
        # 增加圈数
        lapCount += 1

        # 切换LED状态
        ledState = not ledState
        GPIO.output(ledPin, ledState)

        # 输出圈数信息
        lapTime = time.time() - startTime
        print('Lap {}: {}'.format(lapCount, lapTime))

        # 等待按键释放
        while not GPIO.input(buttonPin):
            time.sleep(0.01)

    # 等待一段时间,以避免过多CPU占用
    time.sleep(0.01)

在这里,我们使用了一个while循环来持续读取按键输入。每当按键被按下时,我们增加圈数并切换LED的状态。我们还计算该圈的时间并输出到控制台。在等待按键释放之前,我们使用时间延迟来避免过多的CPU占用。

为了退出程序,您可以使用Ctrl+C键来强制停止。

整个程序完整代码

import RPi.GPIO as GPIO
import time

# 使用BCM模式引脚编号(而非物理编号)
GPIO.setmode(GPIO.BCM)

# 设置按键输入引脚
buttonPin = 18
GPIO.setup(buttonPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)

# 设置LED输出引脚
ledPin = 23
GPIO.setup(ledPin, GPIO.OUT)

# 初始化LED状态
ledState = False
GPIO.output(ledPin, ledState)

# 初始化计时器和圈数
startTime = time.time()
lapCount = 0

# 循环读取按键输入
while True:
    # 读取按键输入
    buttonState = GPIO.input(buttonPin)

    if not buttonState:
        # 增加圈数
        lapCount += 1

        # 切换LED状态
        ledState = not ledState
        GPIO.output(ledPin, ledState)

        # 输出圈数信息
        lapTime = time.time() - startTime
        print('Lap {}: {}'.format(lapCount, lapTime))

        # 等待按键释放
        while not GPIO.input(buttonPin):
            time.sleep(0.01)

    # 等待一段时间,以避免过多CPU占用
    time.sleep(0.01)

# 清理GPIO资源
GPIO.cleanup()

总结

在本文中,我们介绍了如何使用Python和GPIO库创建一个简单的圈数计时器。我们可以轻松地将代码修改为满足特定需求的计时器,如添加计时器重置和计时器结束功能,以及将时间保存到文件中等等。若您有兴趣,可以尝试拓展这个程序并自行实现各种计时器功能!

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程