SequentMicrosystems_API/scripts/speed_reader.py

48 lines
1.5 KiB
Python

from src.variables.service import get_variable, set_variable
from gpiozero import Button
import datetime
pulses_per_rotation = 4
reader = Button(4, pull_up=False, bounce_time=0.0005)
set_variable("speed_reader_last_impulse_time", datetime.datetime.now(), False)
set_variable("actual_rpm_unfiltered", 0, False)
set_variable("impulses", 0, False)
set_variable("last_calc_time", datetime.datetime.now(), False)
def event():
actual = datetime.datetime.now()
last = get_variable("speed_reader_last_impulse_time")
difference = (actual - last).total_seconds()
set_variable("speed_reader_last_impulse_time", actual, False)
rpm = (60 / difference) / pulses_per_rotation
actual_rpm = (float(get_variable("actual_rpm_unfiltered")) + rpm) / 2
set_variable("actual_rpm_unfiltered", rpm, False)
set_variable("actual_rpm", round(actual_rpm, 1), False)
print(round(actual_rpm, 1))
def new_event():
set_variable("impulses", int(get_variable("impulses")) + 1, False)
def speed_calc():
now = datetime.datetime.now()
last_time = get_variable("last_calc_time")
set_variable("last_calc_time", datetime.datetime.now(), False)
impulses = int(get_variable("impulses"))
set_variable("impulses", 0, False)
time_delta = (now - last_time).total_seconds()
actual_rpm = (impulses/pulses_per_rotation) * (60/time_delta)
set_variable("actual_rpm", round(actual_rpm, 1), False)
print(actual_rpm)
reader.when_pressed = new_event