首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重置时间循环中变量的计数。

重置时间循环中变量的计数。
EN

Stack Overflow用户
提问于 2022-04-12 14:04:11
回答 1查看 151关注 0票数 0
代码语言:javascript
复制
from microbit import *
from ssd1306 import initialize, clear_oled
from ssd1306_stamp import draw_stamp
from ssd1306_img import create_stamp
from ssd1306_text import add_text
import utime as time
window = []  
threshold = 550  # limit
count = 0 
sample = 0 
beat = False  
start = False
good = create_stamp(Image.HAPPY)
bad = create_stamp(Image.SAD)
heart = create_stamp(Image.HEART)
values = []  
def mean(datalist):
    sum = 0 
    for i in datalist:  
        sum += i 
    if len(datalist) > 0:  
        return sum/len(datalist)  
    else:
        return None 
while True:
    if button_a.was_pressed():
        while True:
            signal = pin1.read_analog()   
            window.append(signal)  
            avg = round(mean(window)) 
            values.append(avg) 
            if len(window) == 11:    
                window.pop(0)  
            if beat is False and avg >= threshold+10:
                beat = True 
                count += 1  
                display.show(Image.HEART, wait=False) 
                if count == 1:  
                    t1 = time.ticks_ms() 
                if count == 11:  
                    t2 = time.ticks_ms()  
                    T = t2 - t1     
                    bpm = round(600*1000/(T)) 
                    display.scroll(str(bpm)) 
                    initialize()
                    clear_oled()
                    add_text(0, 0, "Heart rate :")
                    add_text(0, 3, str(bpm) + " bpm")
                    if 60 <= bpm <= 100:
                        draw_stamp(38, 24, good, 1)
                    else :
                        draw_stamp(38, 24, bad, 1)
                    count = 0  
                    sleep(2000)
                if button_b.was_pressed():
                    break
                    count = 0
            elif beat is True and avg <= threshold-10:
                beat = False 
                display.clear()  
                sample += 1  
            if sample == 250:  
                threshold = mean(values)
                values = []  
                sample = 0  
            sleep(20)  
        sleep(20)  

这是连接到微位的代码,它的功能是关于心率传感器,当感知心脏的10次跳动时,它将出现每分钟的平均跳动。

我正在考虑添加一个函数,如果按下按钮b,循环将暂停,然后按a按钮重新启动。我尝试在循环中添加一个中断函数,当我单击b按钮时,它工作了,它暂停了循环,但是,拍子的计数不会重置,虽然我中断了循环,但节拍之间的时间也会被记录下来。

有什么办法可以打破循环和重置计数吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-12 14:08:42

你应该在打开前重新设置计数器。在您当前的代码中,计数的行没有执行,因为它在到达它之前就出现了。

代码语言:javascript
复制
if button_b.was_pressed():
    count = 0
    break
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71844134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档