id = 'graycode'
name = 'Gray code'
longname = 'Gray code and rotary encoder'
- desc = 'Accumulate rotary encoder increments, provide timing statistics.'
+ desc = 'Accumulate rotary encoder increments, provide statistics.'
license = 'gplv2+'
inputs = ['logic']
- outputs = ['graycode']
+ outputs = []
+ tags = ['Encoding']
optional_channels = tuple(
{'id': 'd{}'.format(i), 'name': 'D{}'.format(i), 'desc': 'Data line {}'.format(i)}
for i in range(MAX_CHANNELS)
('phase', 'Phase'),
('increment', 'Increment'),
('count', 'Count'),
- ('turns', 'Turns'),
+ ('turn', 'Turn'),
('interval', 'Interval'),
('average', 'Average'),
('rpm', 'Rate'),
)
- annotation_rows = tuple((u, v, (i,)) for i, (u, v) in enumerate(annotations))
+ annotation_rows = tuple((u + 's', v + 's', (i,)) for i, (u, v) in enumerate(annotations))
def __init__(self):
+ self.reset()
+
+ def reset(self):
self.num_channels = 0
self.samplerate = None
self.last_n = deque()
if self.options['edges']:
self.turns.set(self.samplenum, self.count.get() // self.options['edges'])
- if self.samplerate is not None:
+ if self.samplerate:
period = (curtime - prevtime) / self.samplerate
freq = abs(phasedelta_raw) / period