Как выполнить итерацию метода класса? - PullRequest
0 голосов
/ 01 августа 2020

Ниже приведен скрипт для расчета числа нажатий кнопок в минуту - в качестве пробного запуска для реализации датчика Холла для измерения оборотов двигателя. Это действительно работает удовлетворительным образом. Однако я хотел бы реализовать его в режиме OOP с классом и методами. Насколько я понимаю, классы скорее являются «аллергией c» на цикл с их методами, возвращая только последнее значение. Мы будем очень благодарны за любые предложения.

import keyboard as kb
from time import time

#4 clicks equal 1 rev(olution)/the sampling duration is 5 revs

while (1):
    revs = 0
    t_start = time()
    while revs < 5:
        clicks = 0
        while clicks < 4:
            kb.wait('k')
            clicks += 1
        revs += 1
    t_stop = time()
    dt = t_stop - t_start
    rpm = revs * 60 / dt
    print(rpm)
 

1 Ответ

0 голосов
/ 01 августа 2020

Если я правильно понимаю, что вы хотите сделать, то приведенный ниже код должен вам помочь. Я определил класс двигателя и создал метод внутри класса, который вычисляет число оборотов в минуту и ​​обновляет свойство объекта в минуту.

class Motor:
     rpm = 0.0

     def calculate_rpm(self):
         revs = 0
         t_start = time()
         while revs < 5:
             clicks = 0
             while clicks < 4:
                 kb.wait('k')
                 clicks += 1
             revs += 1
         t_stop = time()
         dt = t_stop - t_start
         self.rpm = revs * 60 / dt

Отсюда одна строка motor.calculate_rpm() может быть помещена внутри вашего while l oop и будет обновлять значение свойства rpm объекта двигателя на каждой итерации while l oop. Отсюда вы можете делать все, что захотите, с этими данными, доступными по адресу motor.rpm.

Не забудьте инициализировать объект двигателя с помощью motor = Motor()

Это лучшее, что я мог сделать с предоставленная вами информация.

...