Skip to content
Snippets Groups Projects
Commit 2fbf5e83 authored by SiccoColijn's avatar SiccoColijn
Browse files

Added get_speed() function

parent a03f9c55
No related branches found
No related tags found
No related merge requests found
import RPi.GPIO as GPIO
import time
import math
GPIO.setmode(GPIO.BCM)
print(GPIO.VERSION)
class Encoder:
def __init__(self, name, encoder_pin: int):
global pulse_count
global pulse_count, start_time, time_passed, old_time_passed, old_pulse_count
self.name = name
self.encoder_pin = encoder_pin
pulse_count = 0
start_time = time.time()
time_passed = 0
old_time_passed = 0
old_pulse_count = 0
GPIO.setup(self.encoder_pin, GPIO.IN, GPIO.PUD_DOWN)
def callback_encoder(self, channel):
global pulse_count
global pulse_count, start_time, time_passed
time_passed = time.time() - start_time
pulse_count += 1
def get_pulse_count(self) -> int:
global pulse_count
return pulse_count
def get_average_pulse_speed(self) -> float:
global time_passed, pulse_count
if time_passed != 0:
return pulse_count / time_passed
else:
return 0
def reset_pulse_count(self):
global pulse_count
global pulse_count, time_passed, start_time
pulse_count = 0
time_passed = 0
start_time = time.time()
def get_current_pulse_speed(self) -> float:
global pulse_count, time_passed, old_time_passed, old_pulse_count
print("time " + str(time_passed))
if (time_passed - old_time_passed):
speed = (pulse_count - old_pulse_count) / (time_passed - old_time_passed)
else:
speed = 0
old_pulse_count = pulse_count
old_time_passed = time_passed
return speed
def get_speed(self) -> float:
pulse_per_second = self.get_current_pulse_speed()
return pulse_per_second * (6 * 2 * math.pi) / 40
def init_callback(self):
GPIO.add_event_detect(self.encoder_pin, GPIO.BOTH, callback = self.callback_encoder, bouncetime = 10)
GPIO.add_event_detect(self.encoder_pin, GPIO.BOTH, callback=self.callback_encoder, bouncetime=10)
try:
......@@ -35,6 +66,7 @@ try:
encoder1.init_callback()
while True:
print(encoder1.get_pulse_count())
print(encoder1.get_speed())
time.sleep(1)
except KeyboardInterrupt: # Exit by pressing CTRL + C
GPIO.cleanup()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment